diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs index 7493913..aaa3db7 100644 --- a/LawFirm/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs @@ -50,9 +50,9 @@ namespace LawFirmBusinessLogic.BusinessLogics } public List GetClientsHearing(ReportBindingModel model) { - var clients = _clientStorage.GetFilteredList(new ClientSearchModel {Id = model.ClientId}); + var clients = _clientStorage.GetFilteredList(new ClientSearchModel {Id = model.ClientId, CompanyId = model.CompanyId}); var hearings = _hearingStorage.GetFullList(); - var cases = _caseStorage.GetFullList(); + var cases = _caseStorage.GetFilteredList(new CaseSearchModel { CompanyId = model.CompanyId}); var list = new List(); foreach (var client in clients) @@ -73,6 +73,8 @@ namespace LawFirmBusinessLogic.BusinessLogics { record.Hearings.Add(new(hear.Court, hear.HearingDate)); record.CaseName = cas.Name; + record.Court = hear.Court; + record.HearingDate = hear.HearingDate; } } @@ -127,7 +129,7 @@ namespace LawFirmBusinessLogic.BusinessLogics list.Add(new ReportClientsViewModel { Id = casId, - FIO = clients.FirstOrDefault(x => x.Id == 4).FIO , + FIO = clients.FirstOrDefault(x => x.Id == casId).FIO , CaseName = cas.Name, VisitDate = visit.VisitDate @@ -153,6 +155,7 @@ namespace LawFirmBusinessLogic.BusinessLogics { Id = model.LawyerId }); + //getfilteredlist var consultations = _consultationStorage.GetFullList(); var visits = _visitStorage.GetFullList(); foreach(var lawyer in lawyers) @@ -173,6 +176,8 @@ namespace LawFirmBusinessLogic.BusinessLogics if (visit.ConsultationId.Equals(consultation.Id)) { record.Visits.Add(visit.VisitDate); + //record.VisitDate= visit.VisitDate; + } } @@ -188,11 +193,12 @@ namespace LawFirmBusinessLogic.BusinessLogics public List GetConsultationHearing(ReportBindingModel model) { var list = new List(); + //getfiltered var lawyers = _lawyerStorage.GetFullList(); var consultations = _consultationStorage.GetFullList(); var visits = _visitStorage.GetFilteredList(new VisitSearchModel { - + DateFrom = model.DateFrom, DateTo = model.DateTo diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/UserLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/UserLogic.cs index d08e31d..6d661f0 100644 --- a/LawFirm/LawFirmBusinessLogic/BusinessLogics/UserLogic.cs +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/UserLogic.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace LawFirmBusinessLogic.BusinessLogics @@ -108,7 +109,11 @@ namespace LawFirmBusinessLogic.BusinessLogics throw new ArgumentNullException("Нет e-mail пользователя", nameof(model.Email)); } - if (string.IsNullOrEmpty(model.Password)) + if (!Regex.IsMatch(model.Email, @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*")) + { + throw new ArgumentException("Некорректно введен email ", nameof(model.Email)); + } + if (string.IsNullOrEmpty(model.Password)) { throw new ArgumentNullException("У пользователя не указан пароль", nameof(model.Password)); diff --git a/LawFirm/LawFirmBusinessLogic/MailWorker/AbstractMailWorker.cs b/LawFirm/LawFirmBusinessLogic/MailWorker/AbstractMailWorker.cs index 1572984..8dbfa07 100644 --- a/LawFirm/LawFirmBusinessLogic/MailWorker/AbstractMailWorker.cs +++ b/LawFirm/LawFirmBusinessLogic/MailWorker/AbstractMailWorker.cs @@ -1,4 +1,5 @@ using LawFirmContracts.BindingModels.Mails; +using LawFirmContracts.BusinessLogicContracts; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; @@ -10,16 +11,18 @@ namespace LawFirmBusinessLogic.MailWorker { public abstract class AbstractMailWorker { - protected string _mailLogin = string.Empty; - protected string _mailPassword = string.Empty; - protected string _smtpClientHost = string.Empty; - protected int _smtpClientPort; - protected string _popHost = string.Empty; - protected int _popPort; + protected string _mailLogin = "lab7rpp@gmail.com"; + protected string _mailPassword = "bzoh xhcm oecc glud"; + protected string _smtpClientHost = "smtp.gmail.com"; + protected int _smtpClientPort = 587; + protected string _popHost = "pop.gmail.com"; + protected int _popPort = 995; private readonly ILogger _logger; - public AbstractMailWorker(ILogger logger) + private readonly IUserLogic _userLogic; + public AbstractMailWorker(ILogger logger, IUserLogic userLogic) { _logger = logger; + _userLogic = userLogic; } public void MailConfig(MailConfigBindingModel config) @@ -56,6 +59,6 @@ namespace LawFirmBusinessLogic.MailWorker protected abstract Task SendMailAsync(MailSendInfoBindingModel info); - //ReceiveMailAsync(); + } } diff --git a/LawFirm/LawFirmBusinessLogic/MailWorker/MailKitWorker.cs b/LawFirm/LawFirmBusinessLogic/MailWorker/MailKitWorker.cs index 4eceedc..d08b5ad 100644 --- a/LawFirm/LawFirmBusinessLogic/MailWorker/MailKitWorker.cs +++ b/LawFirm/LawFirmBusinessLogic/MailWorker/MailKitWorker.cs @@ -7,12 +7,14 @@ using System.Net; using System.Text; using System.Threading.Tasks; using LawFirmContracts.BindingModels.Mails; +using System.Net.Mime; +using LawFirmContracts.BusinessLogicContracts; namespace LawFirmBusinessLogic.MailWorker { public class MailKitWorker: AbstractMailWorker { - public MailKitWorker(ILogger logger) : base(logger) { } + public MailKitWorker(ILogger logger, IUserLogic userLogic) : base(logger, userLogic) { } protected override async Task SendMailAsync(MailSendInfoBindingModel info) { @@ -26,7 +28,9 @@ namespace LawFirmBusinessLogic.MailWorker objMailMessage.Body = info.Text; objMailMessage.SubjectEncoding = Encoding.UTF8; objMailMessage.BodyEncoding = Encoding.UTF8; - + Attachment attachment = new Attachment("C:\\Users\\User\\Desktop\\универ\\2курс\\рпп\\второйсеместр\\Курсовая\\pdfclientsreport.pdf", new ContentType(MediaTypeNames.Application.Pdf)); + objMailMessage.Attachments.Add(attachment); + objSmtpClient.UseDefaultCredentials = false; objSmtpClient.EnableSsl = true; objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; diff --git a/LawFirm/LawFirmBusinessLogic/OfficePackages/AbstractSaveToExcelClientsHearing.cs b/LawFirm/LawFirmBusinessLogic/OfficePackages/AbstractSaveToExcelClientsHearing.cs index c3d0788..a15c7d7 100644 --- a/LawFirm/LawFirmBusinessLogic/OfficePackages/AbstractSaveToExcelClientsHearing.cs +++ b/LawFirm/LawFirmBusinessLogic/OfficePackages/AbstractSaveToExcelClientsHearing.cs @@ -46,7 +46,7 @@ namespace LawFirmBusinessLogic.OfficePackages { ColumnName = "B", RowIndex = rowIndex, - Text = hearing.Item1, + Text = hearing.Court, StyleInfo = ExcelStyleInfoType.TextWithBroder }); @@ -54,7 +54,7 @@ namespace LawFirmBusinessLogic.OfficePackages { ColumnName = "C", RowIndex = rowIndex, - Text = hearing.Item2.ToString(), + Text = hearing.HearingDate.ToString(), StyleInfo = ExcelStyleInfoType.TextWithBroder }); diff --git a/LawFirm/LawFirmClientApp/Controllers/ReportController.cs b/LawFirm/LawFirmClientApp/Controllers/ReportController.cs index cb004f5..5c41155 100644 --- a/LawFirm/LawFirmClientApp/Controllers/ReportController.cs +++ b/LawFirm/LawFirmClientApp/Controllers/ReportController.cs @@ -1,4 +1,5 @@ using LawFirmContracts.BindingModels; +using LawFirmContracts.BindingModels.Mails; using LawFirmContracts.ViewModels; using Microsoft.AspNetCore.Mvc; @@ -40,6 +41,34 @@ namespace LawFirmClientApp.Controllers CompanyId = APIClient.User.CompanyId }); } + [HttpPost] + + public void LoadReportClientsHearingWord(int clientId) + { + if (APIClient.User == null) + { + Redirect("~/Home/Enter"); + } + + APIClient.PostRequest($"api/report/saveclientswordfile", new ReportBindingModel + { + + CompanyId = APIClient.User.CompanyId, + ClientId = clientId + }); + } + [HttpGet] + + public IActionResult GetReportClientsHearing(int clientId) + { + ViewBag.Clients = APIClient.GetRequest>($"api/client/getclientlist?companyId={APIClient.User.CompanyId}"); + if (APIClient.User == null) + { + return Redirect("~/Home/Enter"); + } + + return View(APIClient.GetRequest>($"api/report/getclientsreporthearing?clientid={clientId}&companyId={APIClient.User.CompanyId}")); + } [HttpGet] public IActionResult LoadReportClients(DateTime dateFrom, DateTime dateTo, string a) @@ -63,7 +92,39 @@ namespace LawFirmClientApp.Controllers return View(APIClient.GetRequest>($"api/report/getclientsreport?datefrom={dateFrom}&dateTo={dateTo}&companyId={APIClient.User.CompanyId}")); } + + [HttpPost] + public void LoadReportClientsHearingExcel(int clientId) + { + if (APIClient.User == null) + { + Redirect("~/Home/Enter"); + } + APIClient.PostRequest($"api/report/saveclientsexcelfile", new ReportBindingModel + { + + CompanyId = APIClient.User.CompanyId, + ClientId = clientId + }); + } + [HttpPost] + public void SendClientsPdf(DateTime dateFrom, DateTime dateTo, string organiserEmail) + { + APIClient.PostRequest($"api/report/saveclientspdffile", new ReportBindingModel + { + DateFrom = dateFrom, + DateTo = dateTo, + CompanyId = APIClient.User.CompanyId + }); + APIClient.PostRequest("api/report/mailsend", new MailSendInfoBindingModel + { + MailAddress = "dimazhelovanov@gmail.com", + Subject = "Отчет по клиентам", + Text = "Отчет по клиентам с " + dateFrom.ToShortDateString() + " до " + dateTo.ToShortDateString() + }); + + } } } diff --git a/LawFirm/LawFirmClientApp/Views/Report/CreateReportClients.cshtml b/LawFirm/LawFirmClientApp/Views/Report/CreateReportClients.cshtml index e256db1..2ae608a 100644 --- a/LawFirm/LawFirmClientApp/Views/Report/CreateReportClients.cshtml +++ b/LawFirm/LawFirmClientApp/Views/Report/CreateReportClients.cshtml @@ -16,7 +16,8 @@
- + +
От
@@ -82,6 +83,7 @@ }
+ \ No newline at end of file diff --git a/LawFirm/LawFirmClientApp/Views/Report/GetReportClientsHearing.cshtml b/LawFirm/LawFirmClientApp/Views/Report/GetReportClientsHearing.cshtml new file mode 100644 index 0000000..3da4160 --- /dev/null +++ b/LawFirm/LawFirmClientApp/Views/Report/GetReportClientsHearing.cshtml @@ -0,0 +1,101 @@ +@using LawFirmContracts.ViewModels; + +@model List +@{ + ViewData["Title"] = "Отчёт по клиентам"; + Layout = "~/Views/Shared/_LayoutIspol.cshtml"; +} + + + +
+

Отчёт по клиентам

+
+
+ @{ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + + } + +
+ Имя клиента + + Дело + + Суд + + Дата слушания +
+ @Html.DisplayFor(modelItem => + item.ClientFIO) + + @Html.DisplayFor(modelItem => + item.CaseName) + + @Html.DisplayFor(modelItem => + item.Court) + + @Html.DisplayFor(modelItem => + item.HearingDate) +
+ } +
+ + \ No newline at end of file diff --git a/LawFirm/LawFirmClientApp/Views/Shared/_LayoutIspol.cshtml b/LawFirm/LawFirmClientApp/Views/Shared/_LayoutIspol.cshtml index b41d86b..09c18db 100644 --- a/LawFirm/LawFirmClientApp/Views/Shared/_LayoutIspol.cshtml +++ b/LawFirm/LawFirmClientApp/Views/Shared/_LayoutIspol.cshtml @@ -32,7 +32,10 @@ Личные данные +