using System; using System.Data.Entity; using System.Linq; using EnVisage.Models; namespace EnVisage.Code.BLL { public class NonProjectTimeCategoryManager : ManagerBase { public NonProjectTimeCategoryManager(EnVisageEntities dbContext) : base(dbContext) { } protected override NonProjectTimeCategory InitInstance() { return new NonProjectTimeCategory { Id = Guid.NewGuid() }; } protected override NonProjectTimeCategory RetrieveReadOnlyById(Guid key) { return DataTable.AsNoTracking().FirstOrDefault(t => t.Id == key); } public NonProjectTimeCategory RetrieveReadOnlyByName(string name) { return DataTable.AsNoTracking().FirstOrDefault(t => t.Name == name); } public void Reallocate(NonProjectTimeCategoryReallocateModel model) { var categories = DbContext.NonProjectTimes.Where(x => x.NonProjectTimeCategoryId == model.Id).AsNoTracking(); foreach (var category in categories) { category.NonProjectTimeCategoryId = model.CategoryId; DbContext.Entry(category).State = EntityState.Modified; } var categoryToDelete = DbContext.NonProjectTimeCategories.FirstOrDefault(x => x.Id == model.Id); DbContext.Entry(categoryToDelete).State = EntityState.Deleted; DbContext.SaveChanges(); } public override DbSet DataTable { get { return DbContext.NonProjectTimeCategories; } } public void Delete(NonProjectTimeCategory category) { DbContext.NonProjectTimeCategories.Remove(category); DbContext.SaveChanges(); } } }