55 lines
1.9 KiB
C#
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();
|
|
}
|
|
}
|
|
} |