87 lines
2.1 KiB
C#
87 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data.Entity;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using EnVisage.Models;
|
|
|
|
namespace EnVisage.Code.BLL
|
|
{
|
|
public class WorkWeekManager : ManagerBase<WorkWeek, WorkWeekModel>
|
|
{
|
|
public WorkWeekManager(EnVisageEntities dbContext)
|
|
: base(dbContext)
|
|
{
|
|
}
|
|
protected override WorkWeek InitInstance()
|
|
{
|
|
return new WorkWeek { Id = Guid.NewGuid() };
|
|
}
|
|
|
|
protected override WorkWeek RetrieveReadOnlyById(Guid key)
|
|
{
|
|
return DataTable.AsNoTracking().FirstOrDefault(t => t.Id == key);
|
|
}
|
|
|
|
public override DbSet<WorkWeek> DataTable
|
|
{
|
|
get
|
|
{
|
|
return DbContext.WorkWeeks;
|
|
}
|
|
}
|
|
|
|
public override WorkWeek Save(WorkWeekModel model)
|
|
{
|
|
WorkWeek oldModel = null;
|
|
|
|
if (model.Id != Guid.Empty)
|
|
oldModel = this.Load(model.Id, false);
|
|
|
|
var workWeek = base.Save(model);
|
|
|
|
if (model.IsDefault && ((oldModel == null) || !oldModel.IsDefault))
|
|
this.Activate(workWeek);
|
|
|
|
return workWeek;
|
|
}
|
|
|
|
public void Activate(Guid Id)
|
|
{
|
|
foreach (var ww in DataTable)
|
|
{
|
|
if (ww.Id == Id)
|
|
{
|
|
ww.IsDefault = true;
|
|
DbContext.Entry(ww).State = EntityState.Modified;
|
|
}
|
|
else if (ww.IsDefault)
|
|
{
|
|
ww.IsDefault = false;
|
|
DbContext.Entry(ww).State = EntityState.Modified;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Activate(WorkWeek ww)
|
|
{
|
|
if ((ww.Id == Guid.Empty) || ww.IsDefault)
|
|
return;
|
|
|
|
var currentActiveWorkWeeks = DataTable.Where(x => x.IsDefault && !x.Id.Equals(ww.Id)).ToList();
|
|
currentActiveWorkWeeks.ForEach(x =>
|
|
{
|
|
x.IsDefault = false;
|
|
DbContext.Entry(x).State = EntityState.Modified;
|
|
});
|
|
|
|
ww.IsDefault = true;
|
|
}
|
|
|
|
public WorkWeek LoadDefault()
|
|
{
|
|
return DataTable.AsNoTracking().FirstOrDefault(t => t.IsDefault == true);
|
|
}
|
|
|
|
}
|
|
} |