EnVisageOnline/Main/Source/EnVisage/Code/BLL/NonProjectTimeCategoryManag...

55 lines
1.9 KiB
C#

using System;
using System.Data.Entity;
using System.Linq;
using EnVisage.Models;
namespace EnVisage.Code.BLL
{
public class NonProjectTimeCategoryManager : ManagerBase<NonProjectTimeCategory, NonProjectTimeCategoryEditModel>
{
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<NonProjectTimeCategory> DataTable
{
get
{
return DbContext.NonProjectTimeCategories;
}
}
public void Delete(NonProjectTimeCategory category)
{
DbContext.NonProjectTimeCategories.Remove(category);
DbContext.SaveChanges();
}
}
}