дата базы исполнитель
This commit is contained in:
parent
8975c4b713
commit
2412f01ce7
@ -4,6 +4,8 @@
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public DateTime? VisitDate { get; set; }
|
||||
public DateTime? DateFrom { get; set; }
|
||||
public DateTime? DateTo { get; set; }
|
||||
public int? HearingId { get; set; }
|
||||
}
|
||||
}
|
||||
|
110
LawFim/LawFirmDatabaseImplement/Implements/CaseStorage.cs
Normal file
110
LawFim/LawFirmDatabaseImplement/Implements/CaseStorage.cs
Normal file
@ -0,0 +1,110 @@
|
||||
using LawFirmContracts.BindingModels;
|
||||
using LawFirmContracts.SearchModels;
|
||||
using LawFirmContracts.StoragesContracts;
|
||||
using LawFirmContracts.ViewModels;
|
||||
using LawFirmDatabaseImplement.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Implements
|
||||
{
|
||||
public class CaseStorage : ICaseStorage
|
||||
{
|
||||
public List<CaseViewModel> GetFullList()
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Cases.Include(x => x.CaseClients)
|
||||
.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.ToList()
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
public List<CaseViewModel> GetFilteredList(CaseSearchModel model)
|
||||
{
|
||||
if (!model.DateFrom.HasValue && !model.DateTo.HasValue)
|
||||
{
|
||||
return new();
|
||||
}
|
||||
|
||||
if (!model.DateFrom.HasValue || !model.DateTo.HasValue)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Cases.Include(x => x.CaseClients)
|
||||
.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.Where(x => x.Id == model.Id)
|
||||
.Select(x => x.GetViewModel).ToList()
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Cases
|
||||
.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
public CaseViewModel? GetElement(CaseSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue && string.IsNullOrEmpty(model.Name))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Cases.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id)
|
||||
?.GetViewModel; //имя дела не должно повторяться, уникальное должно быть
|
||||
|
||||
}
|
||||
public CaseViewModel? Insert(CaseBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var newCase = Case.Create(context, model);
|
||||
if (newCase == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
context.Cases.Add(newCase);
|
||||
context.SaveChanges();
|
||||
return newCase.GetViewModel;
|
||||
}
|
||||
public CaseViewModel? Update(CaseBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
using var transaction = context.Database.BeginTransaction();
|
||||
try
|
||||
{
|
||||
var _case = context.Cases.FirstOrDefault(rec =>
|
||||
rec.Id == model.Id);
|
||||
if (_case == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
_case.Update(model);
|
||||
context.SaveChanges();
|
||||
_case.UpdateClients(context, model);
|
||||
|
||||
transaction.Commit();
|
||||
return _case.GetViewModel;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
public CaseViewModel? Delete(CaseBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var element = context.Cases
|
||||
.Include(x => x.Clients)
|
||||
.FirstOrDefault(rec => rec.Id == model.Id);
|
||||
if (element != null)
|
||||
{
|
||||
context.Cases.Remove(element);
|
||||
context.SaveChanges();
|
||||
return element.GetViewModel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
106
LawFim/LawFirmDatabaseImplement/Implements/ClientStorage.cs
Normal file
106
LawFim/LawFirmDatabaseImplement/Implements/ClientStorage.cs
Normal file
@ -0,0 +1,106 @@
|
||||
using LawFirmContracts.BindingModels;
|
||||
using LawFirmContracts.SearchModels;
|
||||
using LawFirmContracts.StoragesContracts;
|
||||
using LawFirmContracts.ViewModels;
|
||||
using LawFirmDatabaseImplement.Models;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Implements
|
||||
{
|
||||
public class ClientStorage : IClientStorage
|
||||
{
|
||||
public List<ClientViewModel> GetFullList()
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Clients
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
public List<ClientViewModel> GetFilteredList(ClientSearchModel model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.Email) && !model.Id.HasValue && string.IsNullOrEmpty(model.FIO)
|
||||
&& string.IsNullOrEmpty(model.Phone))
|
||||
{
|
||||
return new();
|
||||
}
|
||||
if (!string.IsNullOrEmpty(model.Email))
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Clients
|
||||
.Where(x => x.Email.Equals(model.Email))
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Clients
|
||||
.Where(x => x.Id == model.Id)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
public ClientViewModel? GetElement(ClientSearchModel model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.Email) && !model.Id.HasValue && string.IsNullOrEmpty(model.FIO)
|
||||
&& string.IsNullOrEmpty(model.Phone))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
using var context = new LawFirmDatabase();
|
||||
|
||||
return context.Clients
|
||||
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Email)
|
||||
&& x.Email == model.Email) || (model.Id.HasValue && x.Id == model.Id))
|
||||
?.GetViewModel;
|
||||
}
|
||||
public ClientViewModel? Insert(ClientBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var newClient = Client.Create(model);
|
||||
if (newClient == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
context.Clients.Add(newClient);
|
||||
context.SaveChanges();
|
||||
return newClient.GetViewModel;
|
||||
}
|
||||
public ClientViewModel? Update(ClientBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var client = context.Clients.FirstOrDefault(x => x.Id == model.Id);
|
||||
if (client == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
client.Update(model);
|
||||
context.SaveChanges();
|
||||
return client.GetViewModel;
|
||||
}
|
||||
public ClientViewModel? Delete(ClientBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var element = context.Clients.FirstOrDefault(rec => rec.Id == model.Id);
|
||||
if (element != null)
|
||||
{
|
||||
context.Clients.Remove(element);
|
||||
context.SaveChanges();
|
||||
return element.GetViewModel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<ClientViewModel> GetClientCaseList(CaseSearchModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.CaseClients.Where(x => x.CaseId == model.Id).Select(x => x.Client.GetViewModel).ToList();
|
||||
|
||||
}
|
||||
|
||||
public List<ClientViewModel> GetClientVisitList(VisitSearchModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.VisitClients.Where(x => x.VisitId == model.Id).Select(x => x.Client.GetViewModel).ToList();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
using LawFirmContracts.BindingModels;
|
||||
using LawFirmContracts.SearchModels;
|
||||
using LawFirmContracts.StoragesContracts;
|
||||
using LawFirmContracts.ViewModels;
|
||||
using LawFirmDatabaseImplement.Models;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Implements
|
||||
{
|
||||
public class ExecutorStorage : IExecutorStorage
|
||||
{
|
||||
public List<ExecutorViewModel> GetFullList()
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Executors
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public List<ExecutorViewModel> GetFilteredList(ExecutorSearchModel 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.Executors
|
||||
.Where(x => x.Email.Equals(model.Email))
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Executors
|
||||
.Where(x => x.Id == model.Id)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public ExecutorViewModel? GetElement(ExecutorSearchModel 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.Executors
|
||||
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Email)
|
||||
&& x.Email == model.Email) || (model.Id.HasValue && x.Id == model.Id))
|
||||
?.GetViewModel;
|
||||
}
|
||||
|
||||
public ExecutorViewModel? Insert(ExecutorBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var newExecutor = Executor.Create(model);
|
||||
if (newExecutor == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
context.Executors.Add(newExecutor);
|
||||
context.SaveChanges();
|
||||
return newExecutor.GetViewModel;
|
||||
}
|
||||
|
||||
public ExecutorViewModel? Update(ExecutorBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var executor = context.Executors.FirstOrDefault(x => x.Id == model.Id);
|
||||
if (executor == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
executor.Update(model);
|
||||
context.SaveChanges();
|
||||
return executor.GetViewModel;
|
||||
}
|
||||
|
||||
public ExecutorViewModel? Delete(ExecutorBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var element = context.Executors.FirstOrDefault(rec => rec.Id == model.Id);
|
||||
if (element != null)
|
||||
{
|
||||
context.Executors.Remove(element);
|
||||
context.SaveChanges();
|
||||
return element.GetViewModel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
137
LawFim/LawFirmDatabaseImplement/Implements/VisitStorage.cs
Normal file
137
LawFim/LawFirmDatabaseImplement/Implements/VisitStorage.cs
Normal file
@ -0,0 +1,137 @@
|
||||
using LawFirmContracts.BindingModels;
|
||||
using LawFirmContracts.SearchModels;
|
||||
using LawFirmContracts.StoragesContracts;
|
||||
using LawFirmContracts.ViewModels;
|
||||
using LawFirmDatabaseImplement.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Implements
|
||||
{
|
||||
public class VisitStorage : IVisitStorage
|
||||
{
|
||||
public List<VisitViewModel> GetFullList()
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Visits
|
||||
.Include(x => x.Clients)
|
||||
.ThenInclude(x => x.Client)
|
||||
.ToList()
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
public List<VisitViewModel> GetFilteredList(VisitSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue
|
||||
&& !model.VisitDate.HasValue && !model.HearingId.HasValue)
|
||||
{
|
||||
return new();
|
||||
}
|
||||
if (!model.DateFrom.HasValue || !model.DateTo.HasValue)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Visits
|
||||
.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.Where(x => x.Id == model.Id)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Visits
|
||||
.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.Where(x => x.VisitDate >= model.DateFrom && x.VisitDate <= model.DateTo)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
public List<VisitViewModel> GetFilteredDateList(VisitSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue)
|
||||
{
|
||||
return new();
|
||||
}
|
||||
|
||||
if (!model.DateFrom.HasValue || !model.DateTo.HasValue)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Visits
|
||||
.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.Where(x => x.Id == model.Id)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Visits
|
||||
.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.Where(x => x.VisitDate >= model.DateFrom && x.VisitDate <= model.DateTo)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
public VisitViewModel? GetElement(VisitSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue && !model.VisitDate.HasValue && !model.HearingId.HasValue)
|
||||
{
|
||||
return new();
|
||||
}
|
||||
using var context = new LawFirmDatabase();
|
||||
return context.Visits.Include(x => x.Clients).ThenInclude(x => x.Client)
|
||||
.FirstOrDefault(x => (model.HearingId.HasValue && x.Hearing == model.HearingId)
|
||||
|| (model.Id.HasValue && x.Id == model.Id))
|
||||
?.GetViewModel;
|
||||
}
|
||||
public VisitViewModel? Insert(VisitBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var newVisit = Visit.Create(context, model);
|
||||
if (newVisit == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
context.Visits.Add(newVisit);
|
||||
context.SaveChanges();
|
||||
return newVisit.GetViewModel;
|
||||
}
|
||||
public VisitViewModel? Update(VisitBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
using var transaction = context.Database.BeginTransaction();
|
||||
try
|
||||
{
|
||||
var visit = context.Visits.FirstOrDefault(rec =>
|
||||
rec.Id == model.Id);
|
||||
if (visit == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
visit.Update(model);
|
||||
context.SaveChanges();
|
||||
visit.UpdateClients(context, model);
|
||||
transaction.Commit();
|
||||
return visit.GetViewModel;
|
||||
}
|
||||
catch
|
||||
{
|
||||
transaction.Rollback();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
public VisitViewModel? Delete(VisitBindingModel model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
var element = context.Visits
|
||||
.Include(x => x.Clients)
|
||||
.FirstOrDefault(rec => rec.Id == model.Id);
|
||||
if (element != null)
|
||||
{
|
||||
context.Visits.Remove(element);
|
||||
context.SaveChanges();
|
||||
return element.GetViewModel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,12 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using LawFirmContracts.BindingModels;
|
||||
using LawFirmDatabaseImplement.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace LawFirmDatabaseImplement
|
||||
{
|
||||
internal class LawFirmDatabase
|
||||
public class LawFirmDatabase : DbContext
|
||||
{
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder
|
||||
optionsBuilder)
|
||||
{
|
||||
if (optionsBuilder.IsConfigured == false)
|
||||
{
|
||||
|
||||
// optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-ON2V3BB\SQLEXPRESS;Initial Catalog=LawFirmDatabase;
|
||||
//Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
|
||||
// менять нада, пока скелетик
|
||||
// optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-7A1PHA0\SQLEXPRESS;Initial Catalog=LawFirmDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
|
||||
}
|
||||
base.OnConfiguring(optionsBuilder);
|
||||
}
|
||||
public virtual DbSet<Case> Cases { set; get; }
|
||||
public virtual DbSet<CaseClient> CaseClients { set; get; }
|
||||
public virtual DbSet<Client> Clients { set; get; }
|
||||
public virtual DbSet<Hearing> Hearings { set; get; }
|
||||
public virtual DbSet<HearingLawyer> HearingLawyers { set; get; }
|
||||
public virtual DbSet<Lawyer> Lawyers { set; get; }
|
||||
public virtual DbSet<Visit> Visits { set; get; }
|
||||
public virtual DbSet<VisitClient> VisitClients { set; get; }
|
||||
public virtual DbSet<Consultation> Consultations { set; get; }
|
||||
public virtual DbSet<ConsultationLawyer> ConsultationLawyers { set; get; }
|
||||
public virtual DbSet<Guarantor> Guarantors { set; get; }
|
||||
public virtual DbSet<Executor> Executors { set; get; }
|
||||
}
|
||||
}
|
||||
|
@ -7,8 +7,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Implements\" />
|
||||
<Folder Include="Models\" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.18" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
115
LawFim/LawFirmDatabaseImplement/Models/Case.cs
Normal file
115
LawFim/LawFirmDatabaseImplement/Models/Case.cs
Normal file
@ -0,0 +1,115 @@
|
||||
using LawFimDataModels.Enums;
|
||||
using LawFimDataModels.Models;
|
||||
using LawFirmContracts.BindingModels;
|
||||
using LawFirmContracts.ViewModels;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Models
|
||||
{
|
||||
public class Case : ICaseModel
|
||||
{
|
||||
public int Id { get; private set; }
|
||||
[Required]
|
||||
public string Name { get; private set; } = String.Empty;
|
||||
[Required]
|
||||
public string CaseType { get; private set; } = String.Empty;
|
||||
[Required]
|
||||
public DateTime DateCreate { get; private set; }
|
||||
public DateTime? DateImplement { get; private set; }
|
||||
[Required]
|
||||
public CaseStatus Status { get; private set; }
|
||||
private Dictionary<int, IClientModel>? _caseClients = null;
|
||||
|
||||
[NotMapped]
|
||||
public Dictionary<int, IClientModel> CaseClients
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_caseClients == null)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
_caseClients = Clients
|
||||
.ToDictionary(x => x.ClientId, x => (context.Clients.FirstOrDefault(y => y.Id == x.ClientId) as IClientModel));
|
||||
}
|
||||
|
||||
return _caseClients;
|
||||
}
|
||||
}
|
||||
[ForeignKey("CaseId")]
|
||||
public virtual List<CaseClient> Clients { get; set; } = new();
|
||||
[ForeignKey("CaseId")]
|
||||
public virtual List<Hearing> Hearings { get; set; } = new();
|
||||
public static Case Create(LawFirmDatabase context, CaseBindingModel model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Case()
|
||||
{
|
||||
Id = model.Id,
|
||||
Name = model.Name,
|
||||
DateCreate = model.DateCreate,
|
||||
DateImplement = model.DateImplement,
|
||||
Status = model.Status,
|
||||
Clients = model.CaseClients.Select(x => new CaseClient
|
||||
{
|
||||
Client = context.Clients.First(y => y.Id == x.Key)
|
||||
}).ToList()
|
||||
};
|
||||
}
|
||||
public void Update(CaseBindingModel? model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (model.Status == CaseStatus.ЗакрытиеДела) DateImplement = DateTime.Now;
|
||||
Name = model.Name;
|
||||
Status = model.Status;
|
||||
|
||||
|
||||
if (model.DateImplement.HasValue) DateImplement = model.DateImplement;
|
||||
if (!model.CompanyId.HasValue) CompanyId = model.CompanyId;
|
||||
}
|
||||
public CaseViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
Name = Name,
|
||||
CaseType = CaseType,
|
||||
DateCreate = DateCreate,
|
||||
DateImplement = DateImplement,
|
||||
Status = Status,
|
||||
CaseClients = CaseClients,
|
||||
};
|
||||
|
||||
|
||||
public void UpdateClients(LawFirmDatabase context, CaseBindingModel model)
|
||||
{
|
||||
var caseClients = context.CaseClients.Where(rec =>
|
||||
rec.CaseId == model.Id).ToList();
|
||||
if (caseClients != null && caseClients.Count > 0)
|
||||
{ // удалили те, которых нет в модели
|
||||
context.CaseClients.RemoveRange(caseClients.Where(rec
|
||||
=> !model.CaseClients.ContainsKey(rec.ClientId)));
|
||||
context.SaveChanges();
|
||||
}
|
||||
var _case = context.Cases.First(x => x.Id == Id);
|
||||
foreach (var pc in model.CaseClients)
|
||||
{
|
||||
if (!CaseClients.ContainsKey(pc.Key))
|
||||
{
|
||||
context.CaseClients.Add(new CaseClient
|
||||
{
|
||||
Case = _case,
|
||||
Client = context.Clients.First(x => x.Id == pc.Key),
|
||||
});
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
_caseClients = null;
|
||||
}
|
||||
}
|
||||
}
|
15
LawFim/LawFirmDatabaseImplement/Models/CaseClient.cs
Normal file
15
LawFim/LawFirmDatabaseImplement/Models/CaseClient.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Models
|
||||
{
|
||||
public class CaseClient
|
||||
{
|
||||
public int Id { get; set; }
|
||||
[Required]
|
||||
public int CaseId { get; set; }
|
||||
[Required]
|
||||
public int ClientId { get; set; }
|
||||
public virtual Case Case { get; set; } = new();
|
||||
public virtual Client Client { get; set; } = new();
|
||||
}
|
||||
}
|
65
LawFim/LawFirmDatabaseImplement/Models/Client.cs
Normal file
65
LawFim/LawFirmDatabaseImplement/Models/Client.cs
Normal file
@ -0,0 +1,65 @@
|
||||
using LawFimDataModels.Models;
|
||||
using LawFirmContracts.BindingModels;
|
||||
using LawFirmContracts.ViewModels;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Models
|
||||
{
|
||||
public class Client : IClientModel
|
||||
{
|
||||
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("ClientId")]
|
||||
public virtual List<CaseClient> CaseClients { get; set; } = new();
|
||||
[ForeignKey("ClientId")]
|
||||
public virtual List<VisitClient> ClientVisits { get; set; } = new();
|
||||
|
||||
public static Client? Create(ClientBindingModel? model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Client()
|
||||
{
|
||||
Id = model.Id,
|
||||
FIO = model.FIO,
|
||||
Email = model.Email,
|
||||
Phone = model.Phone,
|
||||
};
|
||||
}
|
||||
public static Client Create(ClientViewModel model)
|
||||
{
|
||||
return new Client
|
||||
{
|
||||
Id = model.Id,
|
||||
FIO = model.FIO,
|
||||
Email = model.Email,
|
||||
Phone = model.Phone,
|
||||
};
|
||||
}
|
||||
public void Update(ClientBindingModel? model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
FIO = model.FIO;
|
||||
Email = model.Email;
|
||||
Phone = model.Phone;
|
||||
}
|
||||
public ClientViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
FIO = FIO,
|
||||
Email = Email,
|
||||
Phone = Phone,
|
||||
};
|
||||
}
|
||||
}
|
63
LawFim/LawFirmDatabaseImplement/Models/Executor.cs
Normal file
63
LawFim/LawFirmDatabaseImplement/Models/Executor.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 Executor : IExecutorModel
|
||||
{
|
||||
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 Executor? Create(ExecutorBindingModel? model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Executor()
|
||||
{
|
||||
Id = model.Id,
|
||||
FIO = model.FIO,
|
||||
Email = model.Email,
|
||||
Password = model.Password,
|
||||
};
|
||||
}
|
||||
|
||||
public static Executor Create(ExecutorViewModel model)
|
||||
{
|
||||
return new Executor
|
||||
{
|
||||
Id = model.Id,
|
||||
FIO = model.FIO,
|
||||
Email = model.Email,
|
||||
Password = model.Password,
|
||||
};
|
||||
}
|
||||
|
||||
public void Update(ExecutorBindingModel? model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
FIO = model.FIO;
|
||||
Email = model.Email;
|
||||
Password = model.Password;
|
||||
}
|
||||
|
||||
public ExecutorViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
FIO = FIO,
|
||||
Email = Email,
|
||||
Password = Password,
|
||||
};
|
||||
}
|
||||
}
|
110
LawFim/LawFirmDatabaseImplement/Models/Visit.cs
Normal file
110
LawFim/LawFirmDatabaseImplement/Models/Visit.cs
Normal file
@ -0,0 +1,110 @@
|
||||
using LawFimDataModels.Models;
|
||||
using LawFirmContracts.BindingModels;
|
||||
using LawFirmContracts.ViewModels;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Models
|
||||
{
|
||||
public class Visit : IVisitModel
|
||||
{
|
||||
public int Id { get; private set; }
|
||||
[Required]
|
||||
public DateTime VisitDate { get; private set; }
|
||||
|
||||
//связь один-к-одному
|
||||
public int HearingId { get; private set; }
|
||||
public Hearing Hearing { get; set; } = null!;
|
||||
//---
|
||||
public int? CompanyId { get; set; }
|
||||
|
||||
private Dictionary<int, IClientModel>? _visitClients = null;
|
||||
[NotMapped]
|
||||
public Dictionary<int, IClientModel> VisitClients
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
if (_visitClients == null)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
_visitClients = Clients
|
||||
.ToDictionary(x => x.ClientId, x => (context.Clients
|
||||
.FirstOrDefault(y => y.Id == x.ClientId) as IClientModel));
|
||||
}
|
||||
return _visitClients;
|
||||
}
|
||||
}
|
||||
[ForeignKey("VisitId")]
|
||||
public virtual List<VisitClient> Clients { get; set; } = new();
|
||||
public static Visit? Create(LawFirmDatabase context,
|
||||
VisitBindingModel? model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var visits = context.Visits.Where(x => x.HearingId == model.HearingId).ToList();
|
||||
if (visits.Count > 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Visit()
|
||||
{
|
||||
Id = model.Id,
|
||||
VisitDate = model.VisitDate,
|
||||
HearingId = model.HearingId,
|
||||
Hearing = context.Hearings.First(x => x.Id == model.HearingId),
|
||||
Clients = model.VisitClients.Select(x => new VisitClient
|
||||
{
|
||||
Client = context.Clients.First(y => y.Id == x.Key)
|
||||
}).ToList()
|
||||
};
|
||||
}
|
||||
public void Update(VisitBindingModel? model)
|
||||
{
|
||||
using var context = new LawFirmDatabase();
|
||||
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
VisitDate = model.VisitDate;
|
||||
HearingId = model.HearingId;
|
||||
}
|
||||
public VisitViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
VisitDate = VisitDate,
|
||||
HearingId = HearingId,
|
||||
VisitClients = VisitClients
|
||||
};
|
||||
public void UpdateClients(LawFirmDatabase context,
|
||||
VisitBindingModel model)
|
||||
{
|
||||
var visitClients = context.VisitClients.Where(rec =>
|
||||
rec.VisitId == model.Id).ToList();
|
||||
if (visitClients != null && visitClients.Count > 0)
|
||||
{ // удалили те, которых нет в модели
|
||||
context.VisitClients.RemoveRange(visitClients.Where(rec
|
||||
=> !model.VisitClients.ContainsKey(rec.ClientId)));
|
||||
context.SaveChanges();
|
||||
}
|
||||
var _visit = context.Visits.First(x => x.Id == Id);
|
||||
foreach (var pc in model.VisitClients)
|
||||
{
|
||||
if (!VisitClients.ContainsKey(pc.Key))
|
||||
{
|
||||
context.VisitClients.Add(new VisitClient
|
||||
{
|
||||
Visit = _visit,
|
||||
Client = context.Clients.First(x => x.Id == pc.Key),
|
||||
});
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
_visitClients = null;
|
||||
}
|
||||
}
|
||||
}
|
16
LawFim/LawFirmDatabaseImplement/Models/VisitClient.cs
Normal file
16
LawFim/LawFirmDatabaseImplement/Models/VisitClient.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LawFirmDatabaseImplement.Models
|
||||
{
|
||||
public class VisitClient
|
||||
{
|
||||
public int Id { get; set; }
|
||||
[Required]
|
||||
public int ClientId { get; set; }
|
||||
[Required]
|
||||
public int VisitId { get; set; }
|
||||
public virtual Client Client { get; set; } = new();
|
||||
public virtual Visit Visit { get; set; } = new();
|
||||
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user