diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/CaseLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/CaseLogic.cs index 8beac07..5206c6c 100644 --- a/LawFirm/LawFirmBusinessLogic/BusinessLogics/CaseLogic.cs +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/CaseLogic.cs @@ -127,7 +127,10 @@ namespace LawFirmBusinessLogic.BusinessLogics return false; } - + if(element.CaseClients.ContainsKey(client.Id)) + { + return false; + } element.CaseClients[client.Id] = client; _caseStorage.Update(new() diff --git a/LawFirm/LawFirmClientApp/Views/Home/Cases.cshtml b/LawFirm/LawFirmClientApp/Views/Home/Cases.cshtml index 89594da..7b61ce9 100644 --- a/LawFirm/LawFirmClientApp/Views/Home/Cases.cshtml +++ b/LawFirm/LawFirmClientApp/Views/Home/Cases.cshtml @@ -20,10 +20,6 @@ Добавить клиентов к делам


-

- - Добавить клиентов к делам -

diff --git a/LawFirm/LawFirmContracts/ViewModels/ConsultationViewModel.cs b/LawFirm/LawFirmContracts/ViewModels/ConsultationViewModel.cs index 7f3207c..fbb033d 100644 --- a/LawFirm/LawFirmContracts/ViewModels/ConsultationViewModel.cs +++ b/LawFirm/LawFirmContracts/ViewModels/ConsultationViewModel.cs @@ -1,4 +1,5 @@ using LawFirmDataModels.Models; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; @@ -15,5 +16,12 @@ namespace LawFirmContracts.ViewModels public double Cost { get; set; } public int Id { get; set; } public int? CompanyId { get; set; } + public ConsultationViewModel() { } + + [JsonConstructor] + public ConsultationViewModel(Dictionary ConsultationLawyers) + { + this.ConsultationLawyers = ConsultationLawyers.ToDictionary(x => x.Key, x => x.Value as ILawyerModel); + } } } diff --git a/LawFirm/LawFirmDatabaseImplement/Implements/ConsultationStorage.cs b/LawFirm/LawFirmDatabaseImplement/Implements/ConsultationStorage.cs index c3190aa..00f10b1 100644 --- a/LawFirm/LawFirmDatabaseImplement/Implements/ConsultationStorage.cs +++ b/LawFirm/LawFirmDatabaseImplement/Implements/ConsultationStorage.cs @@ -98,7 +98,7 @@ namespace LawFirmDatabaseImplement.Implements } catch { - transaction.Rollback(); + throw; } } diff --git a/LawFirm/LawFirmDatabaseImplement/LawFirmDatabase.cs b/LawFirm/LawFirmDatabaseImplement/LawFirmDatabase.cs index 36d9107..57b0036 100644 --- a/LawFirm/LawFirmDatabaseImplement/LawFirmDatabase.cs +++ b/LawFirm/LawFirmDatabaseImplement/LawFirmDatabase.cs @@ -17,11 +17,11 @@ namespace LawFirmDatabaseImplement 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-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"); + /* optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-7A1PHA0\SQLEXPRESS;Initial Catalog=LawFirmDatabase; + Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");*/ } base.OnConfiguring(optionsBuilder); } diff --git a/LawFirm/LawFirmDatabaseImplement/Models/Case.cs b/LawFirm/LawFirmDatabaseImplement/Models/Case.cs index d2c7950..eff1d1e 100644 --- a/LawFirm/LawFirmDatabaseImplement/Models/Case.cs +++ b/LawFirm/LawFirmDatabaseImplement/Models/Case.cs @@ -111,16 +111,18 @@ namespace LawFirmDatabaseImplement.Models var _case = context.Cases.First(x => x.Id == Id); foreach (var pc in model.CaseClients) { - context.CaseClients.Add(new CaseClient + if (!CaseClients.ContainsKey(pc.Key)) { - Case = _case, - Client = context.Clients.First(x => x.Id == pc.Key), - - - }); - - context.SaveChanges(); - + context.CaseClients.Add(new CaseClient + { + Case = _case, + Client = context.Clients.First(x => x.Id == pc.Key), + + + }); + } + context.SaveChanges(); + } diff --git a/LawFirm/LawFirmDatabaseImplement/Models/Consultation.cs b/LawFirm/LawFirmDatabaseImplement/Models/Consultation.cs index 9b01c9d..e6d4ecd 100644 --- a/LawFirm/LawFirmDatabaseImplement/Models/Consultation.cs +++ b/LawFirm/LawFirmDatabaseImplement/Models/Consultation.cs @@ -26,9 +26,11 @@ namespace LawFirmDatabaseImplement.Models { if (_consultationLawyers == null) { - _consultationLawyers = Lawyers - .ToDictionary(recPC => recPC.LawyerId, recPC => recPC.Lawyer as ILawyerModel); - } + using var context = new LawFirmDatabase(); + _consultationLawyers = Lawyers + .ToDictionary(x => x.LawyerId, x => (context.Lawyers + .FirstOrDefault(y => y.Id == x.LawyerId) as ILawyerModel)); + } return _consultationLawyers; } } @@ -66,7 +68,8 @@ namespace LawFirmDatabaseImplement.Models { Id = Id, Cost = Cost, - CompanyId = CompanyId + CompanyId = CompanyId, + ConsultationLawyers = ConsultationLawyers }; public void UpdateLawyers(LawFirmDatabase context, ConsultationBindingModel model) @@ -82,11 +85,14 @@ namespace LawFirmDatabaseImplement.Models var _consult = context.Consultations.First(x => x.Id == Id); foreach (var pc in model.ConsultationLawyers) { - context.ConsultationLawyers.Add(new ConsultationLawyer + if (!ConsultationLawyers.ContainsKey(pc.Key)) { - Consultation = _consult, - Lawyer = context.Lawyers.First(x => x.Id == pc.Key), - }); + context.ConsultationLawyers.Add(new ConsultationLawyer + { + Consultation = _consult, + Lawyer = context.Lawyers.First(x => x.Id == pc.Key), + }); + } context.SaveChanges(); } _consult = null; diff --git a/LawFirm/LawFirmDatabaseImplement/Models/Hearing.cs b/LawFirm/LawFirmDatabaseImplement/Models/Hearing.cs index 7bc9e3a..b42246e 100644 --- a/LawFirm/LawFirmDatabaseImplement/Models/Hearing.cs +++ b/LawFirm/LawFirmDatabaseImplement/Models/Hearing.cs @@ -81,7 +81,9 @@ namespace LawFirmDatabaseImplement.Models HearingDate = HearingDate, Court = Court, Judge = Judge, - CompanyId = CompanyId + CompanyId = CompanyId, + HearingLawyers = HearingLawyers + }; public void UpdateLawyers(LawFirmDatabase context, HearingBindingModel model) @@ -97,11 +99,14 @@ namespace LawFirmDatabaseImplement.Models var _hear = context.Hearings.First(x => x.Id == Id); foreach (var pc in model.HearingLawyers) { - context.HearingLawyers.Add(new HearingLawyer + if (!HearingLawyers.ContainsKey(pc.Key)) { - Hearing = _hear, - Lawyer = context.Lawyers.First(x => x.Id == pc.Key), - }); + context.HearingLawyers.Add(new HearingLawyer + { + Hearing = _hear, + Lawyer = context.Lawyers.First(x => x.Id == pc.Key), + }); + } context.SaveChanges(); } _hearingLawyers = null; diff --git a/LawFirm/LawFirmDatabaseImplement/Models/Visit.cs b/LawFirm/LawFirmDatabaseImplement/Models/Visit.cs index af9d21d..5eeb63a 100644 --- a/LawFirm/LawFirmDatabaseImplement/Models/Visit.cs +++ b/LawFirm/LawFirmDatabaseImplement/Models/Visit.cs @@ -100,12 +100,14 @@ namespace LawFirmDatabaseImplement.Models var _visit = context.Visits.First(x => x.Id == Id); foreach (var pc in model.VisitClients) { - context.VisitClients.Add(new VisitClient + if (!VisitClients.ContainsKey(pc.Key)) { - Visit = _visit, - Client = context.Clients.First(x => x.Id == pc.Key), - }); - VisitClients.Add(model.Id, context.Clients.First(x => x.Id == pc.Key)); + context.VisitClients.Add(new VisitClient + { + Visit = _visit, + Client = context.Clients.First(x => x.Id == pc.Key), + }); + } context.SaveChanges(); } _visitClients = null; diff --git a/LawFirm/LawFirmRestApi/Program.cs b/LawFirm/LawFirmRestApi/Program.cs index 4552a90..51e54b2 100644 --- a/LawFirm/LawFirmRestApi/Program.cs +++ b/LawFirm/LawFirmRestApi/Program.cs @@ -26,7 +26,7 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); -builder.Services.AddTransient(); + builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient();