61 lines
1.8 KiB
C#
61 lines
1.8 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 StrategicGoalManager : ManagerBase<StrategicGoal, StrategicGoalModel>
|
|
{
|
|
public StrategicGoalManager(EnVisageEntities dbContext)
|
|
: base(dbContext)
|
|
{
|
|
}
|
|
protected override StrategicGoal InitInstance()
|
|
{
|
|
return new StrategicGoal { Id = Guid.NewGuid() };
|
|
}
|
|
|
|
protected override StrategicGoal RetrieveReadOnlyById(Guid key)
|
|
{
|
|
return DataTable.AsNoTracking().FirstOrDefault(t => t.Id == key);
|
|
}
|
|
|
|
public override DbSet<StrategicGoal> DataTable
|
|
{
|
|
get
|
|
{
|
|
return DbContext.StrategicGoals;
|
|
}
|
|
}
|
|
|
|
public override StrategicGoal Save(StrategicGoalModel model)
|
|
{
|
|
var goal = base.Save(model);
|
|
if (model.Id == Guid.Empty)
|
|
goal.Id = Guid.NewGuid();
|
|
|
|
var oldGoal2Companies = DbContext.StrategicGoal2Company.Where(x => x.StrategicGoalId == goal.Id).ToList();
|
|
var oldGoalCompaniesIds = oldGoal2Companies.Select(x => x.CompanyId);
|
|
|
|
foreach (var t in oldGoal2Companies)
|
|
{
|
|
if (!model.CompanyId.Contains(t.CompanyId))
|
|
DbContext.StrategicGoal2Company.Remove(t);
|
|
}
|
|
foreach (var companyId in model.CompanyId.Except(oldGoalCompaniesIds))
|
|
{
|
|
DbContext.StrategicGoal2Company.Add(new StrategicGoal2Company()
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
CompanyId = companyId,
|
|
StrategicGoalId = goal.Id
|
|
});
|
|
}
|
|
|
|
return goal;
|
|
}
|
|
}
|
|
} |