Merge branch 'Stage1' of https://git.is.ulstu.ru/a.puchkina/PIIbd-22_Fedorenko_Puchkina_CorseWork into Stage1
This commit is contained in:
commit
99b8127bf8
@ -4,8 +4,6 @@
|
|||||||
{
|
{
|
||||||
public int? Id { get; set; }
|
public int? Id { get; set; }
|
||||||
public DateTime? HearingDate { get; set; }
|
public DateTime? HearingDate { get; set; }
|
||||||
public DateTime? DateFrom { get; set; }
|
|
||||||
public DateTime? DateTo { get; set; }
|
|
||||||
public int? GuarantorId { get; set; }
|
public int? GuarantorId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,17 +21,17 @@ namespace LawFirmDatabaseImplement.Implements
|
|||||||
}
|
}
|
||||||
public List<ConsultationViewModel> GetFilteredList(ConsultationSearchModel model)
|
public List<ConsultationViewModel> GetFilteredList(ConsultationSearchModel model)
|
||||||
{
|
{
|
||||||
if (!model.Id.HasValue && !model.Cost.HasValue && !model.ConsultationDate.HasValue
|
if (!model.Id.HasValue && !model.GuarantorId.HasValue)
|
||||||
&& !model.CaseId.HasValue && !model.GuarantorId.HasValue)
|
|
||||||
{
|
{
|
||||||
return new();
|
return new();
|
||||||
}
|
}
|
||||||
if (!model.DateFrom.HasValue || !model.DateTo.HasValue)
|
if (!model.GuarantorId.HasValue)
|
||||||
{
|
{
|
||||||
using var context = new LawFirmDatabase();
|
using var context = new LawFirmDatabase();
|
||||||
return context.Consultations
|
return context.Consultations
|
||||||
.Include(x => x.Lawyers).ThenInclude(x => x.Lawyer)
|
.Include(x => x.Lawyers)
|
||||||
.Where(x => x.Id == model.Id)
|
.ThenInclude(x => x.Lawyer)
|
||||||
|
.Where(x => x.GuarantorId == model.GuarantorId)
|
||||||
.Select(x => x.GetViewModel)
|
.Select(x => x.GetViewModel)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
@ -39,23 +39,25 @@ namespace LawFirmDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
using var context = new LawFirmDatabase();
|
using var context = new LawFirmDatabase();
|
||||||
return context.Consultations
|
return context.Consultations
|
||||||
.Include(x => x.Lawyers).ThenInclude(x => x.Lawyer)
|
.Include(x => x.Lawyers)
|
||||||
.Where(x => x.ConsultationDate >= model.DateFrom && x.ConsultationDate <= model.DateTo)
|
.ThenInclude(x => x.Lawyer)
|
||||||
|
.Where(x => x.Id == model.Id)
|
||||||
.Select(x => x.GetViewModel)
|
.Select(x => x.GetViewModel)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public ConsultationViewModel? GetElement(ConsultationSearchModel model)
|
public ConsultationViewModel? GetElement(ConsultationSearchModel model)
|
||||||
{
|
{
|
||||||
if (!model.Id.HasValue && !model.ConsultationDate.HasValue && !model.CaseId.HasValue)
|
if (!model.Id.HasValue && !model.GuarantorId.HasValue)
|
||||||
{
|
{
|
||||||
return new();
|
return null;
|
||||||
}
|
}
|
||||||
using var context = new LawFirmDatabase();
|
using var context = new LawFirmDatabase();
|
||||||
return context.Consultations.Include(x => x.Lawyers).ThenInclude(x => x.Lawyer)
|
return context.Consultations.
|
||||||
.FirstOrDefault(x => (model.CaseId.HasValue && x.Case == model.CaseId)
|
Include(x => x.Lawyers).
|
||||||
|| (model.Id.HasValue && x.Id == model.Id))
|
ThenInclude(x => x.Lawyer)
|
||||||
?.GetViewModel;
|
.FirstOrDefault(x => (model.GuarantorId.HasValue && x.GuarantorId == model.GuarantorId)
|
||||||
|
|| (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
|
||||||
}
|
}
|
||||||
public ConsultationViewModel? Insert(ConsultationBindingModel model)
|
public ConsultationViewModel? Insert(ConsultationBindingModel model)
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,98 @@
|
|||||||
|
using LawFirmContracts.BindingModels;
|
||||||
|
using LawFirmContracts.SearchModels;
|
||||||
|
using LawFirmContracts.StoragesContracts;
|
||||||
|
using LawFirmContracts.ViewModels;
|
||||||
|
using LawFirmDatabaseImplement.Models;
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Implements
|
||||||
|
{
|
||||||
|
public class GuarantorStorage : IGuarantorStorage
|
||||||
|
{
|
||||||
|
public List<GuarantorViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Guarantors
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<GuarantorViewModel> GetFilteredList(GuarantorSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.Email) && !model.Id.HasValue && string.IsNullOrEmpty(model.FIO)
|
||||||
|
&& string.IsNullOrEmpty(model.Password))
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(model.Email))
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Guarantors
|
||||||
|
.Where(x => x.Email.Equals(model.Email))
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Guarantors
|
||||||
|
.Where(x => x.Id == model.Id)
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GuarantorViewModel? GetElement(GuarantorSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.Email) && !model.Id.HasValue && string.IsNullOrEmpty(model.FIO)
|
||||||
|
&& string.IsNullOrEmpty(model.Password))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
|
||||||
|
return context.Guarantors
|
||||||
|
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Email)
|
||||||
|
&& x.Email == model.Email) || (model.Id.HasValue && x.Id == model.Id))
|
||||||
|
?.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GuarantorViewModel? Insert(GuarantorBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
var newGuarantor = Guarantor.Create(model);
|
||||||
|
if (newGuarantor == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
context.Guarantors.Add(newGuarantor);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newGuarantor.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GuarantorViewModel? Update(GuarantorBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
var executor = context.Guarantors.FirstOrDefault(x => x.Id == model.Id);
|
||||||
|
if (executor == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
executor.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
return executor.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GuarantorViewModel? Delete(GuarantorBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
var element = context.Guarantors.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
context.Guarantors.Remove(element);
|
||||||
|
context.SaveChanges();
|
||||||
|
return element.GetViewModel;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
116
LawFim/LawFirmDatabaseImplement/Implements/HearingStorage.cs
Normal file
116
LawFim/LawFirmDatabaseImplement/Implements/HearingStorage.cs
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
using LawFirmContracts.BindingModels;
|
||||||
|
using LawFirmContracts.SearchModels;
|
||||||
|
using LawFirmContracts.StoragesContracts;
|
||||||
|
using LawFirmContracts.ViewModels;
|
||||||
|
using LawFirmDatabaseImplement.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Implements
|
||||||
|
{
|
||||||
|
public class HearingStorage : IHearingStorage
|
||||||
|
{
|
||||||
|
public List<HearingViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Hearings
|
||||||
|
.Include(x => x.Lawyers)
|
||||||
|
.ThenInclude(x => x.Lawyer)
|
||||||
|
.ToList()
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
public List<HearingViewModel> GetFilteredList(HearingSearchModel model)
|
||||||
|
{
|
||||||
|
if (!model.Id.HasValue && !model.GuarantorId.HasValue)
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!model.GuarantorId.HasValue)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Hearings
|
||||||
|
.Include(x => x.Lawyers)
|
||||||
|
.ThenInclude(x => x.Lawyer)
|
||||||
|
.Where(x => x.GuarantorId == model.GuarantorId)
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Hearings
|
||||||
|
.Include(x => x.Lawyers)
|
||||||
|
.ThenInclude(x => x.Lawyer)
|
||||||
|
.Where(x => x.Id == model.Id)
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public HearingViewModel? GetElement(HearingSearchModel model)
|
||||||
|
{
|
||||||
|
if (!model.Id.HasValue && !model.GuarantorId.HasValue)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Hearings
|
||||||
|
.Include(x => x.Lawyers)
|
||||||
|
.ThenInclude(x => x.Lawyer)
|
||||||
|
.FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id || (model.GuarantorId.HasValue
|
||||||
|
&& x.GuarantorId == model.GuarantorId))
|
||||||
|
?.GetViewModel;
|
||||||
|
|
||||||
|
}
|
||||||
|
public HearingViewModel? Insert(HearingBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
var newHearing = Hearing.Create(context, model);
|
||||||
|
if (newHearing == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
context.Hearings.Add(newHearing);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newHearing.GetViewModel;
|
||||||
|
}
|
||||||
|
public HearingViewModel? Update(HearingBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
using var transaction = context.Database.BeginTransaction();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var _case = context.Hearings.FirstOrDefault(rec =>
|
||||||
|
rec.Id == model.Id);
|
||||||
|
if (_case == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
_case.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
_case.UpdateLawyers(context, model);
|
||||||
|
|
||||||
|
transaction.Commit();
|
||||||
|
return _case.GetViewModel;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public HearingViewModel? Delete(HearingBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
var element = context.Hearings
|
||||||
|
.Include(x => x.Lawyers)
|
||||||
|
.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
context.Hearings.Remove(element);
|
||||||
|
context.SaveChanges();
|
||||||
|
return element.GetViewModel;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
110
LawFim/LawFirmDatabaseImplement/Implements/LawyerStorage.cs
Normal file
110
LawFim/LawFirmDatabaseImplement/Implements/LawyerStorage.cs
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
using LawFirmContracts.BindingModels;
|
||||||
|
using LawFirmContracts.SearchModels;
|
||||||
|
using LawFirmContracts.StoragesContracts;
|
||||||
|
using LawFirmContracts.ViewModels;
|
||||||
|
using LawFirmDatabaseImplement.Models;
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Implements
|
||||||
|
{
|
||||||
|
public class LawyerStorage : ILawyerStorage
|
||||||
|
{
|
||||||
|
public List<LawyerViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Lawyers
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
public List<LawyerViewModel> GetFilteredList(LawyerSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.Email) && !model.Id.HasValue && !model.GuarantorId.HasValue && string.IsNullOrEmpty(model.FIO))
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(model.Email))
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Lawyers
|
||||||
|
.Where(x => x.Email.Equals(model.Email))
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
else if (model.GuarantorId.HasValue)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Lawyers
|
||||||
|
.Where(x => x.GuarantorId.Equals(model.GuarantorId))
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Lawyers
|
||||||
|
.Where(x => x.Id == model.Id)
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public LawyerViewModel? GetElement(LawyerSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.Email) && !model.Id.HasValue && !model.GuarantorId.HasValue
|
||||||
|
&& string.IsNullOrEmpty(model.FIO))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.Lawyers
|
||||||
|
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id) || (model.GuarantorId.HasValue && x.GuarantorId == model.GuarantorId))
|
||||||
|
?.GetViewModel;
|
||||||
|
}
|
||||||
|
public LawyerViewModel? Insert(LawyerBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
var newLawyer = Lawyer.Create(model);
|
||||||
|
if (newLawyer == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
context.Lawyers.Add(newLawyer);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newLawyer.GetViewModel;
|
||||||
|
}
|
||||||
|
public LawyerViewModel? Update(LawyerBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
var lawyer = context.Lawyers.FirstOrDefault(x => x.Id == model.Id);
|
||||||
|
if (lawyer == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
lawyer.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
return lawyer.GetViewModel;
|
||||||
|
}
|
||||||
|
public LawyerViewModel? Delete(LawyerBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
var element = context.Lawyers.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
context.Lawyers.Remove(element);
|
||||||
|
context.SaveChanges();
|
||||||
|
return element.GetViewModel;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public List<LawyerViewModel> GetLawyerHearingList(HearingSearchModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.HearingLawyers.Where(x => x.HearingId == model.Id).Select(x => x.Lawyer.GetViewModel).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
public List<LawyerViewModel> GetLawyerConsultationList(ConsultationSearchModel model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
return context.ConsultationLawyers.Where(x => x.ConsultationId == model.Id).Select(x => x.Lawyer.GetViewModel).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
116
LawFim/LawFirmDatabaseImplement/Models/Consultation.cs
Normal file
116
LawFim/LawFirmDatabaseImplement/Models/Consultation.cs
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
using LawFimDataModels.Models;
|
||||||
|
using LawFirmContracts.BindingModels;
|
||||||
|
using LawFirmContracts.ViewModels;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class Consultation : IConsultationModel
|
||||||
|
{
|
||||||
|
public int Id { get; private set; }
|
||||||
|
[Required]
|
||||||
|
public double Cost { get; private set; }
|
||||||
|
[Required]
|
||||||
|
public DateTime ConsultationDate { get; private set; }
|
||||||
|
[Required]
|
||||||
|
public int CaseId { get; private set; }
|
||||||
|
public Case Case { get; private set; }
|
||||||
|
public int GuarantorId { get; set; }
|
||||||
|
|
||||||
|
private Dictionary<int, ILawyerModel>? _consultationLawyers = null;
|
||||||
|
[NotMapped]
|
||||||
|
public Dictionary<int, ILawyerModel> ConsultationLawyers
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_consultationLawyers == null)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
_consultationLawyers = Lawyers
|
||||||
|
.ToDictionary(x => x.LawyerId, x => (context.Lawyers
|
||||||
|
.FirstOrDefault(y => y.Id == x.LawyerId) as ILawyerModel));
|
||||||
|
}
|
||||||
|
return _consultationLawyers;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[ForeignKey("ConsultationId")]
|
||||||
|
public virtual List<ConsultationLawyer> Lawyers { get; set; } = new();
|
||||||
|
public static Consultation? Create(LawFirmDatabase context, ConsultationBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var consultations = context.Consultations.Where(x => x.CaseId == model.CaseId).ToList();
|
||||||
|
if (consultations.Count > 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Consultation()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
Cost = model.Cost,
|
||||||
|
ConsultationDate = model.ConsultationDate,
|
||||||
|
CaseId = model.CaseId,
|
||||||
|
Case = context.Cases.First(x => x.Id == model.CaseId),
|
||||||
|
GuarantorId = model.GuarantorId,
|
||||||
|
Lawyers = model.ConsultationLawyers.Select(x => new ConsultationLawyer
|
||||||
|
{
|
||||||
|
Lawyer = context.Lawyers.First(y => y.Id == x.Key)
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public void Update(ConsultationBindingModel? model)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cost = model.Cost;
|
||||||
|
ConsultationDate = model.ConsultationDate;
|
||||||
|
CaseId = model.CaseId;
|
||||||
|
}
|
||||||
|
public ConsultationViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
Cost = Cost,
|
||||||
|
ConsultationDate = ConsultationDate,
|
||||||
|
CaseId = CaseId,
|
||||||
|
GuarantorId = GuarantorId,
|
||||||
|
ConsultationLawyers = ConsultationLawyers
|
||||||
|
};
|
||||||
|
public void UpdateLawyers(LawFirmDatabase context,
|
||||||
|
ConsultationBindingModel model)
|
||||||
|
{
|
||||||
|
var consultationLawyers = context.ConsultationLawyers
|
||||||
|
.Where(rec => rec.ConsultationId == model.Id)
|
||||||
|
.ToList();
|
||||||
|
if (consultationLawyers != null && consultationLawyers.Count > 0)
|
||||||
|
{
|
||||||
|
context.ConsultationLawyers
|
||||||
|
.RemoveRange(consultationLawyers
|
||||||
|
.Where(rec => !model.ConsultationLawyers
|
||||||
|
.ContainsKey(rec.LawyerId)));
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
var _consultation = context.Consultations.First(x => x.Id == Id);
|
||||||
|
foreach (var pc in model.ConsultationLawyers)
|
||||||
|
{
|
||||||
|
if (!ConsultationLawyers.ContainsKey(pc.Key))
|
||||||
|
{
|
||||||
|
context.ConsultationLawyers.Add(new ConsultationLawyer
|
||||||
|
{
|
||||||
|
Consultation = _consultation,
|
||||||
|
Lawyer = context.Lawyers.First(x => x.Id == pc.Key),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
_consultationLawyers = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
LawFim/LawFirmDatabaseImplement/Models/ConsultationLawyer.cs
Normal file
15
LawFim/LawFirmDatabaseImplement/Models/ConsultationLawyer.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class ConsultationLawyer
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
[Required]
|
||||||
|
public int ConsultationId { get; set; }
|
||||||
|
[Required]
|
||||||
|
public int LawyerId { get; set; }
|
||||||
|
public virtual Consultation Consultation { get; set; } = new();
|
||||||
|
public virtual Lawyer Lawyer { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
63
LawFim/LawFirmDatabaseImplement/Models/Guarantor.cs
Normal file
63
LawFim/LawFirmDatabaseImplement/Models/Guarantor.cs
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
using LawFimDataModels.Models;
|
||||||
|
using LawFirmContracts.BindingModels;
|
||||||
|
using LawFirmContracts.ViewModels;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class Guarantor : IGuarantorModel
|
||||||
|
{
|
||||||
|
public int Id { get; private set; }
|
||||||
|
[Required]
|
||||||
|
public string FIO { get; private set; } = string.Empty;
|
||||||
|
[Required]
|
||||||
|
public string Email { get; private set; } = string.Empty;
|
||||||
|
[Required]
|
||||||
|
public string Password { get; private set; } = string.Empty;
|
||||||
|
|
||||||
|
public static Guarantor? Create(GuarantorBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Guarantor()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
FIO = model.FIO,
|
||||||
|
Email = model.Email,
|
||||||
|
Password = model.Password,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Guarantor Create(GuarantorViewModel model)
|
||||||
|
{
|
||||||
|
return new Guarantor
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
FIO = model.FIO,
|
||||||
|
Email = model.Email,
|
||||||
|
Password = model.Password,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(GuarantorBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FIO = model.FIO;
|
||||||
|
Email = model.Email;
|
||||||
|
Password = model.Password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GuarantorViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
FIO = FIO,
|
||||||
|
Email = Email,
|
||||||
|
Password = Password,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
99
LawFim/LawFirmDatabaseImplement/Models/Hearing.cs
Normal file
99
LawFim/LawFirmDatabaseImplement/Models/Hearing.cs
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
using LawFimDataModels.Enums;
|
||||||
|
using LawFimDataModels.Models;
|
||||||
|
using LawFirmContracts.BindingModels;
|
||||||
|
using LawFirmContracts.ViewModels;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.Design;
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class Hearing :IHearingModel
|
||||||
|
{
|
||||||
|
public int Id { get; private set; }
|
||||||
|
[Required]
|
||||||
|
public DateTime HearingDate { get; private set; }
|
||||||
|
[Required]
|
||||||
|
public string Judge{ get; private set; } = string.Empty;
|
||||||
|
public int GuarantorId { get; set; }
|
||||||
|
private Dictionary<int, ILawyerModel>? _hearingLawyers = null;
|
||||||
|
[NotMapped]
|
||||||
|
public Dictionary<int, ILawyerModel> HearingLawyers
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_hearingLawyers == null)
|
||||||
|
{
|
||||||
|
using var context = new LawFirmDatabase();
|
||||||
|
_hearingLawyers = Lawyers
|
||||||
|
.ToDictionary(x => x.LawyerId, x => (context.Lawyers
|
||||||
|
.FirstOrDefault(y => y.Id == x.LawyerId) as ILawyerModel));
|
||||||
|
}
|
||||||
|
return _hearingLawyers;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[ForeignKey("HearingId")]
|
||||||
|
public virtual List<HearingLawyer> Lawyers { get; set; } = new();
|
||||||
|
public static Hearing? Create(LawFirmDatabase context, HearingBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Hearing()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
HearingDate = model.HearingDate,
|
||||||
|
Judge = model.Judge,
|
||||||
|
GuarantorId = model.GuarantorId,
|
||||||
|
Lawyers = model.HearingLawyers.Select(x => new HearingLawyer
|
||||||
|
{
|
||||||
|
Lawyer = context.Lawyers.First(y => y.Id == x.Key)
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public void Update(HearingBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
HearingDate = model.HearingDate;
|
||||||
|
Judge = model.Judge;
|
||||||
|
}
|
||||||
|
public HearingViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
HearingDate = HearingDate,
|
||||||
|
Judge = Judge,
|
||||||
|
GuarantorId = GuarantorId,
|
||||||
|
HearingLawyers = HearingLawyers
|
||||||
|
};
|
||||||
|
public void UpdateLawyers(LawFirmDatabase context, HearingBindingModel model)
|
||||||
|
{
|
||||||
|
var hearingLawyer = context.HearingLawyers
|
||||||
|
.Where(rec => rec.HearingId == model.Id)
|
||||||
|
.ToList();
|
||||||
|
if (hearingLawyer != null && hearingLawyer.Count > 0)
|
||||||
|
{
|
||||||
|
context.HearingLawyers.RemoveRange(hearingLawyer.Where(rec
|
||||||
|
=> !model.HearingLawyers.ContainsKey(rec.LawyerId)));
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
var _hearing = context.Hearings.First(x => x.Id == Id);
|
||||||
|
foreach (var pc in model.HearingLawyers)
|
||||||
|
{
|
||||||
|
if (!HearingLawyers.ContainsKey(pc.Key))
|
||||||
|
{
|
||||||
|
context.HearingLawyers.Add(new HearingLawyer
|
||||||
|
{
|
||||||
|
Hearing = _hearing,
|
||||||
|
Lawyer = context.Lawyers.First(x => x.Id == pc.Key),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
_hearingLawyers = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
LawFim/LawFirmDatabaseImplement/Models/HearingLawyer.cs
Normal file
15
LawFim/LawFirmDatabaseImplement/Models/HearingLawyer.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class HearingLawyer
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
[Required]
|
||||||
|
public int HearingId { get; set; }
|
||||||
|
[Required]
|
||||||
|
public int LawyerId { get; set; }
|
||||||
|
public virtual Hearing Hearing { get; set; } = new();
|
||||||
|
public virtual Lawyer Lawyer { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
70
LawFim/LawFirmDatabaseImplement/Models/Lawyer.cs
Normal file
70
LawFim/LawFirmDatabaseImplement/Models/Lawyer.cs
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
using LawFimDataModels.Models;
|
||||||
|
using LawFirmContracts.BindingModels;
|
||||||
|
using LawFirmContracts.ViewModels;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
|
||||||
|
namespace LawFirmDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class Lawyer : ILawyerModel
|
||||||
|
{
|
||||||
|
public int Id { get; private set; }
|
||||||
|
[Required]
|
||||||
|
public string FIO { get; private set; } = string.Empty;
|
||||||
|
[Required]
|
||||||
|
public string Email { get; private set; } = string.Empty;
|
||||||
|
[Required]
|
||||||
|
public string Phone { get; private set; } = string.Empty;
|
||||||
|
[ForeignKey("LawyerId")]
|
||||||
|
public virtual List<HearingLawyer> HearingLawyers { get; set; } = new();
|
||||||
|
[ForeignKey("LawyerId")]
|
||||||
|
public virtual List<ConsultationLawyer> LawyerConsultations { get; set; } = new();
|
||||||
|
public int GuarantorId { get; set; }
|
||||||
|
|
||||||
|
public static Lawyer? Create(LawyerBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Lawyer()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
FIO = model.FIO,
|
||||||
|
Email = model.Email,
|
||||||
|
Phone = model.Phone,
|
||||||
|
GuarantorId = model.GuarantorId,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public static Lawyer Create(LawyerViewModel model)
|
||||||
|
{
|
||||||
|
return new Lawyer
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
FIO = model.FIO,
|
||||||
|
Email = model.Email,
|
||||||
|
Phone = model.Phone,
|
||||||
|
GuarantorId = model.GuarantorId,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public void Update(LawyerBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FIO = model.FIO;
|
||||||
|
Email = model.Email;
|
||||||
|
Phone = model.Phone;
|
||||||
|
}
|
||||||
|
public LawyerViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
FIO = FIO,
|
||||||
|
Email = Email,
|
||||||
|
Phone = Phone,
|
||||||
|
GuarantorId = GuarantorId
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user