using System; using eShopLegacyWebForms.Models; using System.Collections.Generic; using System.Data.Entity; using System.Data.SqlClient; using System.Linq; using eShopLegacyWebForms.ViewModel; namespace eShopLegacyWebForms.Services { public class CatalogService : ICatalogService { private CatalogDBContext db; private CatalogItemHiLoGenerator indexGenerator; public CatalogService(CatalogDBContext db, CatalogItemHiLoGenerator indexGenerator) { this.db = db; this.indexGenerator = indexGenerator; } public PaginatedItemsViewModel GetCatalogItemsPaginated(int pageSize, int pageIndex) { var totalItems = db.CatalogItems.LongCount(); var itemsOnPage = db.CatalogItems .Include(c => c.CatalogBrand) .Include(c => c.CatalogType) .OrderBy(c => c.Id) .Skip(pageSize * pageIndex) .Take(pageSize) .ToList(); return new PaginatedItemsViewModel( pageIndex, pageSize, totalItems, itemsOnPage); } public CatalogItem FindCatalogItem(int id) { return db.CatalogItems.Include(c => c.CatalogBrand).Include(c => c.CatalogType).FirstOrDefault(ci => ci.Id == id); } public IEnumerable GetCatalogTypes() { return db.CatalogTypes.ToList(); } public IEnumerable GetCatalogBrands() { return db.CatalogBrands.ToList(); } public void CreateCatalogItem(CatalogItem catalogItem) { catalogItem.Id = indexGenerator.GetNextSequenceValue(db); db.CatalogItems.Add(catalogItem); db.SaveChanges(); } public void UpdateCatalogItem(CatalogItem catalogItem) { db.Entry(catalogItem).State = EntityState.Modified; db.SaveChanges(); } public void RemoveCatalogItem(CatalogItem catalogItem) { db.CatalogItems.Remove(catalogItem); db.SaveChanges(); } public void Dispose() { db.Dispose(); } } }