diff --git a/LawFim/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs b/LawFim/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs index 93d5dac..9d5254a 100644 --- a/LawFim/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs +++ b/LawFim/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs @@ -167,11 +167,16 @@ namespace LawFirmBusinessLogic.BusinessLogics return list; } - public List GetConsultationHearing(ReportBindingModel model) + public List GetConsultationHearing(ReportConsultationHearingBindingModel model) { var list = new List(); var lawyers = _lawyerStorage.GetFilteredList(new LawyerSearchModel { GuarantorId = model.GuarantorId }); - var consultations = _consultationStorage.GetFilteredList(new ConsultationSearchModel { GuarantorId = model.GuarantorId }); + var consultations = _consultationStorage.GetFilteredList(new ConsultationSearchModel + { + GuarantorId = model.GuarantorId, + DateFrom = model.DateFrom, + DateTo = model.DateTo + }); var hearings = _hearingStorage.GetFilteredList(new HearingSearchModel { GuarantorId = model.GuarantorId, @@ -183,16 +188,15 @@ namespace LawFirmBusinessLogic.BusinessLogics var record = new ReportConsultationHearingViewModel { LawyerName = lawyer.FIO, - Consultation = new List<(int Id, double Price)>(), + Consultation = new List<(DateTime ConsultationDate, double Price)>(), Hearing = new List<(DateTime HearingDate, string Judge)>() - }; foreach (var consultation in consultations) { if (consultation.ConsultationLawyers.ContainsKey(lawyer.Id)) { - record.Consultation.Add(new(consultation.Id, consultation.Cost)); + record.Consultation.Add(new(consultation.ConsultationDate, consultation.Cost)); } } foreach (var hearing in hearings) @@ -259,14 +263,14 @@ namespace LawFirmBusinessLogic.BusinessLogics }); } - public void SaveConsultationHearingToPdfFile(ReportBindingModel model) + public void SaveConsultationHearingToPdfFile(ReportConsultationHearingBindingModel model) { _saveToPdfConsultationHearing.CreateDoc(new PDFConsultationHearingInfo { FileName = model.FileName, Title = "Отчёт по консультациям и слушаниям", - DateFrom = model.DateFrom!.Value, - DateTo = model.DateTo!.Value, + DateFrom = model.DateFrom, + DateTo = model.DateTo, ConsultationHearing = GetConsultationHearing(model) }); diff --git a/LawFim/LawFirmBusinessLogic/OfficePackages/AbstractSaveToPdfConsultationHearing.cs b/LawFim/LawFirmBusinessLogic/OfficePackages/AbstractSaveToPdfConsultationHearing.cs index f894c38..b8a1400 100644 --- a/LawFim/LawFirmBusinessLogic/OfficePackages/AbstractSaveToPdfConsultationHearing.cs +++ b/LawFim/LawFirmBusinessLogic/OfficePackages/AbstractSaveToPdfConsultationHearing.cs @@ -23,7 +23,7 @@ namespace LawFirmBusinessLogic.OfficePackages CreateTable(new List { "3cm", "5cm", "5cm" }); CreateRow(new PdfRowParameters { - Texts = new List { "Юрист", "Номер консультации", "Цена консультации" }, + Texts = new List { "Юрист", "Цена консультации", "Дата консультации" }, Style = "NormalTitle", ParagraphAlignment = PdfParagraphAlignmentType.Center }); @@ -40,7 +40,7 @@ namespace LawFirmBusinessLogic.OfficePackages foreach (var cons in ch.Consultation) CreateRow(new PdfRowParameters { - Texts = new List { " ", cons.Id.ToString(), cons.Price.ToString() }, + Texts = new List { " ", cons.Price.ToString() + " рублей", cons.ConsultationDate.ToShortDateString() }, Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Center }); diff --git a/LawFim/LawFirmContracts/BindingModels/ReportConsultationHearingBindingModel.cs b/LawFim/LawFirmContracts/BindingModels/ReportConsultationHearingBindingModel.cs new file mode 100644 index 0000000..8e15f27 --- /dev/null +++ b/LawFim/LawFirmContracts/BindingModels/ReportConsultationHearingBindingModel.cs @@ -0,0 +1,15 @@ +using LawFirmContracts.ViewModels; + +namespace LawFirmContracts.BindingModels +{ + public class ReportConsultationHearingBindingModel + { + public string FileName { get; set; } = string.Empty; + //public List Hearings { get; set; } = new(); + //public List Consultations { get; set; } = new(); + public DateTime DateFrom { get; set; } = DateTime.Now; + public DateTime DateTo { get; set; } = DateTime.Now; + public int? GuarantorId { get; set; } + //public string? Email { get; set; } + } +} diff --git a/LawFim/LawFirmContracts/BusinessLogicContracts/IReportLogic.cs b/LawFim/LawFirmContracts/BusinessLogicContracts/IReportLogic.cs index 4f3b7af..0f74a12 100644 --- a/LawFim/LawFirmContracts/BusinessLogicContracts/IReportLogic.cs +++ b/LawFim/LawFirmContracts/BusinessLogicContracts/IReportLogic.cs @@ -8,13 +8,13 @@ namespace LawFirmContracts.BusinessLogicContracts List GetClientsConsultation(ReportBindingModel model); List GetGetClients(ReportBindingModel model); List GetVisitLawyer(ReportBindingModel model); - List GetConsultationHearing(ReportBindingModel model); + List GetConsultationHearing(ReportConsultationHearingBindingModel model); void SaveClientsConsultationToWordFile(ReportBindingModel model); void SaveClientsConsultationToExcelFile(ReportBindingModel model); void SaveVisitLawyerToWordFile(ReportBindingModel model); void SaveVisitLawyerToExcelFile(ReportBindingModel model); - void SaveConsultationHearingToPdfFile(ReportBindingModel model); + void SaveConsultationHearingToPdfFile(ReportConsultationHearingBindingModel model); void SaveClientsToPdfFile(ReportBindingModel model); } } diff --git a/LawFim/LawFirmContracts/ViewModels/ReportConsultationHearingViewModel.cs b/LawFim/LawFirmContracts/ViewModels/ReportConsultationHearingViewModel.cs index 4f6d37a..91fad65 100644 --- a/LawFim/LawFirmContracts/ViewModels/ReportConsultationHearingViewModel.cs +++ b/LawFim/LawFirmContracts/ViewModels/ReportConsultationHearingViewModel.cs @@ -3,7 +3,7 @@ public class ReportConsultationHearingViewModel { public string LawyerName { get; set; } = string.Empty; - public List<(int Id, double Price)> Consultation { get; set; } = new(); + public List<(DateTime ConsultationDate, double Price)> Consultation { get; set; } = new(); public List<(DateTime HearingDate, string Judge)> Hearing { get; set; } = new(); } } diff --git a/LawFim/LawFirmRestApi/Controllers/ReportGuarantorController.cs b/LawFim/LawFirmRestApi/Controllers/ReportGuarantorController.cs new file mode 100644 index 0000000..46b1169 --- /dev/null +++ b/LawFim/LawFirmRestApi/Controllers/ReportGuarantorController.cs @@ -0,0 +1,107 @@ +using LawFirmBusinessLogic.BusinessLogics; +using LawFirmBusinessLogic.MailWorker; +using LawFirmContracts.BindingModels; +using LawFirmContracts.BindingModels.Mails; +using LawFirmContracts.BusinessLogicContracts; +using LawFirmContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; + +namespace LawFirmRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class ReportGuarantorController : Controller + { + private readonly ILogger _logger; + private readonly IReportLogic _reportLogic; + + private readonly AbstractMailWorker _mailWorker; + public ReportGuarantorController(ILogger logger, IReportLogic reportLogic, AbstractMailWorker abstractMailWorker) + { + _logger = logger; + _reportLogic = reportLogic; + _mailWorker = abstractMailWorker; + } + [HttpPost] + public void SaveConsultationHearingToPdfFile(ReportConsultationHearingBindingModel report) + { + try + { + _reportLogic.SaveConsultationHearingToPdfFile(new ReportConsultationHearingBindingModel + { + DateFrom = report.DateFrom, + DateTo = report.DateTo, + FileName = "D:\\CourseWork\\pdfConsultationHearingsReport.pdf", + GuarantorId = report.GuarantorId, + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + [HttpPost] + public void SaveVisitLawyerToWordFile(ReportBindingModel report) + { + try + { + _reportLogic.SaveVisitLawyerToWordFile(new ReportBindingModel { GuarantorId = report.GuarantorId, FileName = "D:\\CourseWork\\wordVisitLawyerReport.docx", ClientId = report.ClientId }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + [HttpPost] + public void SaveVisitLawyerToExcelFile(ReportBindingModel report) + { + try + { + _reportLogic.SaveVisitLawyerToExcelFile(new ReportBindingModel { GuarantorId = report.GuarantorId, FileName = "D:\\CourseWork\\excelVisitLawyerReport.xlsx", ClientId = report.ClientId }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + [HttpPost] + public void MailSend(MailSendInfoBindingModel report) + { + try + { + _mailWorker.MailSendAsync(new MailSendInfoBindingModel + { + MailAddress = report.MailAddress, + Subject = report.Subject, + Text = report.Text + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка отправки письма"); + throw; + } + } + [HttpGet] + public List GetVisitLawyerReport(DateTime dateFrom, DateTime dateTo, int guarantorId) + { + try + { + ReportBindingModel model = new(); + model.DateFrom = dateFrom; + model.DateTo = dateTo; + model.GuarantorId = guarantorId; + return _reportLogic.GetVisitLawyer(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + + } +}