From cf104dd677c729ea79852043be68c9eca289ef0c Mon Sep 17 00:00:00 2001 From: sofiaivv Date: Mon, 27 May 2024 10:01:53 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BB=D0=B0=D0=BB=D0=B0=20=D0=BB=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=BB=D0=B0=D0=BB=D0=B0=20=D0=B2=D1=81=D1=91=20=D0=B1?= =?UTF-8?q?=D1=83=D0=B4=D0=B5=D1=82=20=D1=85=D0=BE=D1=80=D0=BE=D1=88=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/ConsultationLogic.cs | 4 +- .../BusinessLogics/ReportLogicGuarantor.cs | 191 +++++-- .../AbstractSaveToExcelGuarantor.cs | 72 ++- .../AbstractSaveToPdfGuarantor.cs | 77 ++- .../AbstractSaveToWordGuarantor.cs | 90 ++- .../HelperModels/ExcelInfoGuarantor.cs | 5 +- .../HelperModels/PdfInfoGuarantor.cs | 10 +- .../HelperModels/WordInfoGuarantor.cs | 8 +- .../Implements/SaveToExcelGuarantor.cs | 4 +- .../Implements/SaveToPdfGuarantor.cs | 103 +++- .../Implements/SaveToWordGuarantor.cs | 122 +++- .../BindingModels/ConsultationBindingModel.cs | 2 +- .../ReportGuarantorBindingModel.cs | 1 - .../ViewModels/ConsultationViewModel.cs | 15 +- .../ReportLawyerHearingViewModel.cs | 2 + .../ViewModels/ReportLawyersViewModel.cs | 11 +- .../Models/IConsultationModel.cs | 2 +- .../Implements/ConsultationStorage.cs | 180 +++--- .../Implements/HearingStorage.cs | 17 +- .../Implements/VisitStorage.cs | 3 +- .../LawCompanyDatabase.cs | 4 +- .../20240526230043_test.Designer.cs | 540 ++++++++++++++++++ .../Migrations/20240526230043_test.cs | 410 +++++++++++++ .../LawCompanyDatabaseModelSnapshot.cs | 3 +- .../Models/Consultation.cs | 43 +- .../Models/Hearing.cs | 39 +- .../Models/Lawyer.cs | 1 - .../Controllers/ConsultationController.cs | 100 +++- .../Controllers/HearingController.cs | 109 +++- .../Controllers/HomeController.cs | 144 ++++- .../Controllers/LawyerController.cs | 79 ++- .../LawCompanyGuarantorApp.csproj | 2 + LawCompany/LawCompanyGuarantorApp/Program.cs | 29 +- .../Consultation/CreateConsultation.cshtml | 18 +- .../Consultation/UpdateConsultation.cshtml | 16 +- .../Views/Hearing/CreateHearing.cshtml | 15 +- .../Views/Hearing/HearingLawyers.cshtml | 13 +- .../Views/Hearing/UpdateHearing.cshtml | 16 +- .../Views/Home/ConsultationCase.cshtml | 22 + .../Views/Home/Consultations.cshtml | 64 +++ .../Views/Home/Enter.cshtml | 21 + .../Views/Home/Hearings.cshtml | 26 +- .../Views/Home/Lawyers.cshtml | 24 +- .../Views/Home/Privacy.cshtml | 36 ++ .../Views/Home/Register.cshtml | 28 + .../Views/Lawyer/CreateLawyer.cshtml | 2 +- .../Views/Lawyer/UpdateLawyer.cshtml | 57 +- .../Views/Shared/_LayoutGuarantor.cshtml | 17 +- .../Controllers/ConsultationController.cs | 16 + .../Controllers/HearingController.cs | 3 +- .../Controllers/LawyerController.cs | 14 + LawCompany/LawCompanyRestApi/appsettings.json | 4 +- 52 files changed, 2440 insertions(+), 394 deletions(-) create mode 100644 LawCompany/LawCompanyDatabaseImplement/Migrations/20240526230043_test.Designer.cs create mode 100644 LawCompany/LawCompanyDatabaseImplement/Migrations/20240526230043_test.cs create mode 100644 LawCompany/LawCompanyGuarantorApp/Views/Home/ConsultationCase.cshtml create mode 100644 LawCompany/LawCompanyGuarantorApp/Views/Home/Consultations.cshtml create mode 100644 LawCompany/LawCompanyGuarantorApp/Views/Home/Enter.cshtml create mode 100644 LawCompany/LawCompanyGuarantorApp/Views/Home/Privacy.cshtml create mode 100644 LawCompany/LawCompanyGuarantorApp/Views/Home/Register.cshtml diff --git a/LawCompany/LawCompanyBusinessLogic/BusinessLogics/ConsultationLogic.cs b/LawCompany/LawCompanyBusinessLogic/BusinessLogics/ConsultationLogic.cs index 3049397..9dab3af 100644 --- a/LawCompany/LawCompanyBusinessLogic/BusinessLogics/ConsultationLogic.cs +++ b/LawCompany/LawCompanyBusinessLogic/BusinessLogics/ConsultationLogic.cs @@ -72,6 +72,7 @@ namespace LawCompanyBusinessLogic.BusinessLogics return list; } + public bool Update(ConsultationBindingModel model) { CheckModel(model); @@ -124,8 +125,7 @@ namespace LawCompanyBusinessLogic.BusinessLogics { throw new ArgumentNullException("Не поставлено время", nameof(model.ConsultationDate)); } - - _logger.LogInformation("Consultation. ConsultationDate:{ConsultationDate}. Id: {Id} ", model.ConsultationDate, model.Id); + _logger.LogInformation("Consultation.ConsultationDate: { ConsultationDate}. Id: {Id} ", model.ConsultationDate, model.Id); var element = _consultationStorage.GetElement(new ConsultationSearchModel { ConsultationDate = model.ConsultationDate diff --git a/LawCompany/LawCompanyBusinessLogic/BusinessLogics/ReportLogicGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/BusinessLogics/ReportLogicGuarantor.cs index 0866279..bd20b3b 100644 --- a/LawCompany/LawCompanyBusinessLogic/BusinessLogics/ReportLogicGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/BusinessLogics/ReportLogicGuarantor.cs @@ -11,51 +11,160 @@ namespace LawCompanyBusinessLogic.BusinessLogics { public class ReportLogicGuarantor : IReportGuarantorLogic { - /*private readonly IVisitStorage _visitStorage; - private readonly IClientStorage _clientStorage; - private readonly ICaseStorage _caseStorage; - private readonly IConsultationStorage _consultationStorage; - private readonly IHearingStorage _hearingStorage; - private readonly AbstractSaveToExcelGuarantor _saveToExcel; - private readonly AbstractSaveToWordGuarantor _saveToWord; - private readonly AbstractSaveToPdfGuarantor _saveToPdf; + private readonly IVisitStorage _visitStorage; + private readonly IClientStorage _clientStorage; + private readonly ICaseStorage _caseStorage; + private readonly IConsultationStorage _consultationStorage; + private readonly IHearingStorage _hearingStorage; + private readonly AbstractSaveToExcelGuarantor _saveToExcel; + private readonly AbstractSaveToWordGuarantor _saveToWord; + private readonly AbstractSaveToPdfGuarantor _saveToPdf; - public ReportLogicGuarantor(IVisitStorage visitStorage, IClientStorage clientStorage, ICaseStorage caseStorage, - IConsultationStorage consultationStorage, IHearingStorage hearingStorage, - AbstractSaveToExcelGuarantor saveToExcel, AbstractSaveToWordGuarantor saveToWord, AbstractSaveToPdfGuarantor saveToPdf) + public ReportLogicGuarantor(IVisitStorage visitStorage, IClientStorage clientStorage, ICaseStorage caseStorage, + IConsultationStorage consultationStorage, IHearingStorage hearingStorage, + AbstractSaveToExcelGuarantor saveToExcel, AbstractSaveToWordGuarantor saveToWord, AbstractSaveToPdfGuarantor saveToPdf) + { + _visitStorage = visitStorage; + _clientStorage = clientStorage; + _caseStorage = caseStorage; + _consultationStorage = consultationStorage; + _hearingStorage = hearingStorage; + _saveToExcel = saveToExcel; + _saveToWord = saveToWord; + _saveToPdf = saveToPdf; + } + + public List GetLawyerHearing(List Ids) { - _visitStorage = visitStorage; - _clientStorage = clientStorage; - _caseStorage = caseStorage; - _consultationStorage = consultationStorage; - _hearingStorage = hearingStorage; - _saveToExcel = saveToExcel; - _saveToWord = saveToWord; - _saveToPdf = saveToPdf; - }*/ - public List GetLawyerHearing(List Ids) - { - throw new NotImplementedException(); - } + if (Ids == null || !Ids.Any()) + { + return new List(); + } - public List GetLawyers(ReportGuarantorBindingModel model) - { - throw new NotImplementedException(); - } + var clients = _clientStorage.GetFullList(); + var hearings = _hearingStorage.GetFullList(); + var visits = _visitStorage.GetFullList(); - public void SaveLawyerHearingToExcelFile(ReportGuarantorBindingModel model) - { - throw new NotImplementedException(); - } + var filteredClients = clients.Where(c => Ids.Contains(c.Id)).ToList(); + var result = new List(); - public void SaveLawyerHearingToWordFile(ReportGuarantorBindingModel model) - { - throw new NotImplementedException(); - } + foreach (var client in filteredClients) + { + var record = new ReportLawyerHearingViewModel + { + FIO = client.FIO, + Hearing = new List>() + }; - public void SaveLawyersToPdfFile(ReportGuarantorBindingModel model) - { - throw new NotImplementedException(); - } - } + var clientVisits = visits.Where(v => v.VisitClients.ContainsKey(client.Id)).ToList(); + foreach (var visit in clientVisits) + { + if (visit.HearingId.HasValue) + { + var hearing = hearings.FirstOrDefault(h => h.Id == visit.HearingId.Value); + if (hearing != null) + { + record.Hearing.Add(new Tuple(hearing.Judge, hearing.HearingDate)); + } + } + } + + result.Add(record); + } + + return result; + } + + public List GetLawyers(ReportGuarantorBindingModel model) + { + var listAll = new List(); + + // Получаем список всех дел для указанного исполнителя и за указанный период + var cases = _caseStorage.GetFilteredList(new CaseSearchModel + { + ExecutorId = model.GuarantorId, + DateFrom = model.DateFrom, + DateTo = model.DateTo + }); + + // Добавляем информацию о клиентах из дел + foreach (var _case in cases) + { + foreach (var cc in _case.CaseClients.Values) + { + listAll.Add(new ReportLawyersViewModel + { + FIO = cc.FIO, + Name = _case.Name, + Status = _case.Status + }); + } + } + + // Получаем список всех консультаций для указанного исполнителя и за указанный период + var consultations = _consultationStorage.GetFilteredList(new ConsultationSearchModel + { + GuarantorId = model.GuarantorId, + DateFrom = model.DateFrom, + DateTo = model.DateTo + }); + + // Добавляем информацию о клиентах из консультаций + foreach (var consultation in consultations) + { + foreach (var cc in consultation.Case.CaseClients.Values) + { + listAll.Add(new ReportLawyersViewModel + { + FIO = cc.FIO, + ConsultationDate = consultation.ConsultationDate, + Cost = consultation.Cost + }); + } + } + + return listAll; + } + + public void SaveLawyerHearingToExcelFile(ReportGuarantorBindingModel model) + { + _saveToExcel.CreateReport(new ExcelInfoGuarantor + { + FileName = model.FileName, + Title = "Список слушаний", + LawyerHearings = GetLawyerHearing(model.Ids) + }); + } + + public void SaveLawyerHearingToWordFile(ReportGuarantorBindingModel model) + { + _saveToWord.CreateDoc(new WordInfoGuarantor + { + FileName = model.FileName, + Title = "Список слушаний", + LawyerHearings = GetLawyerHearing(model.Ids) + }); + } + + public void SaveLawyersToPdfFile(ReportGuarantorBindingModel model) + { + if (model.DateFrom == null) + { + throw new ArgumentException("Дата начала не задана"); + } + + if (model.DateTo == null) + { + throw new ArgumentException("Дата окончания не задана"); + } + _saveToPdf.CreateDoc(new PdfInfoGuarantor + { + FileName = model.FileName, + Title = "Список клиентов", + DateFrom = model.DateFrom!.Value, + DateTo = model.DateTo!.Value, + Lawyers = GetLawyers(model) + }); + } + } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToExcelGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToExcelGuarantor.cs index cef2220..f4edb94 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToExcelGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToExcelGuarantor.cs @@ -1,4 +1,6 @@ -using System; +using LawCompanyBusinessLogic.OfficePackage.HelperEnums; +using LawCompanyBusinessLogic.OfficePackage.HelperModels; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -6,7 +8,73 @@ using System.Threading.Tasks; namespace LawCompanyBusinessLogic.OfficePackage { - internal class AbstractSaveToExcelGuarantor + public abstract class AbstractSaveToExcelGuarantor { + public void CreateReport(ExcelInfoGuarantor info) + { + CreateExcel(info); + + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "A", + RowIndex = 1, + Text = info.Title, + StyleInfo = ExcelStyleInfoType.Title + }); + + MergeCells(new ExcelMergeParameters + { + CellFromName = "A1", + CellToName = "C1" + }); + + uint rowIndex = 2; + + foreach (var mc in info.LawyerHearings) + { + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "A", + RowIndex = rowIndex, + Text = mc.FIO, + StyleInfo = ExcelStyleInfoType.Text + }); + + rowIndex++; + + foreach (var conference in mc.Hearing) + { + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "B", + RowIndex = rowIndex, + Text = conference.Item1, + StyleInfo = ExcelStyleInfoType.TextWithBroder + }); + + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "C", + RowIndex = rowIndex, + Text = conference.Item2.ToString("d"), + StyleInfo = ExcelStyleInfoType.TextWithBroder + }); + + rowIndex++; + } + + rowIndex++; + } + + SaveExcel(info); + } + + protected abstract void CreateExcel(ExcelInfoGuarantor info); + + protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams); + + protected abstract void MergeCells(ExcelMergeParameters excelParams); + + protected abstract void SaveExcel(ExcelInfoGuarantor info); } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToPdfGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToPdfGuarantor.cs index 2607e7b..be50e16 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToPdfGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToPdfGuarantor.cs @@ -1,4 +1,6 @@ -using System; +using LawCompanyBusinessLogic.OfficePackage.HelperEnums; +using LawCompanyBusinessLogic.OfficePackage.HelperModels; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -6,7 +8,78 @@ using System.Threading.Tasks; namespace LawCompanyBusinessLogic.OfficePackage { - internal class AbstractSaveToPdfGuarantor + public abstract class AbstractSaveToPdfGuarantor { + public void CreateDoc(PdfInfoGuarantor info) + { + CreatePdf(info); + + CreateParagraph(new PdfParagraph + { + Text = info.Title, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + CreateParagraph(new PdfParagraph + { + Text = $"с {info.DateFrom.ToShortDateString()} по {info.DateTo.ToShortDateString()}", + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + CreateTable(new List { "4cm", "5cm", "3cm", "4cm", "2cm" }); + + CreateRow(new PdfRowParameters + { + Texts = new List { "ФИО юриста", "Дата консультации", "Стоимость консультации", "Название дела", "Статус дела" }, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + foreach (var member in info.Lawyers) + { + bool IsDate = true; + if (member.ConsultationDate.ToShortDateString() == "01.01.0001") + { + IsDate = false; + } + + bool IsCost = true; + if (member.Cost.ToString() == "0") + { + IsCost = false; + } + + CreateRow(new PdfRowParameters + { + Texts = new List + { + member.FIO, + IsDate is true ? member.ConsultationDate.ToShortDateString() : string.Empty, + IsCost is true ? member.Cost.ToString() : string.Empty, + member.Name, + member.Status.ToString(), + }, + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + } + + CreateParagraph(new PdfParagraph + { + Text = $"Итого: {info.Lawyers.Sum(x => x.Cost)}\t", + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Rigth + }); + + SavePdf(info); + } + + protected abstract void CreatePdf(PdfInfoGuarantor info); + protected abstract void CreateParagraph(PdfParagraph paragraph); + protected abstract void CreateTable(List columns); + protected abstract void CreateRow(PdfRowParameters rowParameters); + protected abstract void SavePdf(PdfInfoGuarantor info); } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToWordGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToWordGuarantor.cs index 5ef250f..0e658d5 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToWordGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/AbstractSaveToWordGuarantor.cs @@ -8,73 +8,55 @@ using System.Threading.Tasks; namespace LawCompanyBusinessLogic.OfficePackage { - public class AbstractSaveToWordGuarantor + public abstract class AbstractSaveToWordGuarantor { - /*public void CreateReport(ExcelInfoGuarantor info) + public void CreateDoc(WordInfoGuarantor info) { - CreateExcel(info); - z - InsertCellInWorksheet(new ExcelCellParameters - { - ColumnName = "A", - RowIndex = 1, - Text = info.Title, - StyleInfo = ExcelStyleInfoType.Title - }); + CreateWord(info); - MergeCells(new ExcelMergeParameters + CreateParagraph(new WordParagraph { - CellFromName = "A1", - CellToName = "C1" - }); - - uint rowIndex = 2; - - foreach (var mc in info.MemberConferences) - { - InsertCellInWorksheet(new ExcelCellParameters + Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24", }) }, + TextProperties = new WordTextProperties { - ColumnName = "A", - RowIndex = rowIndex, - Text = $"{mc.MemberSurname} {mc.MemberName} {mc.MemberPatronymic}", - StyleInfo = ExcelStyleInfoType.Text + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + foreach (var mc in info.LawyerHearings) + { + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> + { ( mc.FIO, new WordTextProperties { Size = "20", Bold=true})}, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Both + } }); - rowIndex++; - - foreach (var conference in mc.ConferenceBookings) + foreach (var conference in mc.Hearing) { - InsertCellInWorksheet(new ExcelCellParameters + CreateParagraph(new WordParagraph { - ColumnName = "B", - RowIndex = rowIndex, - Text = conference.Item1, - StyleInfo = ExcelStyleInfoType.TextWithBroder + Texts = new List<(string, WordTextProperties)> + { (conference.Item1 + " - ", new WordTextProperties { Size = "16", Bold=false}), + (conference.Item2.ToShortDateString(), new WordTextProperties { Size = "16", Bold=false})}, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Both + } }); - - InsertCellInWorksheet(new ExcelCellParameters - { - ColumnName = "C", - RowIndex = rowIndex, - Text = conference.Item2.ToString("d"), - StyleInfo = ExcelStyleInfoType.TextWithBroder - }); - - rowIndex++; } - - rowIndex++; } - - SaveExcel(info); + SaveWord(info); } - protected abstract void CreateExcel(ExcelInfoOrganiser info); - - protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams); - - protected abstract void MergeCells(ExcelMergeParameters excelParams); - - protected abstract void SaveExcel(ExcelInfoOrganiser info);*/ + protected abstract void CreateWord(WordInfoGuarantor info); + protected abstract void CreateParagraph(WordParagraph paragraph); + protected abstract void SaveWord(WordInfoGuarantor info); } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/ExcelInfoGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/ExcelInfoGuarantor.cs index 0d2e1f4..3516b73 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/ExcelInfoGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/ExcelInfoGuarantor.cs @@ -1,4 +1,5 @@ -using System; +using LawCompanyContracts.ViewModels; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -10,6 +11,6 @@ namespace LawCompanyBusinessLogic.OfficePackage.HelperModels { public string FileName { get; set; } = string.Empty; public string Title { get; set; } = string.Empty; - //public List LawyerHearings { get; set; } = new(); + public List LawyerHearings { get; set; } = new(); } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/PdfInfoGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/PdfInfoGuarantor.cs index 6d015c0..ea47a77 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/PdfInfoGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/PdfInfoGuarantor.cs @@ -1,4 +1,5 @@ -using System; +using LawCompanyContracts.ViewModels; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -6,7 +7,12 @@ using System.Threading.Tasks; namespace LawCompanyBusinessLogic.OfficePackage.HelperModels { - internal class PdfInfoGuarantor + public class PdfInfoGuarantor { + public string FileName { get; set; } = "C:\\Reports\\pdffile.pdf"; + public string Title { get; set; } = string.Empty; + public DateTime DateFrom { get; set; } + public DateTime DateTo { get; set; } + public List Lawyers { get; set; } = new(); } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/WordInfoGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/WordInfoGuarantor.cs index b6c805e..332e69e 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/WordInfoGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/HelperModels/WordInfoGuarantor.cs @@ -1,4 +1,5 @@ -using System; +using LawCompanyContracts.ViewModels; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -6,7 +7,10 @@ using System.Threading.Tasks; namespace LawCompanyBusinessLogic.OfficePackage.HelperModels { - internal class WordInfoGuarantor + public class WordInfoGuarantor { + public string FileName { get; set; } = string.Empty; + public string Title { get; set; } = string.Empty; + public List LawyerHearings { get; set; } = new(); } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToExcelGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToExcelGuarantor.cs index 303d51f..522187d 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToExcelGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToExcelGuarantor.cs @@ -8,7 +8,7 @@ using DocumentFormat.OpenXml; namespace LawCompanyBusinessLogic.OfficePackage.Implements { - /*public class SaveToExcelGuarantor : AbstractSaveToExcelGuarantor + public class SaveToExcelGuarantor : AbstractSaveToExcelGuarantor { private SpreadsheetDocument? _spreadsheetDocument; private SharedStringTablePart? _shareStringPart; @@ -324,5 +324,5 @@ namespace LawCompanyBusinessLogic.OfficePackage.Implements _spreadsheetDocument.WorkbookPart!.Workbook.Save(); _spreadsheetDocument.Close(); } - }*/ + } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToPdfGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToPdfGuarantor.cs index f7624a9..04f1363 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToPdfGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToPdfGuarantor.cs @@ -1,12 +1,103 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using LawCompanyBusinessLogic.OfficePackage.HelperEnums; +using LawCompanyBusinessLogic.OfficePackage.HelperModels; +using MigraDoc.DocumentObjectModel; +using MigraDoc.Rendering; +using MigraDoc.DocumentObjectModel.Tables; + namespace LawCompanyBusinessLogic.OfficePackage.Implements { - internal class SaveToPdfGuarantor + public class SaveToPdfGuarantor : AbstractSaveToPdfGuarantor { + private Document? _document; + private Section? _section; + private Table? _table; + + private static ParagraphAlignment GetParagraphAlignment(PdfParagraphAlignmentType type) + { + return type switch + { + PdfParagraphAlignmentType.Center => ParagraphAlignment.Center, + PdfParagraphAlignmentType.Left => ParagraphAlignment.Left, + PdfParagraphAlignmentType.Rigth => ParagraphAlignment.Right, + _ => ParagraphAlignment.Justify, + }; + } + + private static void DefineStyles(Document document) + { + var style = document.Styles["Normal"]; + style.Font.Name = "Times New Roman"; + style.Font.Size = 14; + style = document.Styles.AddStyle("NormalTitle", "Normal"); + style.Font.Bold = true; + } + + protected override void CreateParagraph(PdfParagraph pdfParagraph) + { + if (_section == null) + { + return; + } + var paragraph = _section.AddParagraph(pdfParagraph.Text); + paragraph.Format.SpaceAfter = "1cm"; + paragraph.Format.Alignment = GetParagraphAlignment(pdfParagraph.ParagraphAlignment); + paragraph.Style = pdfParagraph.Style; + } + + protected override void CreatePdf(PdfInfoGuarantor info) + { + _document = new Document(); + DefineStyles(_document); + _section = _document.AddSection(); + } + + protected override void CreateRow(PdfRowParameters rowParameters) + { + if (_table == null) + { + return; + } + var row = _table.AddRow(); + for (int i = 0; i < rowParameters.Texts.Count; ++i) + { + row.Cells[i].AddParagraph(rowParameters.Texts[i]); + if (!string.IsNullOrEmpty(rowParameters.Style)) + { + row.Cells[i].Style = rowParameters.Style; + } + Unit borderWidth = 0.5; + row.Cells[i].Borders.Left.Width = borderWidth; + row.Cells[i].Borders.Right.Width = borderWidth; + row.Cells[i].Borders.Top.Width = borderWidth; + row.Cells[i].Borders.Bottom.Width = borderWidth; + row.Cells[i].Format.Alignment = GetParagraphAlignment(rowParameters.ParagraphAlignment); + row.Cells[i].VerticalAlignment = VerticalAlignment.Center; + } + } + + protected override void CreateTable(List columns) + { + if (_document == null) + { + return; + } + _table = _document.LastSection.AddTable(); + foreach (var elem in columns) + { + _table.AddColumn(elem); + } + } + + protected override void SavePdf(PdfInfoGuarantor info) + { + var renderer = new PdfDocumentRenderer(true) + { + Document = _document + }; + System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); + renderer.RenderDocument(); + renderer.PdfDocument.Save(info.FileName); + } } } diff --git a/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToWordGuarantor.cs b/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToWordGuarantor.cs index c19aa12..0659fcd 100644 --- a/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToWordGuarantor.cs +++ b/LawCompany/LawCompanyBusinessLogic/OfficePackage/Implements/SaveToWordGuarantor.cs @@ -1,4 +1,9 @@ -using System; +using DocumentFormat.OpenXml.Packaging; +using DocumentFormat.OpenXml.Wordprocessing; +using DocumentFormat.OpenXml; +using LawCompanyBusinessLogic.OfficePackage.HelperEnums; +using LawCompanyBusinessLogic.OfficePackage.HelperModels; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -6,7 +11,120 @@ using System.Threading.Tasks; namespace LawCompanyBusinessLogic.OfficePackage.Implements { - internal class SaveToWordGuarantor + public class SaveToWordGuarantor : AbstractSaveToWordGuarantor { + private WordprocessingDocument? _wordDocument; + private Body? _docBody; + + private static JustificationValues GetJustificationValues(WordJustificationType type) + { + return type switch + { + WordJustificationType.Both => JustificationValues.Both, + WordJustificationType.Center => JustificationValues.Center, + _ => JustificationValues.Left, + }; + } + + private static SectionProperties CreateSectionProperties() + { + var properties = new SectionProperties(); + var pageSize = new PageSize + { + Orient = PageOrientationValues.Portrait + }; + properties.AppendChild(pageSize); + return properties; + } + + private static ParagraphProperties? CreateParagraphProperties(WordTextProperties? paragraphProperties) + { + if (paragraphProperties == null) + { + return null; + } + + var properties = new ParagraphProperties(); + + properties.AppendChild(new Justification() + { + Val = GetJustificationValues(paragraphProperties.JustificationType) + }); + + properties.AppendChild(new SpacingBetweenLines + { + LineRule = LineSpacingRuleValues.Auto + }); + + properties.AppendChild(new Indentation()); + var paragraphMarkRunProperties = new ParagraphMarkRunProperties(); + + if (!string.IsNullOrEmpty(paragraphProperties.Size)) + { + paragraphMarkRunProperties.AppendChild(new FontSize + { + Val = paragraphProperties.Size + }); + } + + properties.AppendChild(paragraphMarkRunProperties); + + return properties; + } + + protected override void CreateParagraph(WordParagraph paragraph) + { + if (_docBody == null || paragraph == null) + { + return; + } + + var docParagraph = new Paragraph(); + + docParagraph.AppendChild(CreateParagraphProperties(paragraph.TextProperties)); + + foreach (var run in paragraph.Texts) + { + var docRun = new Run(); + var properties = new RunProperties(); + properties.AppendChild(new FontSize { Val = run.Item2.Size }); + + if (run.Item2.Bold) + { + properties.AppendChild(new Bold()); + } + + docRun.AppendChild(properties); + + docRun.AppendChild(new Text + { + Text = run.Item1, + Space = SpaceProcessingModeValues.Preserve + }); + + docParagraph.AppendChild(docRun); + } + _docBody.AppendChild(docParagraph); + } + + protected override void CreateWord(WordInfoGuarantor info) + { + _wordDocument = WordprocessingDocument.Create(info.FileName, WordprocessingDocumentType.Document); + MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart(); + mainPart.Document = new Document(); + _docBody = mainPart.Document.AppendChild(new Body()); + } + + protected override void SaveWord(WordInfoGuarantor info) + { + if (_docBody == null || _wordDocument == null) + { + return; + } + + _docBody.AppendChild(CreateSectionProperties()); + _wordDocument.MainDocumentPart!.Document.Save(); + _wordDocument.Close(); + } } } diff --git a/LawCompany/LawCompanyContracts/BindingModels/ConsultationBindingModel.cs b/LawCompany/LawCompanyContracts/BindingModels/ConsultationBindingModel.cs index c594fa1..fe8ab5f 100644 --- a/LawCompany/LawCompanyContracts/BindingModels/ConsultationBindingModel.cs +++ b/LawCompany/LawCompanyContracts/BindingModels/ConsultationBindingModel.cs @@ -7,7 +7,7 @@ namespace LawCompanyContracts.BindingModels public int Id { get; set; } public double Cost { get; set; } public DateTime ConsultationDate { get; set; } - public int CaseId { get; set; } + public int? CaseId { get; set; } public int GuarantorId { get; set; } public Dictionary ConsultationLawyers { get; set; } = new(); } diff --git a/LawCompany/LawCompanyContracts/BindingModels/ReportGuarantorBindingModel.cs b/LawCompany/LawCompanyContracts/BindingModels/ReportGuarantorBindingModel.cs index 2f357d6..2ad595c 100644 --- a/LawCompany/LawCompanyContracts/BindingModels/ReportGuarantorBindingModel.cs +++ b/LawCompany/LawCompanyContracts/BindingModels/ReportGuarantorBindingModel.cs @@ -9,7 +9,6 @@ namespace LawCompanyContracts.BindingModels public class ReportGuarantorBindingModel { public string FileName { get; set; } = string.Empty; - public string HearingName { get; set; } = string.Empty; public DateTime? DateFrom { get; set; } public DateTime? DateTo { get; set; } public List? Ids { get; set; } diff --git a/LawCompany/LawCompanyContracts/ViewModels/ConsultationViewModel.cs b/LawCompany/LawCompanyContracts/ViewModels/ConsultationViewModel.cs index f2138f2..9f30065 100644 --- a/LawCompany/LawCompanyContracts/ViewModels/ConsultationViewModel.cs +++ b/LawCompany/LawCompanyContracts/ViewModels/ConsultationViewModel.cs @@ -1,5 +1,6 @@ using LawCompanyDataModels.Models; using System.ComponentModel; +using System.Text.Json.Serialization; namespace LawCompanyContracts.ViewModels { @@ -11,11 +12,17 @@ namespace LawCompanyContracts.ViewModels public double Cost { get; set; } [DisplayName("Дата консультации")] public DateTime ConsultationDate { get; set; } - [DisplayName("Дело")] - public string CaseName { get; set; } = string.Empty; - public int CaseId { get; set; } + public int? CaseId { get; set; } public int GuarantorId { get; set; } public Dictionary ConsultationLawyers { get; set; } = new(); public CaseViewModel Case { get; set; } - } + + public ConsultationViewModel() { } + + [JsonConstructor] + public ConsultationViewModel(Dictionary ConsultationLawyers) + { + this.ConsultationLawyers = ConsultationLawyers.ToDictionary(x => x.Key, x => x.Value as ILawyerModel); + } + } } \ No newline at end of file diff --git a/LawCompany/LawCompanyContracts/ViewModels/ReportLawyerHearingViewModel.cs b/LawCompany/LawCompanyContracts/ViewModels/ReportLawyerHearingViewModel.cs index ac438d7..5683a8c 100644 --- a/LawCompany/LawCompanyContracts/ViewModels/ReportLawyerHearingViewModel.cs +++ b/LawCompany/LawCompanyContracts/ViewModels/ReportLawyerHearingViewModel.cs @@ -8,5 +8,7 @@ namespace LawCompanyContracts.ViewModels { public class ReportLawyerHearingViewModel { + public string FIO { get; set; } = string.Empty; + public List> Hearing { get; set; } = new(); } } diff --git a/LawCompany/LawCompanyContracts/ViewModels/ReportLawyersViewModel.cs b/LawCompany/LawCompanyContracts/ViewModels/ReportLawyersViewModel.cs index 2e78203..45f7399 100644 --- a/LawCompany/LawCompanyContracts/ViewModels/ReportLawyersViewModel.cs +++ b/LawCompany/LawCompanyContracts/ViewModels/ReportLawyersViewModel.cs @@ -1,4 +1,5 @@ -using System; +using LawCompanyDataModels.Enums; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,5 +9,13 @@ namespace LawCompanyContracts.ViewModels { public class ReportLawyersViewModel { + // клиент + public string FIO { get; set; } = string.Empty; + // дело + public string Name { get; set; } = string.Empty; + public CaseStatus Status { get; set; } = CaseStatus.Неизвестен; + // консультация + public DateTime ConsultationDate { get; set; } + public double Cost { get; set; } } } diff --git a/LawCompany/LawCompanyDataModels/Models/IConsultationModel.cs b/LawCompany/LawCompanyDataModels/Models/IConsultationModel.cs index b330211..c0c4ba9 100644 --- a/LawCompany/LawCompanyDataModels/Models/IConsultationModel.cs +++ b/LawCompany/LawCompanyDataModels/Models/IConsultationModel.cs @@ -7,7 +7,7 @@ namespace LawCompanyDataModels.Models Dictionary ConsultationLawyers { get; } double Cost { get; } DateTime ConsultationDate { get; } - public int CaseId { get; } + public int? CaseId { get; } public int GuarantorId { get; } } } diff --git a/LawCompany/LawCompanyDatabaseImplement/Implements/ConsultationStorage.cs b/LawCompany/LawCompanyDatabaseImplement/Implements/ConsultationStorage.cs index d803185..d682111 100644 --- a/LawCompany/LawCompanyDatabaseImplement/Implements/ConsultationStorage.cs +++ b/LawCompany/LawCompanyDatabaseImplement/Implements/ConsultationStorage.cs @@ -9,36 +9,23 @@ namespace LawCompanyDatabaseImplement.Implements { public class ConsultationStorage : IConsultationStorage { - public List GetFullList() - { - using var context = new LawCompanyDatabase(); - return context.Consultations - .Include(x => x.Lawyers) - .ThenInclude(x => x.Lawyer) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - public List GetFilteredList(ConsultationSearchModel model) - { - if (!model.Id.HasValue && !model.GuarantorId.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue - && !model.ConsultationDate.HasValue && !model.CaseId.HasValue) + public List GetFullList() + { + using var context = new LawCompanyDatabase(); + return context.Consultations + .Include(x => x.Lawyers) + .ThenInclude(x => x.Lawyer) + .ToList() + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(ConsultationSearchModel model) + { + if (!model.Id.HasValue && !model.GuarantorId.HasValue) { return new(); } - if (model.GuarantorId.HasValue && model.DateFrom.HasValue && model.DateTo.HasValue) - { - using var context = new LawCompanyDatabase(); - return context.Consultations - .Include(x => x.Lawyers) - .ThenInclude(x => x.Lawyer) - .Where(x => x.GuarantorId == model.GuarantorId && x.ConsultationDate >= model.DateFrom - && x.ConsultationDate <= model.DateTo) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - else if (model.GuarantorId.HasValue) + if (model.GuarantorId.HasValue) { using var context = new LawCompanyDatabase(); return context.Consultations @@ -48,91 +35,76 @@ namespace LawCompanyDatabaseImplement.Implements .Select(x => x.GetViewModel) .ToList(); } - else if (!model.DateFrom.HasValue || !model.DateTo.HasValue) - { - using var context = new LawCompanyDatabase(); - return context.Consultations - .Include(x => x.Lawyers) - .ThenInclude(x => x.Lawyer) - .Where(x => x.Id == model.Id) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } else { using var context = new LawCompanyDatabase(); return context.Consultations .Include(x => x.Lawyers) .ThenInclude(x => x.Lawyer) - .Where(x => x.ConsultationDate >= model.DateFrom && x.ConsultationDate <= model.DateTo) - .ToList() + .Where(x => x.Id == model.Id) .Select(x => x.GetViewModel) .ToList(); } + } - public ConsultationViewModel? GetElement(ConsultationSearchModel model) - { - if (!model.Id.HasValue && !model.GuarantorId.HasValue && !model.ConsultationDate.HasValue) - { - return null; - } - using var context = new LawCompanyDatabase(); - return context.Consultations. - Include(x => x.Lawyers). - ThenInclude(x => x.Lawyer) - .FirstOrDefault(x => (model.GuarantorId.HasValue && x.GuarantorId == model.GuarantorId) - || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; - } - public ConsultationViewModel? Insert(ConsultationBindingModel model) - { - using var context = new LawCompanyDatabase(); - var newConsultation = Consultation.Create(context, model); - if (newConsultation == null) - { - return null; - } - context.Consultations.Add(newConsultation); - context.SaveChanges(); - return newConsultation.GetViewModel; - } - public ConsultationViewModel? Update(ConsultationBindingModel model) - { - using var context = new LawCompanyDatabase(); - using var transaction = context.Database.BeginTransaction(); - try - { - var consultation = context.Consultations.FirstOrDefault(rec => - rec.Id == model.Id); - if (consultation == null) - { - return null; - } - consultation.Update(model); - context.SaveChanges(); - consultation.UpdateLawyers(context, model); - transaction.Commit(); - return consultation.GetViewModel; - } - catch - { - transaction.Rollback(); - throw; - } - } - public ConsultationViewModel? Delete(ConsultationBindingModel model) - { - using var context = new LawCompanyDatabase(); - var element = context.Consultations - .Include(x => x.Lawyers) - .FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - context.Consultations.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - return null; - } - } + public ConsultationViewModel? GetElement(ConsultationSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + using var context = new LawCompanyDatabase(); + return context.Consultations + .Include(x => x.Lawyers) + .ThenInclude(x => x.Lawyer) + .FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))? + .GetViewModel; + } + public ConsultationViewModel? Insert(ConsultationBindingModel model) + { + using var context = new LawCompanyDatabase(); + var newConsult = Consultation.Create(context, model); + if (newConsult == null) + { + return null; + } + context.Consultations.Add(newConsult); + context.SaveChanges(); + return newConsult.GetViewModel; + } + public ConsultationViewModel? Update(ConsultationBindingModel model) + { + using var context = new LawCompanyDatabase(); + using var transaction = context.Database.BeginTransaction(); + try + { + var consult = context.Consultations.FirstOrDefault(rec => rec.Id == model.Id); + if (consult == null) + { + return null; + } + consult.Update(model); + context.SaveChanges(); + consult.UpdateLawyers(context, model); + transaction.Commit(); + return consult.GetViewModel; + } + catch + { + throw; + } + } + public ConsultationViewModel? Delete(ConsultationBindingModel model) + { + using var context = new LawCompanyDatabase(); + var element = context.Consultations.Include(x => x.Lawyers).FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + context.Consultations.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + return null; + } + } } diff --git a/LawCompany/LawCompanyDatabaseImplement/Implements/HearingStorage.cs b/LawCompany/LawCompanyDatabaseImplement/Implements/HearingStorage.cs index 10a3c8d..413c600 100644 --- a/LawCompany/LawCompanyDatabaseImplement/Implements/HearingStorage.cs +++ b/LawCompany/LawCompanyDatabaseImplement/Implements/HearingStorage.cs @@ -100,30 +100,31 @@ namespace LawCompanyDatabaseImplement.Implements using var transaction = context.Database.BeginTransaction(); try { - var _case = context.Hearings.FirstOrDefault(rec => - rec.Id == model.Id); + var _case = context.Hearings.FirstOrDefault(rec => rec.Id == model.Id); if (_case == null) { return null; } _case.Update(model); context.SaveChanges(); - _case.UpdateLawyers(context, model); + if (model.HearingLawyers != null) + { + _case.UpdateLawyers(context, model); + } - transaction.Commit(); + transaction.Commit(); return _case.GetViewModel; } catch { - throw; + transaction.Rollback(); + throw; } } public HearingViewModel? Delete(HearingBindingModel model) { using var context = new LawCompanyDatabase(); - var element = context.Hearings - .Include(x => x.Lawyers) - .FirstOrDefault(rec => rec.Id == model.Id); + var element = context.Hearings.Include(x => x.Lawyers).FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { context.Hearings.Remove(element); diff --git a/LawCompany/LawCompanyDatabaseImplement/Implements/VisitStorage.cs b/LawCompany/LawCompanyDatabaseImplement/Implements/VisitStorage.cs index ca75e74..6acece2 100644 --- a/LawCompany/LawCompanyDatabaseImplement/Implements/VisitStorage.cs +++ b/LawCompany/LawCompanyDatabaseImplement/Implements/VisitStorage.cs @@ -39,7 +39,8 @@ namespace LawCompanyDatabaseImplement.Implements { using var context = new LawCompanyDatabase(); return context.Visits - .Include(x => x.Clients).ThenInclude(x => x.Client) + .Include(x => x.Clients) + .ThenInclude(x => x.Client) .Where(x => x.ExecutorId == model.ExecutorId) .Select(x => x.GetViewModel) .ToList(); diff --git a/LawCompany/LawCompanyDatabaseImplement/LawCompanyDatabase.cs b/LawCompany/LawCompanyDatabaseImplement/LawCompanyDatabase.cs index 48cda4b..2f968ef 100644 --- a/LawCompany/LawCompanyDatabaseImplement/LawCompanyDatabase.cs +++ b/LawCompany/LawCompanyDatabaseImplement/LawCompanyDatabase.cs @@ -15,8 +15,8 @@ namespace LawCompanyDatabaseImplement { if (optionsBuilder.IsConfigured == false) { - optionsBuilder.UseSqlServer(@"Data Source=LAPTOP-6GNIALH9\SQLEXPRESS;Initial Catalog=LawCompanyDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); - //optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-H8060U3\SQLEXPRESS;Initial Catalog=LawCompanyDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); + //optionsBuilder.UseSqlServer(@"Data Source=LAPTOP-6GNIALH9\SQLEXPRESS;Initial Catalog=LawCompanyDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); + optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-7DB3VEN\SQLEXPRESS;Initial Catalog=Test1;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); } base.OnConfiguring(optionsBuilder); } diff --git a/LawCompany/LawCompanyDatabaseImplement/Migrations/20240526230043_test.Designer.cs b/LawCompany/LawCompanyDatabaseImplement/Migrations/20240526230043_test.Designer.cs new file mode 100644 index 0000000..d4ee6de --- /dev/null +++ b/LawCompany/LawCompanyDatabaseImplement/Migrations/20240526230043_test.Designer.cs @@ -0,0 +1,540 @@ +// +using System; +using LawCompanyDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace LawCompanyDatabaseImplement.Migrations +{ + [DbContext(typeof(LawCompanyDatabase))] + [Migration("20240526230043_test")] + partial class test + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.17") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Case", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("ExecutorId") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExecutorId"); + + b.ToTable("Cases"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.CaseClient", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CaseId") + .HasColumnType("int"); + + b.Property("ClientId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CaseId"); + + b.HasIndex("ClientId"); + + b.ToTable("CaseClients"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutorId") + .HasColumnType("int"); + + b.Property("FIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ExecutorId"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Consultation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CaseId") + .IsRequired() + .HasColumnType("int"); + + b.Property("ConsultationDate") + .HasColumnType("datetime2"); + + b.Property("Cost") + .HasColumnType("float"); + + b.Property("GuarantorId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CaseId"); + + b.HasIndex("GuarantorId"); + + b.ToTable("Consultations"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.ConsultationLawyer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConsultationId") + .HasColumnType("int"); + + b.Property("LawyerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ConsultationId"); + + b.HasIndex("LawyerId"); + + b.ToTable("ConsultationLawyers"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Executor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Executors"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Guarantor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Guarantors"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Hearing", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("GuarantorId") + .HasColumnType("int"); + + b.Property("HearingDate") + .HasColumnType("datetime2"); + + b.Property("Judge") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("GuarantorId"); + + b.ToTable("Hearings"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.HearingLawyer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("HearingId") + .HasColumnType("int"); + + b.Property("LawyerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("HearingId"); + + b.HasIndex("LawyerId"); + + b.ToTable("HearingLawyers"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Lawyer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("GuarantorId") + .HasColumnType("int"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("GuarantorId"); + + b.ToTable("Lawyers"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Visit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExecutorId") + .HasColumnType("int"); + + b.Property("HearingId") + .HasColumnType("int"); + + b.Property("VisitDate") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("ExecutorId"); + + b.HasIndex("HearingId"); + + b.ToTable("Visits"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.VisitClient", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("VisitId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("VisitId"); + + b.ToTable("VisitClients"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Case", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Executor", null) + .WithMany("Cases") + .HasForeignKey("ExecutorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.CaseClient", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Case", "Case") + .WithMany("Clients") + .HasForeignKey("CaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LawCompanyDatabaseImplement.Models.Client", "Client") + .WithMany("CaseClients") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Case"); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Client", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Executor", "Executor") + .WithMany("Clients") + .HasForeignKey("ExecutorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Executor"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Consultation", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Case", "Case") + .WithMany() + .HasForeignKey("CaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LawCompanyDatabaseImplement.Models.Guarantor", null) + .WithMany("Consultations") + .HasForeignKey("GuarantorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Case"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.ConsultationLawyer", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Consultation", "Consultation") + .WithMany("Lawyers") + .HasForeignKey("ConsultationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LawCompanyDatabaseImplement.Models.Lawyer", "Lawyer") + .WithMany("ConsultationLawyers") + .HasForeignKey("LawyerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Consultation"); + + b.Navigation("Lawyer"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Hearing", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Guarantor", null) + .WithMany("Hearings") + .HasForeignKey("GuarantorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.HearingLawyer", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Hearing", "Hearing") + .WithMany("Lawyers") + .HasForeignKey("HearingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LawCompanyDatabaseImplement.Models.Lawyer", "Lawyer") + .WithMany("HearingLawyers") + .HasForeignKey("LawyerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Hearing"); + + b.Navigation("Lawyer"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Lawyer", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Guarantor", null) + .WithMany("Lawyers") + .HasForeignKey("GuarantorId"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Visit", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Executor", null) + .WithMany("Visits") + .HasForeignKey("ExecutorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LawCompanyDatabaseImplement.Models.Hearing", "Hearing") + .WithMany() + .HasForeignKey("HearingId"); + + b.Navigation("Hearing"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.VisitClient", b => + { + b.HasOne("LawCompanyDatabaseImplement.Models.Client", "Client") + .WithMany("ClientVisits") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LawCompanyDatabaseImplement.Models.Visit", "Visit") + .WithMany("Clients") + .HasForeignKey("VisitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Visit"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Case", b => + { + b.Navigation("Clients"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Client", b => + { + b.Navigation("CaseClients"); + + b.Navigation("ClientVisits"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Consultation", b => + { + b.Navigation("Lawyers"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Executor", b => + { + b.Navigation("Cases"); + + b.Navigation("Clients"); + + b.Navigation("Visits"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Guarantor", b => + { + b.Navigation("Consultations"); + + b.Navigation("Hearings"); + + b.Navigation("Lawyers"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Hearing", b => + { + b.Navigation("Lawyers"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Lawyer", b => + { + b.Navigation("ConsultationLawyers"); + + b.Navigation("HearingLawyers"); + }); + + modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Visit", b => + { + b.Navigation("Clients"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/LawCompany/LawCompanyDatabaseImplement/Migrations/20240526230043_test.cs b/LawCompany/LawCompanyDatabaseImplement/Migrations/20240526230043_test.cs new file mode 100644 index 0000000..29db7cd --- /dev/null +++ b/LawCompany/LawCompanyDatabaseImplement/Migrations/20240526230043_test.cs @@ -0,0 +1,410 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace LawCompanyDatabaseImplement.Migrations +{ + /// + public partial class test : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Executors", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + FIO = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + Password = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Executors", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Guarantors", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + FIO = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + Password = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Guarantors", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Cases", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(max)", nullable: false), + DateCreate = table.Column(type: "datetime2", nullable: false), + DateImplement = table.Column(type: "datetime2", nullable: true), + Status = table.Column(type: "int", nullable: false), + ExecutorId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Cases", x => x.Id); + table.ForeignKey( + name: "FK_Cases_Executors_ExecutorId", + column: x => x.ExecutorId, + principalTable: "Executors", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Clients", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + FIO = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + Phone = table.Column(type: "nvarchar(max)", nullable: false), + ExecutorId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Clients", x => x.Id); + table.ForeignKey( + name: "FK_Clients_Executors_ExecutorId", + column: x => x.ExecutorId, + principalTable: "Executors", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Hearings", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + HearingDate = table.Column(type: "datetime2", nullable: false), + Judge = table.Column(type: "nvarchar(max)", nullable: false), + GuarantorId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Hearings", x => x.Id); + table.ForeignKey( + name: "FK_Hearings_Guarantors_GuarantorId", + column: x => x.GuarantorId, + principalTable: "Guarantors", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Lawyers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + FIO = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + Phone = table.Column(type: "nvarchar(max)", nullable: false), + GuarantorId = table.Column(type: "int", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Lawyers", x => x.Id); + table.ForeignKey( + name: "FK_Lawyers_Guarantors_GuarantorId", + column: x => x.GuarantorId, + principalTable: "Guarantors", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "Consultations", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Cost = table.Column(type: "float", nullable: false), + ConsultationDate = table.Column(type: "datetime2", nullable: false), + CaseId = table.Column(type: "int", nullable: true), + GuarantorId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Consultations", x => x.Id); + table.ForeignKey( + name: "FK_Consultations_Cases_CaseId", + column: x => x.CaseId, + principalTable: "Cases", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Consultations_Guarantors_GuarantorId", + column: x => x.GuarantorId, + principalTable: "Guarantors", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CaseClients", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + CaseId = table.Column(type: "int", nullable: false), + ClientId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CaseClients", x => x.Id); + table.ForeignKey( + name: "FK_CaseClients_Cases_CaseId", + column: x => x.CaseId, + principalTable: "Cases", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CaseClients_Clients_ClientId", + column: x => x.ClientId, + principalTable: "Clients", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Visits", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + VisitDate = table.Column(type: "datetime2", nullable: false), + HearingId = table.Column(type: "int", nullable: true), + ExecutorId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Visits", x => x.Id); + table.ForeignKey( + name: "FK_Visits_Executors_ExecutorId", + column: x => x.ExecutorId, + principalTable: "Executors", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Visits_Hearings_HearingId", + column: x => x.HearingId, + principalTable: "Hearings", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "HearingLawyers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + HearingId = table.Column(type: "int", nullable: false), + LawyerId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HearingLawyers", x => x.Id); + table.ForeignKey( + name: "FK_HearingLawyers_Hearings_HearingId", + column: x => x.HearingId, + principalTable: "Hearings", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_HearingLawyers_Lawyers_LawyerId", + column: x => x.LawyerId, + principalTable: "Lawyers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ConsultationLawyers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ConsultationId = table.Column(type: "int", nullable: false), + LawyerId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ConsultationLawyers", x => x.Id); + table.ForeignKey( + name: "FK_ConsultationLawyers_Consultations_ConsultationId", + column: x => x.ConsultationId, + principalTable: "Consultations", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ConsultationLawyers_Lawyers_LawyerId", + column: x => x.LawyerId, + principalTable: "Lawyers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "VisitClients", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ClientId = table.Column(type: "int", nullable: false), + VisitId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_VisitClients", x => x.Id); + table.ForeignKey( + name: "FK_VisitClients_Clients_ClientId", + column: x => x.ClientId, + principalTable: "Clients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_VisitClients_Visits_VisitId", + column: x => x.VisitId, + principalTable: "Visits", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_CaseClients_CaseId", + table: "CaseClients", + column: "CaseId"); + + migrationBuilder.CreateIndex( + name: "IX_CaseClients_ClientId", + table: "CaseClients", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_Cases_ExecutorId", + table: "Cases", + column: "ExecutorId"); + + migrationBuilder.CreateIndex( + name: "IX_Clients_ExecutorId", + table: "Clients", + column: "ExecutorId"); + + migrationBuilder.CreateIndex( + name: "IX_ConsultationLawyers_ConsultationId", + table: "ConsultationLawyers", + column: "ConsultationId"); + + migrationBuilder.CreateIndex( + name: "IX_ConsultationLawyers_LawyerId", + table: "ConsultationLawyers", + column: "LawyerId"); + + migrationBuilder.CreateIndex( + name: "IX_Consultations_CaseId", + table: "Consultations", + column: "CaseId"); + + migrationBuilder.CreateIndex( + name: "IX_Consultations_GuarantorId", + table: "Consultations", + column: "GuarantorId"); + + migrationBuilder.CreateIndex( + name: "IX_HearingLawyers_HearingId", + table: "HearingLawyers", + column: "HearingId"); + + migrationBuilder.CreateIndex( + name: "IX_HearingLawyers_LawyerId", + table: "HearingLawyers", + column: "LawyerId"); + + migrationBuilder.CreateIndex( + name: "IX_Hearings_GuarantorId", + table: "Hearings", + column: "GuarantorId"); + + migrationBuilder.CreateIndex( + name: "IX_Lawyers_GuarantorId", + table: "Lawyers", + column: "GuarantorId"); + + migrationBuilder.CreateIndex( + name: "IX_VisitClients_ClientId", + table: "VisitClients", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_VisitClients_VisitId", + table: "VisitClients", + column: "VisitId"); + + migrationBuilder.CreateIndex( + name: "IX_Visits_ExecutorId", + table: "Visits", + column: "ExecutorId"); + + migrationBuilder.CreateIndex( + name: "IX_Visits_HearingId", + table: "Visits", + column: "HearingId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "CaseClients"); + + migrationBuilder.DropTable( + name: "ConsultationLawyers"); + + migrationBuilder.DropTable( + name: "HearingLawyers"); + + migrationBuilder.DropTable( + name: "VisitClients"); + + migrationBuilder.DropTable( + name: "Consultations"); + + migrationBuilder.DropTable( + name: "Lawyers"); + + migrationBuilder.DropTable( + name: "Clients"); + + migrationBuilder.DropTable( + name: "Visits"); + + migrationBuilder.DropTable( + name: "Cases"); + + migrationBuilder.DropTable( + name: "Hearings"); + + migrationBuilder.DropTable( + name: "Executors"); + + migrationBuilder.DropTable( + name: "Guarantors"); + } + } +} diff --git a/LawCompany/LawCompanyDatabaseImplement/Migrations/LawCompanyDatabaseModelSnapshot.cs b/LawCompany/LawCompanyDatabaseImplement/Migrations/LawCompanyDatabaseModelSnapshot.cs index f2bde67..4b92f50 100644 --- a/LawCompany/LawCompanyDatabaseImplement/Migrations/LawCompanyDatabaseModelSnapshot.cs +++ b/LawCompany/LawCompanyDatabaseImplement/Migrations/LawCompanyDatabaseModelSnapshot.cs @@ -114,7 +114,8 @@ namespace LawCompanyDatabaseImplement.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("CaseId") + b.Property("CaseId") + .IsRequired() .HasColumnType("int"); b.Property("ConsultationDate") diff --git a/LawCompany/LawCompanyDatabaseImplement/Models/Consultation.cs b/LawCompany/LawCompanyDatabaseImplement/Models/Consultation.cs index eb00572..4d3f022 100644 --- a/LawCompany/LawCompanyDatabaseImplement/Models/Consultation.cs +++ b/LawCompany/LawCompanyDatabaseImplement/Models/Consultation.cs @@ -15,11 +15,11 @@ namespace LawCompanyDatabaseImplement.Models [Required] public DateTime ConsultationDate { get; private set; } [Required] - public int CaseId { get; private set; } + public int? CaseId { get; private set; } public Case Case { get; private set; } public int GuarantorId { get; set; } - private Dictionary? _consultationLawyers = null; + private Dictionary _consultationLawyers = null; [ForeignKey("ConsultationId")] public virtual List Lawyers { get; set; } = new(); [NotMapped] @@ -30,9 +30,7 @@ namespace LawCompanyDatabaseImplement.Models if (_consultationLawyers == null) { using var context = new LawCompanyDatabase(); - _consultationLawyers = Lawyers - .ToDictionary(x => x.LawyerId, x => (context.Lawyers - .FirstOrDefault(y => y.Id == x.LawyerId) as ILawyerModel)); + _consultationLawyers = Lawyers.ToDictionary(x => x.LawyerId, x => (x.Lawyer as ILawyerModel)); } return _consultationLawyers; } @@ -54,7 +52,6 @@ namespace LawCompanyDatabaseImplement.Models 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 { @@ -81,34 +78,30 @@ namespace LawCompanyDatabaseImplement.Models Cost = Cost, ConsultationDate = ConsultationDate, CaseId = CaseId, - GuarantorId = GuarantorId, - ConsultationLawyers = ConsultationLawyers }; - public void UpdateLawyers(LawCompanyDatabase context, - ConsultationBindingModel model) + + public void UpdateLawyers(LawCompanyDatabase context, ConsultationBindingModel model) { - var consultationLawyers = context.ConsultationLawyers - .Where(rec => rec.ConsultationId == model.Id) - .ToList(); + 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.ConsultationLawyers.RemoveRange(consultationLawyers.Where(rec => !model.ConsultationLawyers.ContainsKey(rec.LawyerId))); context.SaveChanges(); - } + + foreach (var updateMember in consultationLawyers) + { + model.ConsultationLawyers.Remove(updateMember.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 { - context.ConsultationLawyers.Add(new ConsultationLawyer - { - Consultation = _consultation, - Lawyer = context.Lawyers.First(x => x.Id == pc.Key), - }); - } + Consultation = _consultation, + Lawyer = context.Lawyers.First(x => x.Id == pc.Key), + }); context.SaveChanges(); } _consultationLawyers = null; diff --git a/LawCompany/LawCompanyDatabaseImplement/Models/Hearing.cs b/LawCompany/LawCompanyDatabaseImplement/Models/Hearing.cs index 01ff90b..a92c8bd 100644 --- a/LawCompany/LawCompanyDatabaseImplement/Models/Hearing.cs +++ b/LawCompany/LawCompanyDatabaseImplement/Models/Hearing.cs @@ -16,7 +16,7 @@ namespace LawCompanyDatabaseImplement.Models [Required] public string Judge { get; private set; } = string.Empty; public int GuarantorId { get; set; } - private Dictionary? _hearingLawyers = null; + private Dictionary _hearingLawyers = null; [ForeignKey("HearingId")] public virtual List Lawyers { get; set; } = new(); [NotMapped] @@ -26,10 +26,7 @@ namespace LawCompanyDatabaseImplement.Models { if (_hearingLawyers == null) { - using var context = new LawCompanyDatabase(); - _hearingLawyers = Lawyers - .ToDictionary(x => x.LawyerId, x => (context.Lawyers - .FirstOrDefault(y => y.Id == x.LawyerId) as ILawyerModel)); + _hearingLawyers = Lawyers.ToDictionary(x => x.LawyerId, x => (x.Lawyer as ILawyerModel)); } return _hearingLawyers; } @@ -66,31 +63,33 @@ namespace LawCompanyDatabaseImplement.Models Id = Id, HearingDate = HearingDate, Judge = Judge, - GuarantorId = GuarantorId, - HearingLawyers = HearingLawyers + GuarantorId = GuarantorId }; public void UpdateLawyers(LawCompanyDatabase context, HearingBindingModel model) { - var hearingLawyer = context.HearingLawyers - .Where(rec => rec.HearingId == model.Id) - .ToList(); + 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.HearingLawyers.RemoveRange(hearingLawyer.Where(rec => !model.HearingLawyers.ContainsKey(rec.LawyerId))); context.SaveChanges(); - } + + foreach (var updateMember in hearingLawyer) + { + model.HearingLawyers.Remove(updateMember.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 { - context.HearingLawyers.Add(new HearingLawyer - { - Hearing = _hearing, - Lawyer = context.Lawyers.First(x => x.Id == pc.Key), - }); - } + Hearing = _hearing, + Lawyer = context.Lawyers.First(x => x.Id == pc.Key), + }); context.SaveChanges(); } _hearingLawyers = null; diff --git a/LawCompany/LawCompanyDatabaseImplement/Models/Lawyer.cs b/LawCompany/LawCompanyDatabaseImplement/Models/Lawyer.cs index d79d066..24b4f1e 100644 --- a/LawCompany/LawCompanyDatabaseImplement/Models/Lawyer.cs +++ b/LawCompany/LawCompanyDatabaseImplement/Models/Lawyer.cs @@ -3,7 +3,6 @@ using LawCompanyContracts.ViewModels; using LawCompanyDataModels.Models; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using System.ComponentModel.Design; namespace LawCompanyDatabaseImplement.Models { diff --git a/LawCompany/LawCompanyGuarantorApp/Controllers/ConsultationController.cs b/LawCompany/LawCompanyGuarantorApp/Controllers/ConsultationController.cs index 9d6c57a..81a3e51 100644 --- a/LawCompany/LawCompanyGuarantorApp/Controllers/ConsultationController.cs +++ b/LawCompany/LawCompanyGuarantorApp/Controllers/ConsultationController.cs @@ -1,12 +1,108 @@ -using Microsoft.AspNetCore.Mvc; +using LawCompanyContracts.BindingModels; +using LawCompanyContracts.SearchModels; +using LawCompanyContracts.ViewModels; +using LawCompanyDatabaseImplement.Models; +using LawCompanyDataModels.Models; +using Microsoft.AspNetCore.Mvc; namespace LawCompanyGuarantorApp.Controllers { public class ConsultationController : Controller { - public IActionResult Index() + [HttpGet] + public IActionResult ConsultationLawyers(int id) { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.GetRequest>($"api/consultation/getlawyerlisttoconsultation?conId={id}")); + } + + [HttpGet] + public IActionResult CreateConsultation() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Lawyers = APIClient.GetRequest>($"api/lawyer/GetLawyerList?guarantorId={APIClient.Guarantor.Id}"); return View(); } + + [HttpPost] + public void CreateConsultation(int cost, DateTime date, List clientselect) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + Dictionary client = new Dictionary(); + foreach (int members in clientselect) + { + client.Add(members, new LawyerSearchModel { Id = members } as ILawyerModel); + } + + APIClient.PostRequest("api/consultation/createconsultation", new ConsultationBindingModel + { + Cost = cost, + ConsultationDate = date, + ConsultationLawyers = client, + GuarantorId = APIClient.Guarantor.Id, + }); + Response.Redirect("/Home/Consultations"); + } + + [HttpGet] + public IActionResult UpdateConsultation() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Lawyers = APIClient.GetRequest>($"api/lawyer/GetLawyerList?guarantorId={APIClient.Guarantor.Id}"); + return View(); + } + + [HttpPost] + public void UpdateConsultation(int id, int cost, DateTime date, List clientselect) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + Dictionary client = new Dictionary(); + foreach (int members in clientselect) + { + client.Add(members, new LawyerSearchModel { Id = members } as ILawyerModel); + } + + APIClient.PostRequest("api/consultation/updateconsultation", new ConsultationBindingModel + { + Id = id, + Cost = cost, + ConsultationDate = date, + ConsultationLawyers = client, + GuarantorId = APIClient.Guarantor.Id, + }); + Response.Redirect("/Home/Consultations"); + } + + [HttpPost] + public void DeleteConsultation(int id) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + APIClient.PostRequest("api/consultation/deleteconsultation", new ConsultationBindingModel + { + Id = id + }); + Response.Redirect("/Home/Consultations"); + } } } \ No newline at end of file diff --git a/LawCompany/LawCompanyGuarantorApp/Controllers/HearingController.cs b/LawCompany/LawCompanyGuarantorApp/Controllers/HearingController.cs index a95a2e7..d60379f 100644 --- a/LawCompany/LawCompanyGuarantorApp/Controllers/HearingController.cs +++ b/LawCompany/LawCompanyGuarantorApp/Controllers/HearingController.cs @@ -1,12 +1,109 @@ -using Microsoft.AspNetCore.Mvc; +using LawCompanyContracts.BindingModels; +using LawCompanyContracts.SearchModels; +using LawCompanyContracts.ViewModels; +using LawCompanyDatabaseImplement.Models; +using LawCompanyDataModels.Models; +using Microsoft.AspNetCore.Mvc; namespace LawCompanyGuarantorApp.Controllers { public class HearingController : Controller { - public IActionResult Index() - { - return View(); - } - } + [HttpGet] + public IActionResult HearingLawyers(int id) + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.GetRequest>($"api/hearing/getlawyerlisttohearing?hearingId={id}")); + } + + [HttpGet] + public IActionResult CreateHearing() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Lawyers = APIClient.GetRequest>($"api/lawyer/GetLawyerList?guarantorId={APIClient.Guarantor.Id}"); + return View(); + } + + [HttpPost] + public void CreateHearing(DateTime date, string judge, List clientselect) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + Dictionary client = new Dictionary(); + foreach (int members in clientselect) + { + client.Add(members, new LawyerSearchModel { Id = members } as ILawyerModel); + } + + APIClient.PostRequest("api/hearing/createhearing", new HearingBindingModel + { + HearingDate = date, + Judge = judge, + HearingLawyers = client, + GuarantorId = APIClient.Guarantor.Id, + }); + Response.Redirect("/Home/Hearings"); + } + + [HttpGet] + public IActionResult UpdateHearing() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Lawyers = APIClient.GetRequest>($"api/lawyer/GetLawyerList?guarantorId={APIClient.Guarantor.Id}"); + return View(); + } + + [HttpPost] + public void UpdateHearing(int id, DateTime date, string judge, List clientselect) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + Dictionary client = new Dictionary(); + foreach (int members in clientselect) + { + client.Add(members, new LawyerSearchModel { Id = members } as ILawyerModel); + } + + APIClient.PostRequest("api/hearing/updatehearing", new HearingBindingModel + { + Id = id, + HearingDate = date, + Judge = judge, + HearingLawyers = client, + GuarantorId = APIClient.Guarantor.Id, + + }); + Response.Redirect("/Home/Hearings"); + } + + [HttpPost] + public void DeleteHearing(int id) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + APIClient.PostRequest("api/hearing/deletehearing", new HearingBindingModel + { + Id = id + }); + Response.Redirect("/Home/Hearings"); + } + } } \ No newline at end of file diff --git a/LawCompany/LawCompanyGuarantorApp/Controllers/HomeController.cs b/LawCompany/LawCompanyGuarantorApp/Controllers/HomeController.cs index a2510c1..169d1bf 100644 --- a/LawCompany/LawCompanyGuarantorApp/Controllers/HomeController.cs +++ b/LawCompany/LawCompanyGuarantorApp/Controllers/HomeController.cs @@ -1,4 +1,6 @@ -using LawCompanyGuarantorApp.Models; +using LawCompanyContracts.BindingModels; +using LawCompanyContracts.ViewModels; +using LawCompanyGuarantorApp.Models; using Microsoft.AspNetCore.Mvc; using System.Diagnostics; @@ -15,15 +17,151 @@ namespace LawCompanyGuarantorApp.Controllers public IActionResult Index() { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } return View(); } - public IActionResult Privacy() + public IActionResult Register() { return View(); } - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + [HttpPost] + public void Register(string fio, string email, string password) + { + if (string.IsNullOrEmpty(fio) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) + { + throw new Exception("Введите фио, почту и пароль"); + } + APIClient.PostRequest("api/guarantor/register", new ExecutorBindingModel + { + FIO = fio, + Email = email, + Password = password, + }); + + Response.Redirect("Enter"); + return; + } + + public IActionResult Enter() + { + return View(); + } + + [HttpPost] + public void Enter(string email, string password) + { + if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) + { + throw new Exception("Введите email и пароль"); + } + APIClient.Guarantor = APIClient.GetRequest($"api/guarantor/login?login={email}&password={password}"); + if (APIClient.Guarantor == null) + { + throw new Exception("Неверный логин/пароль"); + } + Response.Redirect("Index"); + } + + public IActionResult Privacy() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.Guarantor); + } + + [HttpPost] + public void Privacy(string fio, string email, string password) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); + } + if (string.IsNullOrEmpty(fio) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) + { + throw new Exception("Введите фио, почту и пароль"); + } + APIClient.PostRequest("api/guarantor/updatedata", new ExecutorBindingModel + { + Id = APIClient.Guarantor.Id, + FIO = fio, + Password = password, + Email = email, + }); + + APIClient.Guarantor.FIO = fio; + APIClient.Guarantor.Email = email; + APIClient.Guarantor.Password = password; + Response.Redirect("Index"); + } + + // СТРАНИЦЫ КОНСУЛЬТАЦИЙ + public IActionResult Consultations() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.GetRequest>($"api/consultation/GetConsultationList?guarantorId={APIClient.Guarantor.Id}")); + } + + // СТРАНИЦА СЛУШАНИЙ + public IActionResult Hearings() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.GetRequest>($"api/hearing/gethearinglist?guarantorId={APIClient.Guarantor.Id}")); + } + + // СТРАНИЦА ЮРИСТОВ + public IActionResult Lawyers() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.GetRequest>($"api/lawyer/getlawyerlist?guarantorId={APIClient.Guarantor.Id}")); + } + + public IActionResult ConsultationCase() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Cases = APIClient.GetRequest>($"api/case/GetCaseList?executorId={APIClient.Guarantor.Id}"); + ViewBag.Consultations = APIClient.GetRequest>($"api/consultation/getconsultationlist"); + return View(); + } + + [HttpPost] + public void ConsultationCase(int cases, int consultation) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); + } + var roomElem = APIClient.GetRequest($"api/Consultation/GetConsultation?id={consultation}"); + APIClient.PostRequest("api/Consultation/UpdateConsultation", new ConsultationBindingModel + { + Id = consultation, + GuarantorId = APIClient.Guarantor.Id, + Cost = roomElem.Cost, + ConsultationDate = roomElem.ConsultationDate, + CaseId = cases + }); + Response.Redirect("Visits"); + } + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); diff --git a/LawCompany/LawCompanyGuarantorApp/Controllers/LawyerController.cs b/LawCompany/LawCompanyGuarantorApp/Controllers/LawyerController.cs index bbf2f71..8ccd966 100644 --- a/LawCompany/LawCompanyGuarantorApp/Controllers/LawyerController.cs +++ b/LawCompany/LawCompanyGuarantorApp/Controllers/LawyerController.cs @@ -1,12 +1,81 @@ -using Microsoft.AspNetCore.Mvc; +using LawCompanyContracts.BindingModels; +using LawCompanyContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; namespace LawCompanyGuarantorApp.Controllers { public class LawyerController : Controller { - public IActionResult Index() - { - return View(); + [HttpGet] + public IActionResult CreateLawyer() + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + return View(); + } + [HttpPost] + public void CreateLawyer(string fio, string phone, string email) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + APIClient.PostRequest("api/lawyer/createlawyer", new LawyerBindingModel + { + FIO = fio, + Phone = phone, + Email = email, + GuarantorId = APIClient.Guarantor.Id, + }); + Response.Redirect("/Home/Lawyers"); + } + + [HttpPost] + public void DeleteLawyer(int id) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + APIClient.PostRequest("api/lawyer/deletelawyer", new LawyerBindingModel + { + Id = id + }); + Response.Redirect("/Home/Lawyers"); + } + + [HttpGet] + public IActionResult UpdateLawyer(int id) + { + if (APIClient.Guarantor == null) + { + return Redirect("~/Home/Enter"); + } + var lawyer = APIClient.GetRequest($"api/lawyer/GetLawyerById/{id}"); + return View(lawyer); } - } + + [HttpPost] + public void UpdateLawyer(int id, string fio, string email, string phone) + { + if (APIClient.Guarantor == null) + { + throw new Exception("Вы как суда попали? Суда вход только авторизованным"); + } + + APIClient.PostRequest("api/lawyer/updatelawyer", new LawyerBindingModel + { + Id = id, + FIO = fio, + Email = email, + Phone = phone, + GuarantorId = APIClient.Guarantor.Id, + }); + Response.Redirect("/Home/Lawyers"); + } + } } \ No newline at end of file diff --git a/LawCompany/LawCompanyGuarantorApp/LawCompanyGuarantorApp.csproj b/LawCompany/LawCompanyGuarantorApp/LawCompanyGuarantorApp.csproj index 0866581..3f0a4da 100644 --- a/LawCompany/LawCompanyGuarantorApp/LawCompanyGuarantorApp.csproj +++ b/LawCompany/LawCompanyGuarantorApp/LawCompanyGuarantorApp.csproj @@ -11,8 +11,10 @@ + + diff --git a/LawCompany/LawCompanyGuarantorApp/Program.cs b/LawCompany/LawCompanyGuarantorApp/Program.cs index 8f51513..1ede4a3 100644 --- a/LawCompany/LawCompanyGuarantorApp/Program.cs +++ b/LawCompany/LawCompanyGuarantorApp/Program.cs @@ -1,11 +1,25 @@ +using HotelBusinessLogic.BusinessLogics; +using LawCompanyBusinessLogic.BusinessLogics; +using LawCompanyBusinessLogic.OfficePackage.Implements; +using LawCompanyBusinessLogic.OfficePackage; +using LawCompanyContracts.BusinessLogicContracts; using LawCompanyContracts.StoragesContracts; using LawCompanyDatabaseImplement.Implements; using LawCompanyGuarantorApp; var builder = WebApplication.CreateBuilder(args); -builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); +builder.Services.AddTransient(); + +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); // Add services to the container. builder.Services.AddControllersWithViews(); @@ -14,12 +28,11 @@ var app = builder.Build(); APIClient.Connect(builder.Configuration); // Configure the HTTP request pipeline. -if (!app.Environment.IsDevelopment()) -{ - app.UseExceptionHandler("/Home/Error"); - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); -} + +app.UseExceptionHandler("/Home/Error"); +// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. +app.UseHsts(); + app.UseHttpsRedirection(); app.UseStaticFiles(); @@ -30,6 +43,6 @@ app.UseAuthorization(); app.MapControllerRoute( name: "default", - pattern: "{controller=Home}/{action=EnterGuarantor}/{id?}"); + pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run(); diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Consultation/CreateConsultation.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Consultation/CreateConsultation.cshtml index 884dc71..104ca31 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Consultation/CreateConsultation.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Consultation/CreateConsultation.cshtml @@ -1,6 +1,8 @@ -@{ +@using LawCompanyContracts.ViewModels; +@using LawCompanyDataModels.Models; + +@{ ViewData["Title"] = "Создание консультацию"; - Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; }
@@ -16,13 +18,17 @@
Дата и время
- +
-
-
Дело
+
- +
diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Consultation/UpdateConsultation.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Consultation/UpdateConsultation.cshtml index 1c8a333..49ce162 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Consultation/UpdateConsultation.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Consultation/UpdateConsultation.cshtml @@ -1,4 +1,8 @@ -@{ +@using LawCompanyContracts.ViewModels; +@using LawCompanyDataModels.Models; + + +@{ ViewData["Title"] = "Обновление консультации"; Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; } @@ -19,10 +23,14 @@
-
-
Дело
+
- +
diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Hearing/CreateHearing.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Hearing/CreateHearing.cshtml index 663944a..27d0b1b 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Hearing/CreateHearing.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Hearing/CreateHearing.cshtml @@ -1,4 +1,7 @@ -@{ +@using LawCompanyContracts.ViewModels; +@using LawCompanyDataModels.Models; + +@{ ViewData["Title"] = "Назначение слушания"; Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; } @@ -19,6 +22,16 @@
+
+
+ +
+
diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Hearing/HearingLawyers.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Hearing/HearingLawyers.cshtml index e2af95a..bb39e2c 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Hearing/HearingLawyers.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Hearing/HearingLawyers.cshtml @@ -2,7 +2,6 @@ @model List @{ ViewData["Title"] = "Юристы"; - Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; }

Юристы

@@ -36,20 +35,16 @@ { - @Html.DisplayFor(modelItem => - item.Id) + @Html.DisplayFor(modelItem => item.Id) - @Html.DisplayFor(modelItem => - item.FIO) + @Html.DisplayFor(modelItem => item.FIO) - @Html.DisplayFor(modelItem => - item.Email) + @Html.DisplayFor(modelItem => item.Email) - @Html.DisplayFor(modelItem => - item.Phone) + @Html.DisplayFor(modelItem => item.Phone) } diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Hearing/UpdateHearing.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Hearing/UpdateHearing.cshtml index 5500197..97d77cd 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Hearing/UpdateHearing.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Hearing/UpdateHearing.cshtml @@ -1,6 +1,8 @@ -@{ +@using LawCompanyContracts.ViewModels; +@using LawCompanyDataModels.Models; + +@{ ViewData["Title"] = "UpdateHearing"; - Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; }
@@ -19,6 +21,16 @@
+
+
+ +
+
diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Home/ConsultationCase.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Home/ConsultationCase.cshtml new file mode 100644 index 0000000..61de26c --- /dev/null +++ b/LawCompany/LawCompanyGuarantorApp/Views/Home/ConsultationCase.cshtml @@ -0,0 +1,22 @@ +@using LawCompanyContracts.ViewModels; + +@{ + ViewData["Title"] = "ConsultationCase"; +} + +
+

Связывание консультации и дела

+
+
+
+ + +
+
+ + +
+
+ +
+
diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Home/Consultations.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Home/Consultations.cshtml new file mode 100644 index 0000000..f424486 --- /dev/null +++ b/LawCompany/LawCompanyGuarantorApp/Views/Home/Consultations.cshtml @@ -0,0 +1,64 @@ +@using LawCompanyContracts.ViewModels +@model List +@{ + ViewData["Title"] = "Create Consultation"; +} +
+

Список консультаций

+
+
+ @{ +

+ Назначить консультацию +

+ + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + + } + +
+ Номер + + Стоимость консультации + + Дата консультации +
+ @Html.DisplayFor(modelItem => item.Id) + + @Html.DisplayFor(modelItem => item.Cost) + + @Html.DisplayFor(modelItem => item.ConsultationDate) + +
+ + +
+
+
+ + +
+
+
+ + +
+
+ } +
\ No newline at end of file diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Home/Enter.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Home/Enter.cshtml new file mode 100644 index 0000000..4ea0253 --- /dev/null +++ b/LawCompany/LawCompanyGuarantorApp/Views/Home/Enter.cshtml @@ -0,0 +1,21 @@ +@{ + ViewData["Title"] = "Enter"; + Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; +} +
+

Вход в приложение

+
+
+
+
Электронная почта:
+
+
+
+
Пароль:
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Home/Hearings.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Home/Hearings.cshtml index a8146d4..9b77798 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Home/Hearings.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Home/Hearings.cshtml @@ -2,7 +2,6 @@ @model List @{ ViewData["Title"] = "Create Hearing"; - Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; }

Список слушаний

@@ -11,7 +10,6 @@ @{

Назначить слушание - Добавить юристов к слушаниям

@@ -32,25 +30,31 @@ { } diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Home/Lawyers.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Home/Lawyers.cshtml index 39c5889..122b539 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Home/Lawyers.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Home/Lawyers.cshtml @@ -39,27 +39,29 @@ { + + + + + } diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Home/Privacy.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Home/Privacy.cshtml new file mode 100644 index 0000000..76d10a4 --- /dev/null +++ b/LawCompany/LawCompanyGuarantorApp/Views/Home/Privacy.cshtml @@ -0,0 +1,36 @@ +@{ + ViewData["Title"] = "Privacy Policy"; + Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; +} +
+

Личные данные

+
+ +
+
Электронная почта:
+
+ +
+
+
+
Пароль:
+
+ +
+
+
+
ФИО:
+
+ +
+
+
+
+
+ +
+
+ \ No newline at end of file diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Home/Register.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Home/Register.cshtml new file mode 100644 index 0000000..8f1cba7 --- /dev/null +++ b/LawCompany/LawCompanyGuarantorApp/Views/Home/Register.cshtml @@ -0,0 +1,28 @@ +@{ + ViewData["Title"] = "Register"; + Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; +} +
+

Регистрация поручителя

+
+ +
+
Электронная почта:
+
+
+
+
Пароль:
+
+
+
+
ФИО:
+
+
+
+
+
+ +
+
+ \ No newline at end of file diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Lawyer/CreateLawyer.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Lawyer/CreateLawyer.cshtml index 16c8aa4..88ea130 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Lawyer/CreateLawyer.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Lawyer/CreateLawyer.cshtml @@ -16,7 +16,7 @@
Номер телефона
- +
diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Lawyer/UpdateLawyer.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Lawyer/UpdateLawyer.cshtml index f9a12a5..3097375 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Lawyer/UpdateLawyer.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Lawyer/UpdateLawyer.cshtml @@ -1,4 +1,7 @@ -@{ +@using LawCompanyContracts.ViewModels +@model LawyerViewModel + +@{ ViewData["Title"] = "Обновить юриста"; Layout = "~/Views/Shared/_LayoutGuarantor.cshtml"; } @@ -6,29 +9,31 @@

Изменение юриста

-
-
-
ФИО
-
- -
-
-
-
Номер телефона
-
- -
-
-
-
E-mail
-
- -
-
-
-
-
- -
-
+ + +
+
ФИО
+
+ +
+
+
+
Номер телефона
+
+ +
+
+
+
E-mail
+
+ +
+
+
+
+
+ +
+
+ diff --git a/LawCompany/LawCompanyGuarantorApp/Views/Shared/_LayoutGuarantor.cshtml b/LawCompany/LawCompanyGuarantorApp/Views/Shared/_LayoutGuarantor.cshtml index 01d2b6c..842ddcc 100644 --- a/LawCompany/LawCompanyGuarantorApp/Views/Shared/_LayoutGuarantor.cshtml +++ b/LawCompany/LawCompanyGuarantorApp/Views/Shared/_LayoutGuarantor.cshtml @@ -20,25 +20,26 @@ diff --git a/LawCompany/LawCompanyRestApi/Controllers/ConsultationController.cs b/LawCompany/LawCompanyRestApi/Controllers/ConsultationController.cs index 92aa328..51e9ce0 100644 --- a/LawCompany/LawCompanyRestApi/Controllers/ConsultationController.cs +++ b/LawCompany/LawCompanyRestApi/Controllers/ConsultationController.cs @@ -23,6 +23,7 @@ namespace LawCompanyRestApi.Controllers _lawyerlogic = lawyerLogic; } + [HttpGet] public List? GetConsultationList(int guarantorId) { @@ -40,6 +41,21 @@ namespace LawCompanyRestApi.Controllers } } + + [HttpGet("{id}")] + public ConsultationViewModel? GetConsultation(int id) + { + try + { + return _logic.ReadElement(new ConsultationSearchModel { Id = id, }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка продуктов"); + throw; + } + } + [HttpPost] public void CreateConsultation(ConsultationBindingModel model) { diff --git a/LawCompany/LawCompanyRestApi/Controllers/HearingController.cs b/LawCompany/LawCompanyRestApi/Controllers/HearingController.cs index 9671a63..6ffb20c 100644 --- a/LawCompany/LawCompanyRestApi/Controllers/HearingController.cs +++ b/LawCompany/LawCompanyRestApi/Controllers/HearingController.cs @@ -16,8 +16,7 @@ namespace LawCompanyRestApi.Controllers private readonly IHearingLogic _logic; private readonly ILawyerLogic _lawyerlogic; - public HearingController(IHearingLogic logic, ILogger - logger, ILawyerLogic lawyerlogic) + public HearingController(IHearingLogic logic, ILogger logger, ILawyerLogic lawyerlogic) { _logger = logger; _logic = logic; diff --git a/LawCompany/LawCompanyRestApi/Controllers/LawyerController.cs b/LawCompany/LawCompanyRestApi/Controllers/LawyerController.cs index 7e44f4a..cbc344c 100644 --- a/LawCompany/LawCompanyRestApi/Controllers/LawyerController.cs +++ b/LawCompany/LawCompanyRestApi/Controllers/LawyerController.cs @@ -34,6 +34,20 @@ namespace LawCompanyRestApi.Controllers } } + [HttpGet("{id}")] + public LawyerViewModel? GetLawyerById(int id) + { + try + { + return _logic.ReadElement(new LawyerSearchModel { Id = id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения данных клиента"); + throw; + } + } + [HttpPost] public void CreateLawyer(LawyerBindingModel model) { diff --git a/LawCompany/LawCompanyRestApi/appsettings.json b/LawCompany/LawCompanyRestApi/appsettings.json index 5949cde..f1495d8 100644 --- a/LawCompany/LawCompanyRestApi/appsettings.json +++ b/LawCompany/LawCompanyRestApi/appsettings.json @@ -11,6 +11,6 @@ "SmtpClientPort": "587", "PopHost": "pop.gmail.com", "PopPort": "995", - "MailLogin": "lab7yakobchuk@gmail.com", - "MailPassword": "scht ahjt fxmx tdpc" + "MailLogin": "laba46466@gmail.com", + "MailPassword": "iyin rgai wjdh ocmi" }
- @Html.DisplayFor(modelItem => - item.Id) + @Html.DisplayFor(modelItem => item.Id) - @Html.DisplayFor(modelItem => - item.HearingDate) + @Html.DisplayFor(modelItem => item.HearingDate) - @Html.DisplayFor(modelItem => - item.Judge) + @Html.DisplayFor(modelItem => item.Judge) - +
+ + +
- +
+ + +
- +
+ + +
- @Html.DisplayFor(modelItem => - item.Id) + @Html.DisplayFor(modelItem => item.Id) - @Html.DisplayFor(modelItem => - item.FIO) + @Html.DisplayFor(modelItem => item.FIO) - @Html.DisplayFor(modelItem => - item.Phone) + @Html.DisplayFor(modelItem => item.Phone) - @Html.DisplayFor(modelItem => - item.Email) + @Html.DisplayFor(modelItem => item.Email) - -
- +
+ + +