From 2ef71093bd33d805d5b05a362e8dcc8d276f4e1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D1=8F=D1=87=D0=B5=D1=81=D0=BB=D0=B0=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Sun, 24 Mar 2024 14:46:34 +0400 Subject: [PATCH] HotelRestApi --- Hotel/Hotel.sln | 8 +- .../Controllers/HeadwaiterController.cs | 68 ++++++++++ .../Controllers/ReportController.cs | 118 ++++++++++++++++++ Hotel/HotelRestApi/HotelRestApi.csproj | 21 ++++ Hotel/HotelRestApi/Program.cs | 69 ++++++++++ .../Properties/launchSettings.json | 31 +++++ .../HotelRestApi/appsettings.Development.json | 8 ++ Hotel/HotelRestApi/appsettings.json | 9 ++ Hotel/HotelRestApi/log4net.config | 16 +++ 9 files changed, 347 insertions(+), 1 deletion(-) create mode 100644 Hotel/HotelRestApi/Controllers/HeadwaiterController.cs create mode 100644 Hotel/HotelRestApi/Controllers/ReportController.cs create mode 100644 Hotel/HotelRestApi/HotelRestApi.csproj create mode 100644 Hotel/HotelRestApi/Program.cs create mode 100644 Hotel/HotelRestApi/Properties/launchSettings.json create mode 100644 Hotel/HotelRestApi/appsettings.Development.json create mode 100644 Hotel/HotelRestApi/appsettings.json create mode 100644 Hotel/HotelRestApi/log4net.config diff --git a/Hotel/Hotel.sln b/Hotel/Hotel.sln index 8f0d85e..6beed54 100644 --- a/Hotel/Hotel.sln +++ b/Hotel/Hotel.sln @@ -11,7 +11,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HotelContracts", "HotelCont EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HotelDataBaseImplement", "HotelDataBaseImplement\HotelDataBaseImplement.csproj", "{3FAD978F-2155-4D65-963D-616F18ABA37F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HotelBusinessLogic", "HotelBusinessLogic\HotelBusinessLogic.csproj", "{6A77DCB6-60DC-4A2C-B259-578F1B547AF6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HotelBusinessLogic", "HotelBusinessLogic\HotelBusinessLogic.csproj", "{6A77DCB6-60DC-4A2C-B259-578F1B547AF6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HotelRestApi", "HotelRestApi\HotelRestApi.csproj", "{1FE967C0-64C0-4CEF-9DE4-3E00BA2B347D}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -39,6 +41,10 @@ Global {6A77DCB6-60DC-4A2C-B259-578F1B547AF6}.Debug|Any CPU.Build.0 = Debug|Any CPU {6A77DCB6-60DC-4A2C-B259-578F1B547AF6}.Release|Any CPU.ActiveCfg = Release|Any CPU {6A77DCB6-60DC-4A2C-B259-578F1B547AF6}.Release|Any CPU.Build.0 = Release|Any CPU + {1FE967C0-64C0-4CEF-9DE4-3E00BA2B347D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FE967C0-64C0-4CEF-9DE4-3E00BA2B347D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FE967C0-64C0-4CEF-9DE4-3E00BA2B347D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FE967C0-64C0-4CEF-9DE4-3E00BA2B347D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Hotel/HotelRestApi/Controllers/HeadwaiterController.cs b/Hotel/HotelRestApi/Controllers/HeadwaiterController.cs new file mode 100644 index 0000000..3f2ecd2 --- /dev/null +++ b/Hotel/HotelRestApi/Controllers/HeadwaiterController.cs @@ -0,0 +1,68 @@ +using HotelContracts.BindingModels; +using HotelContracts.BusinessLogicsContracts; +using HotelContracts.SearchModels; +using HotelContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; + +namespace HotelRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class HeadwaiterController : Controller + { + private readonly ILogger _logger; + private readonly IHeadwaiterLogic _logic; + + public HeadwaiterController(IHeadwaiterLogic logic, ILogger logger) + { + _logger = logger; + _logic = logic; + } + + [HttpGet] + public HeadwaiterViewModel? Login(string login, string password) + { + try + { + return _logic.ReadElement(new HeadwaiterSearchModel + { + HeadwaiterEmail = login, + HeadwaiterPassword = password + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка входа в систему"); + throw; + } + } + + [HttpPost] + public void Register(HeadwaiterBindingModel model) + { + try + { + _logic.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка регистрации"); + throw; + } + } + + [HttpPost] + public void UpdateData(HeadwaiterBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления данных"); + throw; + } + } + } +} diff --git a/Hotel/HotelRestApi/Controllers/ReportController.cs b/Hotel/HotelRestApi/Controllers/ReportController.cs new file mode 100644 index 0000000..e59f2a8 --- /dev/null +++ b/Hotel/HotelRestApi/Controllers/ReportController.cs @@ -0,0 +1,118 @@ +using HotelContracts.BindingModels; +using HotelContracts.BusinessLogicsContracts; +using Microsoft.AspNetCore.Mvc; + +namespace HotelRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class ReportController : Controller + { + private readonly ILogger _logger; + private readonly IReportOrganiserLogic _reportOrganiserLogic; + private readonly IReportHeadwaiterLogic _reportHeadwaiterLogic; + + public ReportController(ILogger logger, IReportOrganiserLogic reportOrganiserLogic, IReportHeadwaiterLogic reportHeadwaiterLogic) + { + _logger = logger; + _reportOrganiserLogic = reportOrganiserLogic; + _reportHeadwaiterLogic = reportHeadwaiterLogic; + } + + [HttpPost] + public void CreateOrganiserReportToPdfFile(ReportOrganiserBindingModel model) + { + try + { + _reportOrganiserLogic.SaveMembersToPdfFile(new ReportOrganiserBindingModel + { + DateFrom = model.DateFrom, + DateTo = model.DateTo, + OrganiserId = model.OrganiserId, + FileName = "C:\\Reports\\pdffile.pdf", + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + + [HttpPost] + public void CreateOrganiserReportToWordFile(ReportOrganiserBindingModel model) + { + try + { + _reportOrganiserLogic.SaveMemberConferenceToWordFile(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + + [HttpPost] + public void CreateOrganiserReportToExcelFile(ReportOrganiserBindingModel model) + { + try + { + _reportOrganiserLogic.SaveMemberConferenceToExcelFile(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + + [HttpPost] + public void CreateHeadwaiterReportToWordFile(ReportHeadwaiterBindingModel model) + { + try + { + _reportHeadwaiterLogic.SaveLunchRoomToWordFile(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + + [HttpPost] + public void CreateHeadwaiterReportToExcelFile(ReportHeadwaiterBindingModel model) + { + try + { + _reportHeadwaiterLogic.SaveLunchRoomToWordFile(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + + [HttpPost] + public void CreateHeadwaiterReportToPdfFile(ReportHeadwaiterBindingModel model) + { + try + { + _reportHeadwaiterLogic.SaveLunchesToPdfFile(new ReportHeadwaiterBindingModel + { + FileName = "C:\\Reports\\pdffile.pdf", + DateFrom = model.DateFrom, + DateTo = model.DateTo, + HeadwaiterId = model.HeadwaiterId, + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } + } +} diff --git a/Hotel/HotelRestApi/HotelRestApi.csproj b/Hotel/HotelRestApi/HotelRestApi.csproj new file mode 100644 index 0000000..8e2fd1d --- /dev/null +++ b/Hotel/HotelRestApi/HotelRestApi.csproj @@ -0,0 +1,21 @@ + + + + net6.0 + enable + enable + + + + + + + + + + + + + + + diff --git a/Hotel/HotelRestApi/Program.cs b/Hotel/HotelRestApi/Program.cs new file mode 100644 index 0000000..f83c4fb --- /dev/null +++ b/Hotel/HotelRestApi/Program.cs @@ -0,0 +1,69 @@ +using HotelBusinessLogic.BusinessLogics; +using HotelContracts.BusinessLogicsContracts; +using HotelContracts.StoragesContracts; +using HotelDataBaseImplement.Implemets; +using Microsoft.OpenApi.Models; +using HotelBusinessLogic.OfficePackage; +using HotelBusinessLogic.OfficePackage.Implements; + +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.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(c => +{ + c.SwaggerDoc("v1", new OpenApiInfo + { + Title = "HotelRestApi", + Version = "v1" + }); +}); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "HotelRestApi v1")); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); \ No newline at end of file diff --git a/Hotel/HotelRestApi/Properties/launchSettings.json b/Hotel/HotelRestApi/Properties/launchSettings.json new file mode 100644 index 0000000..fef3dca --- /dev/null +++ b/Hotel/HotelRestApi/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:58848", + "sslPort": 44323 + } + }, + "profiles": { + "HotelRestApi": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7093;http://localhost:5249", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Hotel/HotelRestApi/appsettings.Development.json b/Hotel/HotelRestApi/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Hotel/HotelRestApi/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Hotel/HotelRestApi/appsettings.json b/Hotel/HotelRestApi/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/Hotel/HotelRestApi/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Hotel/HotelRestApi/log4net.config b/Hotel/HotelRestApi/log4net.config new file mode 100644 index 0000000..565f19f --- /dev/null +++ b/Hotel/HotelRestApi/log4net.config @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file