From 312cccab9ca4e2b60585a5b9f7855cb5632b3982 Mon Sep 17 00:00:00 2001 From: maxnes3 <112558334+maxnes3@users.noreply.github.com> Date: Wed, 17 May 2023 23:28:43 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B0=D1=80=D1=83=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BB=D0=BB=D0=B5=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchModels/UserSearchModel.cs | 8 +- .../CaseAccountingRestApi.csproj | 6 + .../Controllers/CaseController.cs | 111 ++++++++++++++++++ .../Controllers/ContractController.cs | 85 ++++++++++++++ .../Controllers/DealController.cs | 85 ++++++++++++++ .../Controllers/UserController.cs | 65 ++++++++++ .../Controllers/WeatherForecastController.cs | 33 ------ .../CaseAccountingRestApi/Program.cs | 35 +++++- .../CaseAccountingRestApi/WeatherForecast.cs | 13 -- 9 files changed, 392 insertions(+), 49 deletions(-) create mode 100644 CaseAccounting/CaseAccountingRestApi/Controllers/CaseController.cs create mode 100644 CaseAccounting/CaseAccountingRestApi/Controllers/ContractController.cs create mode 100644 CaseAccounting/CaseAccountingRestApi/Controllers/DealController.cs create mode 100644 CaseAccounting/CaseAccountingRestApi/Controllers/UserController.cs delete mode 100644 CaseAccounting/CaseAccountingRestApi/Controllers/WeatherForecastController.cs delete mode 100644 CaseAccounting/CaseAccountingRestApi/WeatherForecast.cs diff --git a/CaseAccounting/CaseAccountingContracts/SearchModels/UserSearchModel.cs b/CaseAccounting/CaseAccountingContracts/SearchModels/UserSearchModel.cs index 7122c6d..3127700 100644 --- a/CaseAccounting/CaseAccountingContracts/SearchModels/UserSearchModel.cs +++ b/CaseAccounting/CaseAccountingContracts/SearchModels/UserSearchModel.cs @@ -9,5 +9,11 @@ namespace CaseAccountingContracts.SearchModels public class UserSearchModel { public int? Id { get; set; } - } + + public string? Login { get; set; } + + public string? Password { get; set; } + + public int? RoleId { get; set; } + } } diff --git a/CaseAccounting/CaseAccountingRestApi/CaseAccountingRestApi.csproj b/CaseAccounting/CaseAccountingRestApi/CaseAccountingRestApi.csproj index 60bf9ea..de3712e 100644 --- a/CaseAccounting/CaseAccountingRestApi/CaseAccountingRestApi.csproj +++ b/CaseAccounting/CaseAccountingRestApi/CaseAccountingRestApi.csproj @@ -10,4 +10,10 @@ + + + + + + diff --git a/CaseAccounting/CaseAccountingRestApi/Controllers/CaseController.cs b/CaseAccounting/CaseAccountingRestApi/Controllers/CaseController.cs new file mode 100644 index 0000000..e6b030d --- /dev/null +++ b/CaseAccounting/CaseAccountingRestApi/Controllers/CaseController.cs @@ -0,0 +1,111 @@ +using CaseAccountingContracts.BindingModels; +using CaseAccountingContracts.BusinessLogicContracts; +using CaseAccountingContracts.SearchModels; +using CaseAccountingContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; + +namespace CaseAccountingRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class CaseController : Controller + { + private readonly ICaseLogic _logic; + + public CaseController(ICaseLogic logic) + { + _logic = logic; + } + + [HttpGet] + public CaseViewModel? Get(int id) + { + try + { + return _logic.ReadElement(new CaseSearchModel { Id = id }); + } + catch (Exception) + { + throw; + } + } + + [HttpGet] + public List? GetAllByUser(int userId) + { + try + { + return _logic.ReadList(null); + } + catch (Exception) + { + throw; + } + } + + /*[HttpGet] + public List? GetMany(int userId, int page) + { + try + { + return _logic.ReadList(new CaseSearchModel { UserId = userId, PageNumber = page, PageSize = 10 }); + } + catch (Exception) + { + throw; + } + }*/ + + /*[HttpGet] + public int GetNumberOfPages(int userId) + { + try + { + return _studentLogic.GetNumberOfPages(userId); + } + catch (Exception ex) + { + throw; + } + }*/ + + [HttpPost] + public void Create(CaseBindingModel model) + { + try + { + _logic.Create(model); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Update(CaseBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Delete(CaseBindingModel model) + { + try + { + _logic.Delete(new() { Id = model.Id }); + } + catch (Exception) + { + throw; + } + } + } +} diff --git a/CaseAccounting/CaseAccountingRestApi/Controllers/ContractController.cs b/CaseAccounting/CaseAccountingRestApi/Controllers/ContractController.cs new file mode 100644 index 0000000..f9e8746 --- /dev/null +++ b/CaseAccounting/CaseAccountingRestApi/Controllers/ContractController.cs @@ -0,0 +1,85 @@ +using CaseAccountingContracts.BindingModels; +using CaseAccountingContracts.BusinessLogicContracts; +using CaseAccountingContracts.SearchModels; +using CaseAccountingContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; + +namespace CaseAccountingRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class ContractController : Controller + { + private readonly IContractLogic _logic; + + public ContractController(IContractLogic logic) + { + _logic = logic; + } + + [HttpGet] + public ContractViewModel? Get(int id) + { + try + { + return _logic.ReadElement(new ContractSearchModel { Id = id }); + } + catch (Exception) + { + throw; + } + } + + [HttpGet] + public List? GetAllByUser(int userId) + { + try + { + return _logic.ReadList(null); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Create(ContractBindingModel model) + { + try + { + _logic.Create(model); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Update(ContractBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Delete(ContractBindingModel model) + { + try + { + _logic.Delete(new() { Id = model.Id }); + } + catch (Exception) + { + throw; + } + } + } +} diff --git a/CaseAccounting/CaseAccountingRestApi/Controllers/DealController.cs b/CaseAccounting/CaseAccountingRestApi/Controllers/DealController.cs new file mode 100644 index 0000000..9e2a139 --- /dev/null +++ b/CaseAccounting/CaseAccountingRestApi/Controllers/DealController.cs @@ -0,0 +1,85 @@ +using CaseAccountingContracts.BindingModels; +using CaseAccountingContracts.BusinessLogicContracts; +using CaseAccountingContracts.SearchModels; +using CaseAccountingContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; + +namespace CaseAccountingRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class DealController : Controller + { + private readonly IDealLogic _logic; + + public DealController(IDealLogic logic) + { + _logic = logic; + } + + [HttpGet] + public DealViewModel? Get(int id) + { + try + { + return _logic.ReadElement(new DealSearchModel { Id = id }); + } + catch (Exception) + { + throw; + } + } + + [HttpGet] + public List? GetAllByUser(int userId) + { + try + { + return _logic.ReadList(null); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Create(DealBindingModel model) + { + try + { + _logic.Create(model); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Update(DealBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Delete(DealBindingModel model) + { + try + { + _logic.Delete(new() { Id = model.Id }); + } + catch (Exception) + { + throw; + } + } + } +} diff --git a/CaseAccounting/CaseAccountingRestApi/Controllers/UserController.cs b/CaseAccounting/CaseAccountingRestApi/Controllers/UserController.cs new file mode 100644 index 0000000..0f7a93e --- /dev/null +++ b/CaseAccounting/CaseAccountingRestApi/Controllers/UserController.cs @@ -0,0 +1,65 @@ +using CaseAccountingContracts.BindingModels; +using CaseAccountingContracts.BusinessLogicContracts; +using CaseAccountingContracts.SearchModels; +using CaseAccountingContracts.ViewModels; +using CaseAccountingDataBaseImplement.Models; +using Microsoft.AspNetCore.Mvc; + +namespace CaseAccountingRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class UserController : Controller + { + private readonly IUserLogic _logic; + + public UserController(IUserLogic logic) + { + _logic = logic; + } + + [HttpGet] + public UserViewModel? Login(string login, string password, Role role) + { + try + { + return _logic.ReadElement(new UserSearchModel + { + Login = login, + Password = password, + //Role = role + }); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void Register(UserBindingModel model) + { + try + { + _logic.Create(model); + } + catch (Exception) + { + throw; + } + } + + [HttpPost] + public void UpdateData(UserBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception) + { + throw; + } + } + } +} diff --git a/CaseAccounting/CaseAccountingRestApi/Controllers/WeatherForecastController.cs b/CaseAccounting/CaseAccountingRestApi/Controllers/WeatherForecastController.cs deleted file mode 100644 index 4427342..0000000 --- a/CaseAccounting/CaseAccountingRestApi/Controllers/WeatherForecastController.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace CaseAccountingRestApi.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(); - } - } -} \ No newline at end of file diff --git a/CaseAccounting/CaseAccountingRestApi/Program.cs b/CaseAccounting/CaseAccountingRestApi/Program.cs index d7a851e..308b4d2 100644 --- a/CaseAccounting/CaseAccountingRestApi/Program.cs +++ b/CaseAccounting/CaseAccountingRestApi/Program.cs @@ -1,11 +1,42 @@ +using CaseAccountingBusinessLogic.BusinessLogics; +using CaseAccountingContracts.BusinessLogicContracts; +using CaseAccountingContracts.StoragesContracts; +using CaseAccountingDataBaseImplement.Implements; +using Microsoft.OpenApi.Models; + var builder = WebApplication.CreateBuilder(args); +//builder.Logging.SetMinimumLevel(LogLevel.Trace); +//builder.Logging.AddLog4Net("log4net.config"); + // Add services to the container. +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 = "CaseAccountingRestApi", + Version = "v1" + }); +}); var app = builder.Build(); @@ -13,7 +44,7 @@ var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); - app.UseSwaggerUI(); + app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "CaseAccountingRestApi v1")); } app.UseHttpsRedirection(); diff --git a/CaseAccounting/CaseAccountingRestApi/WeatherForecast.cs b/CaseAccounting/CaseAccountingRestApi/WeatherForecast.cs deleted file mode 100644 index 831d89e..0000000 --- a/CaseAccounting/CaseAccountingRestApi/WeatherForecast.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace CaseAccountingRestApi -{ - 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; } - } -} \ No newline at end of file