From 50bad516a5bbae3b11fbca41ba94369fd415a9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=84=D1=8C=D1=8F=20=D0=AF=D0=BA=D0=BE=D0=B1?= =?UTF-8?q?=D1=87=D1=83=D0=BA?= Date: Thu, 2 May 2024 15:12:31 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=81=D1=82=20=D0=90=D0=BF=D0=B8?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B8=D1=82=D0=B5=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/CaseController.cs | 164 ++++++++++++++++++ .../Controllers/ClientController.cs | 82 +++++++++ .../Controllers/ExecutorController.cs | 73 ++++++++ .../Controllers/VisitController.cs | 133 ++++++++++++++ .../Controllers/WeatherForecastController.cs | 33 ---- .../LawCompanyRestApi.csproj | 1 + LawCompany/LawCompanyRestApi/Program.cs | 44 ++++- .../LawCompanyRestApi/WeatherForecast.cs | 13 -- LawCompany/LawCompanyRestApi/log4net.config | 16 ++ 9 files changed, 510 insertions(+), 49 deletions(-) create mode 100644 LawCompany/LawCompanyRestApi/Controllers/CaseController.cs create mode 100644 LawCompany/LawCompanyRestApi/Controllers/ClientController.cs create mode 100644 LawCompany/LawCompanyRestApi/Controllers/ExecutorController.cs create mode 100644 LawCompany/LawCompanyRestApi/Controllers/VisitController.cs delete mode 100644 LawCompany/LawCompanyRestApi/Controllers/WeatherForecastController.cs delete mode 100644 LawCompany/LawCompanyRestApi/WeatherForecast.cs create mode 100644 LawCompany/LawCompanyRestApi/log4net.config diff --git a/LawCompany/LawCompanyRestApi/Controllers/CaseController.cs b/LawCompany/LawCompanyRestApi/Controllers/CaseController.cs new file mode 100644 index 0000000..9bc3280 --- /dev/null +++ b/LawCompany/LawCompanyRestApi/Controllers/CaseController.cs @@ -0,0 +1,164 @@ +using LawCompanyContracts.BindingModels; +using LawCompanyContracts.BusinessLogicContracts; +using LawCompanyContracts.SearchModels; +using LawCompanyContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; +using System.ComponentModel.Design; + +namespace LawCompanyRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class CaseController : Controller + { + private readonly ILogger _logger; + private readonly ICaseLogic _logic; + private readonly IClientLogic _clientlogic; + + public CaseController(ICaseLogic logic, ILogger logger, IClientLogic clientlogic) + { + _logger = logger; + _logic = logic; + _clientlogic = clientlogic; + } + [HttpGet] + public List? GetCaseList(int executorId) + { + try + { + return _logic.ReadList(new CaseSearchModel + { + ExecutorId = executorId + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка продуктов"); + throw; + } + } + + [HttpPost] + public void CreateCase(CaseBindingModel model) + { + try + { + + _logic.CreateCase(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + + } + + [HttpPost] + public void UpdateCase(CaseBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + + } + + [HttpPost] + public void AnalysisCase(CaseBindingModel model) + { + try + { + //возможно переделаю метод + _logic.CaseAnalysis(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + + [HttpPost] + public void HearingCase(CaseBindingModel model) + { + try + { + //возможно переделаю метод + _logic.CaseHearing(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + + [HttpPost] + public void CloseCase(CaseBindingModel model) + { + try + { + + _logic.CloseCase(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + + [HttpPost] + public void DeleteCase(CaseBindingModel model) + { + try + { + + _logic.DeleteCase(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + + [HttpPost] + public void AddClientToCase(Tuple model) + { + try + { + + _logic.AddClientToCase(model.Item1, model.Item2); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + + [HttpGet] + public List? GetClientListToCase(int caseId) + { + try + { + return _clientlogic.ReadCaseElementList(new CaseSearchModel + { + Id = caseId + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка продуктов"); + throw; + } + } + } +} diff --git a/LawCompany/LawCompanyRestApi/Controllers/ClientController.cs b/LawCompany/LawCompanyRestApi/Controllers/ClientController.cs new file mode 100644 index 0000000..595272b --- /dev/null +++ b/LawCompany/LawCompanyRestApi/Controllers/ClientController.cs @@ -0,0 +1,82 @@ +using LawCompanyContracts.BindingModels; +using LawCompanyContracts.BusinessLogicContracts; +using LawCompanyContracts.SearchModels; +using LawCompanyContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; +using System.Diagnostics; + +namespace LawCompanyRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class ClientController : Controller + { + private readonly ILogger _logger; + private readonly IClientLogic _logic; + + public ClientController(IClientLogic logic, ILogger logger) + { + _logger = logger; + _logic = logic; + + } + + [HttpGet] + public List? GetClientList(int executorId) + { + try + { + return _logic.ReadList(new ClientSearchModel { ExecutorId = executorId }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка продуктов"); + throw; + } + } + + [HttpPost] + public void CreateClient(ClientBindingModel model) + { + + try + { + _logic.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + + } + + [HttpPost] + public void UpdateClient(ClientBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + + [HttpPost] + public void DeleteClient(ClientBindingModel model) + { + try + { + _logic.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + } +} diff --git a/LawCompany/LawCompanyRestApi/Controllers/ExecutorController.cs b/LawCompany/LawCompanyRestApi/Controllers/ExecutorController.cs new file mode 100644 index 0000000..b98174b --- /dev/null +++ b/LawCompany/LawCompanyRestApi/Controllers/ExecutorController.cs @@ -0,0 +1,73 @@ +using LawCompanyContracts.BindingModels; +using LawCompanyContracts.BusinessLogicContracts; +using LawCompanyContracts.SearchModels; +using LawCompanyContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; +using System.Diagnostics; + +namespace LawCompanyRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class ExecutorController : Controller + { + + private readonly ILogger _logger; + private readonly IExecutorLogic _logic; + + public ExecutorController(IExecutorLogic logic, ILogger logger) + { + _logger = logger; + _logic = logic; + + } + + [HttpGet] + public ExecutorViewModel? Login(string fio, string email, string password) + { + try + { + return _logic.ReadElement(new ExecutorSearchModel + { + FIO = fio, + Email = email, + Password = password, + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка входа в систему"); + throw; + } + } + + [HttpPost] + public void Register(ExecutorBindingModel model) + { + try + { + _logic.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка регистрации"); + throw; + } + + } + + [HttpPost] + public void UpdateData(ExecutorBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления данных"); + throw; + } + } + } +} diff --git a/LawCompany/LawCompanyRestApi/Controllers/VisitController.cs b/LawCompany/LawCompanyRestApi/Controllers/VisitController.cs new file mode 100644 index 0000000..79715d5 --- /dev/null +++ b/LawCompany/LawCompanyRestApi/Controllers/VisitController.cs @@ -0,0 +1,133 @@ +using LawCompanyContracts.BindingModels; +using LawCompanyContracts.BusinessLogicContracts; +using LawCompanyContracts.SearchModels; +using LawCompanyContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; + +namespace LawCompanyRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class VisitController : Controller + { + + private readonly ILogger _logger; + private readonly IVisitLogic _logic; + private readonly IClientLogic _clientlogic; + + + public VisitController(IVisitLogic logic, ILogger + logger, IClientLogic clientLogic) + { + _logger = logger; + _logic = logic; + _clientlogic = clientLogic; + + } + + + + + [HttpGet] + public List? GetVisitList(int executorId) + { + + try + { + return _logic.ReadList(new VisitSearchModel { ExecutorId = executorId }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка продуктов"); + throw; + } + } + + [HttpGet] + public VisitViewModel? GetVisit(int id) + { + try + { + return _logic.ReadElement(new VisitSearchModel { Id = id, }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка продуктов"); + throw; + } + } + + [HttpPost] + public void CreateVisit(VisitBindingModel model) + { + + try + { + _logic.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + + } + [HttpPost] + public void UpdateVisit(VisitBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + [HttpPost] + public void DeleteVisit(VisitBindingModel model) + { + try + { + _logic.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + [HttpPost] + public void AddClientToVisit(Tuple model) + { + try + { + var modelClient = _clientlogic.ReadElement(new ClientSearchModel { Id = model.Item2 }); + + if (modelClient != null) { _logic.AddClientToVisit(model.Item1, modelClient); } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + [HttpGet] + public List? GetClientListToVisit(int visitId) + { + try + { + return _clientlogic.ReadVisitElementList(new VisitSearchModel + { + Id = visitId + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка продуктов"); + throw; + } + } + } +} diff --git a/LawCompany/LawCompanyRestApi/Controllers/WeatherForecastController.cs b/LawCompany/LawCompanyRestApi/Controllers/WeatherForecastController.cs deleted file mode 100644 index 881b863..0000000 --- a/LawCompany/LawCompanyRestApi/Controllers/WeatherForecastController.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace LawCompanyRestApi.Controllers -{ - [ApiController] - [Route("[controller]")] - public class WeatherForecastController : ControllerBase - { - private static readonly string[] Summaries = new[] - { - "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" - }; - - private readonly ILogger _logger; - - public WeatherForecastController(ILogger logger) - { - _logger = logger; - } - - [HttpGet(Name = "GetWeatherForecast")] - public IEnumerable Get() - { - return Enumerable.Range(1, 5).Select(index => new WeatherForecast - { - Date = DateTime.Now.AddDays(index), - TemperatureC = Random.Shared.Next(-20, 55), - Summary = Summaries[Random.Shared.Next(Summaries.Length)] - }) - .ToArray(); - } - } -} diff --git a/LawCompany/LawCompanyRestApi/LawCompanyRestApi.csproj b/LawCompany/LawCompanyRestApi/LawCompanyRestApi.csproj index 204909b..3eef29c 100644 --- a/LawCompany/LawCompanyRestApi/LawCompanyRestApi.csproj +++ b/LawCompany/LawCompanyRestApi/LawCompanyRestApi.csproj @@ -11,6 +11,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/LawCompany/LawCompanyRestApi/Program.cs b/LawCompany/LawCompanyRestApi/Program.cs index d7a851e..a21ef5c 100644 --- a/LawCompany/LawCompanyRestApi/Program.cs +++ b/LawCompany/LawCompanyRestApi/Program.cs @@ -1,11 +1,49 @@ +using LawCompanyBusinessLogic.BusinessLogics; +using LawCompanyContracts.BusinessLogicContracts; +using LawCompanyContracts.StoragesContracts; +using LawCompanyDatabaseImplement.Implements; +using Microsoft.OpenApi.Models; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. +builder.Logging.SetMinimumLevel(LogLevel.Trace); +builder.Logging.AddLog4Net("log4net.config"); + + +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(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); + +builder.Services.AddTransient(); +builder.Services.AddTransient(); + builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); -builder.Services.AddSwaggerGen(); +builder.Services.AddSwaggerGen(c => c.SwaggerDoc("v1", new OpenApiInfo +{ + Title = "LawCompanyRestApi", + Version += "v1" +})); var app = builder.Build(); @@ -13,7 +51,7 @@ var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); - app.UseSwaggerUI(); + app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "LawCompanyRestApi v1")); } app.UseHttpsRedirection(); @@ -22,4 +60,4 @@ app.UseAuthorization(); app.MapControllers(); -app.Run(); +app.Run(); \ No newline at end of file diff --git a/LawCompany/LawCompanyRestApi/WeatherForecast.cs b/LawCompany/LawCompanyRestApi/WeatherForecast.cs deleted file mode 100644 index 81ec2ac..0000000 --- a/LawCompany/LawCompanyRestApi/WeatherForecast.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace LawCompanyRestApi -{ - public class WeatherForecast - { - public DateTime Date { get; set; } - - public int TemperatureC { get; set; } - - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - - public string? Summary { get; set; } - } -} diff --git a/LawCompany/LawCompanyRestApi/log4net.config b/LawCompany/LawCompanyRestApi/log4net.config new file mode 100644 index 0000000..ad42f3b --- /dev/null +++ b/LawCompany/LawCompanyRestApi/log4net.config @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file