95 lines
3.0 KiB
C#
95 lines
3.0 KiB
C#
using BankContracts.BindingModels;
|
|
using BankContracts.ViewModels;
|
|
using BankDataModels.Models;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace BankDataBaseImplement.Models
|
|
{
|
|
public class Additions : IAdditionsModel
|
|
{
|
|
[Required]
|
|
public string AdditionsName { get; set; } = string.Empty;
|
|
|
|
[Required]
|
|
public double AdditionsPrice { get; set; }
|
|
|
|
public int ClercId { get; private set; }
|
|
|
|
public int Id { get; private set; }
|
|
|
|
public virtual Clerc Clerc { get; set; }
|
|
|
|
[ForeignKey("AdditionId")]
|
|
public virtual List<Room> Rooms { get; set; }
|
|
|
|
[ForeignKey("AdditionId")]
|
|
public virtual List<AdditionsMember> Members { get; set; }
|
|
|
|
private Dictionary<int, IMemberModel> _AdditionsMembers = null;
|
|
|
|
public Dictionary<int, IMemberModel> AdditionsMembers
|
|
{
|
|
get
|
|
{
|
|
if (_AdditionsMembers == null)
|
|
{
|
|
_AdditionsMembers = Members.ToDictionary(recPC => recPC.MemberId, recPC => (recPC.Member as IMemberModel));
|
|
}
|
|
return _AdditionsMembers;
|
|
}
|
|
}
|
|
public static Additions Create(BankDataBase context, AdditionsBindingModel model)
|
|
{
|
|
return new Additions()
|
|
{
|
|
Id = model.Id,
|
|
AdditionsName = model.AdditionsName,
|
|
AdditionsPrice = model.AdditionsPrice,
|
|
Members = model.AdditionsMembers.Select(x => new AdditionsMember
|
|
{
|
|
Member = context.Members.First(y => y.Id == x.Key),
|
|
}).ToList()
|
|
};
|
|
}
|
|
|
|
public void Update(AdditionsBindingModel model)
|
|
{
|
|
AdditionsName = model.AdditionsName;
|
|
AdditionsPrice = model.AdditionsPrice;
|
|
}
|
|
|
|
public AdditionsViewModel GetViewModel => new()
|
|
{
|
|
Id = Id,
|
|
AdditionsName = AdditionsName,
|
|
AdditionsPrice = AdditionsPrice,
|
|
AdditionsMembers = AdditionsMembers
|
|
};
|
|
|
|
public void UpdateMembers(BankDataBase context, AdditionsBindingModel model)
|
|
{
|
|
var AdditionMembers = context.AdditionsMembers.Where(rec => rec.AdditionsId == model.Id).ToList();
|
|
|
|
if (AdditionMembers != null)
|
|
{
|
|
context.AdditionsMembers.RemoveRange(AdditionMembers.Where(rec => !model.AdditionsMembers.ContainsKey(rec.MemberId)));
|
|
context.SaveChanges();
|
|
}
|
|
|
|
var Addition = context.Additions.First(x => x.Id == Id);
|
|
|
|
foreach (var cm in model.AdditionsMembers)
|
|
{
|
|
context.AdditionsMembers.Add(new AdditionsMember
|
|
{
|
|
Additions = Addition,
|
|
Member = context.Members.First(x => x.Id == cm.Key)
|
|
});
|
|
context.SaveChanges();
|
|
}
|
|
_AdditionsMembers = null;
|
|
}
|
|
}
|
|
}
|