word и excel отчеты реализованы
This commit is contained in:
parent
638978be5b
commit
dc84083973
@ -25,10 +25,22 @@ namespace HotelBusinessLogic.BusinessLogics
|
|||||||
_saveToWord = saveToWord;
|
_saveToWord = saveToWord;
|
||||||
_saveToPdf = saveToPdf;
|
_saveToPdf = saveToPdf;
|
||||||
}
|
}
|
||||||
public List<ReportMemberConferenceViewModel> GetMemberConference()
|
public List<ReportMemberConferenceViewModel> GetMemberConference(List<int> Ids)
|
||||||
{
|
{
|
||||||
|
if (Ids == null)
|
||||||
|
{
|
||||||
|
return new List<ReportMemberConferenceViewModel>();
|
||||||
|
}
|
||||||
var conferences = _conferenceStorage.GetFullList();
|
var conferences = _conferenceStorage.GetFullList();
|
||||||
var members = _memberStorage.GetFullList();
|
List<MemberViewModel> members = new List<MemberViewModel>();
|
||||||
|
foreach (var memId in Ids)
|
||||||
|
{
|
||||||
|
var res = _memberStorage.GetElement(new MemberSearchModel { Id = memId });
|
||||||
|
if (res != null)
|
||||||
|
{
|
||||||
|
members.Add(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
var list = new List<ReportMemberConferenceViewModel>();
|
var list = new List<ReportMemberConferenceViewModel>();
|
||||||
foreach (var member in members)
|
foreach (var member in members)
|
||||||
{
|
{
|
||||||
@ -92,8 +104,8 @@ namespace HotelBusinessLogic.BusinessLogics
|
|||||||
_saveToExcel.CreateReport(new ExcelInfoOrganiser
|
_saveToExcel.CreateReport(new ExcelInfoOrganiser
|
||||||
{
|
{
|
||||||
FileName = model.FileName,
|
FileName = model.FileName,
|
||||||
Title = "Список участников",
|
Title = "Список брони по конференции",
|
||||||
MemberConferences = GetMemberConference()
|
MemberConferences = GetMemberConference(model.Ids)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,8 +114,8 @@ namespace HotelBusinessLogic.BusinessLogics
|
|||||||
_saveToWord.CreateDoc(new WordInfoOrganiser
|
_saveToWord.CreateDoc(new WordInfoOrganiser
|
||||||
{
|
{
|
||||||
FileName = model.FileName,
|
FileName = model.FileName,
|
||||||
Title = "Список участников",
|
Title = "Список брони по конференции",
|
||||||
MemberConferences = GetMemberConference()
|
MemberConferences = GetMemberConference(model.Ids)
|
||||||
}) ;
|
}) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace HotelBusinessLogic.OfficePackage
|
|||||||
CreateParagraph(new WordParagraph
|
CreateParagraph(new WordParagraph
|
||||||
{
|
{
|
||||||
Texts = new List<(string, WordTextProperties)>
|
Texts = new List<(string, WordTextProperties)>
|
||||||
{ (mc.MemberFIO+" - ", new WordTextProperties { Size = "20", Bold=true})},
|
{ (mc.MemberFIO, new WordTextProperties { Size = "20", Bold=true})},
|
||||||
TextProperties = new WordTextProperties
|
TextProperties = new WordTextProperties
|
||||||
{
|
{
|
||||||
Size = "24",
|
Size = "24",
|
||||||
|
@ -6,5 +6,6 @@
|
|||||||
public DateTime? DateFrom { get; set; }
|
public DateTime? DateFrom { get; set; }
|
||||||
public DateTime? DateTo { get; set; }
|
public DateTime? DateTo { get; set; }
|
||||||
public int OrganiserId { get; set; }
|
public int OrganiserId { get; set; }
|
||||||
|
public List<int>? Ids { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ namespace HotelContracts.BusinessLogicsContracts
|
|||||||
{
|
{
|
||||||
public interface IReportOrganiserLogic
|
public interface IReportOrganiserLogic
|
||||||
{
|
{
|
||||||
List<ReportMemberConferenceViewModel> GetMemberConference();
|
List<ReportMemberConferenceViewModel> GetMemberConference(List<int> Ids);
|
||||||
List<ReportMembersViewModel> GetMembers(ReportBindingModel model);
|
List<ReportMembersViewModel> GetMembers(ReportBindingModel model);
|
||||||
void SaveMemberConferenceToWordFile(ReportBindingModel model);
|
void SaveMemberConferenceToWordFile(ReportBindingModel model);
|
||||||
void SaveMemberConferenceToExcelFile(ReportBindingModel model);
|
void SaveMemberConferenceToExcelFile(ReportBindingModel model);
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="PdfSharp.MigraDoc.Standard" Version="1.51.15" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
@ -30,6 +30,7 @@
|
|||||||
<PackageReference Include="Microsoft.Extensions.Primitives" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Primitives" Version="7.0.0" />
|
||||||
<PackageReference Include="NLog" Version="5.1.4" />
|
<PackageReference Include="NLog" Version="5.1.4" />
|
||||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.2.3" />
|
<PackageReference Include="NLog.Extensions.Logging" Version="5.2.3" />
|
||||||
|
<PackageReference Include="PdfSharp.MigraDoc.Standard" Version="1.51.15" />
|
||||||
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
|
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
|
||||||
<PackageReference Include="System.Text.Encodings.Web" Version="7.0.0" />
|
<PackageReference Include="System.Text.Encodings.Web" Version="7.0.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="7.0.2" />
|
<PackageReference Include="System.Text.Json" Version="7.0.2" />
|
||||||
|
@ -17,6 +17,74 @@ namespace HotelOrganiserApp.Controllers
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*--------------------Reports------------------------*/
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult ListMemberConferenceToFile()
|
||||||
|
{
|
||||||
|
if (APIClient.Organiser == null)
|
||||||
|
{
|
||||||
|
return Redirect("~/Home/Enter");
|
||||||
|
}
|
||||||
|
return View(APIClient.GetRequest<List<MemberViewModel>>($"api/main/getmemberlist?organiserId={APIClient.Organiser.Id}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public void ListMemberConferenceToFile(int[] Ids, string type)
|
||||||
|
{
|
||||||
|
if (APIClient.Organiser == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Ids.Length <= 0)
|
||||||
|
{
|
||||||
|
throw new Exception("Количество должно быть больше 0");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(type))
|
||||||
|
{
|
||||||
|
throw new Exception("Неверный тип отчета");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<int> res = new List<int>();
|
||||||
|
|
||||||
|
foreach (var item in Ids)
|
||||||
|
{
|
||||||
|
res.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == "docx")
|
||||||
|
{
|
||||||
|
APIClient.PostRequest("api/report/createreporttowordfile", new ReportBindingModel
|
||||||
|
{
|
||||||
|
Ids = res,
|
||||||
|
FileName= "F:\\ReportsCourseWork\\wordfile.docx"
|
||||||
|
});
|
||||||
|
Response.Redirect("GetWordFile");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
APIClient.PostRequest("api/report/createreporttoexcelfile", new ReportBindingModel
|
||||||
|
{
|
||||||
|
Ids = res,
|
||||||
|
FileName = "F:\\ReportsCourseWork\\excelfile.xlsx"
|
||||||
|
});
|
||||||
|
Response.Redirect("GetExcelFile");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult GetWordFile()
|
||||||
|
{
|
||||||
|
return new PhysicalFileResult("F:\\ReportsCourseWork\\wordfile.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult GetExcelFile()
|
||||||
|
{
|
||||||
|
return new PhysicalFileResult("F:\\ReportsCourseWork\\excelfile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||||
|
}
|
||||||
|
|
||||||
/*--------------------MealPlans------------------------*/
|
/*--------------------MealPlans------------------------*/
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
@ -20,10 +20,12 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
<PackageReference Include="PdfSharp.MigraDoc.Standard" Version="1.51.15" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\HotelContracts\HotelContracts.csproj" />
|
<ProjectReference Include="..\HotelContracts\HotelContracts.csproj" />
|
||||||
|
<ProjectReference Include="..\HotelDataModels\HotelDataModels.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -15,9 +15,7 @@
|
|||||||
<div class="u-clearfix u-layout-wrap u-layout-wrap-1">
|
<div class="u-clearfix u-layout-wrap u-layout-wrap-1">
|
||||||
<div class="u-layout">
|
<div class="u-layout">
|
||||||
<div class="u-layout-row">
|
<div class="u-layout-row">
|
||||||
<div
|
<div class="u-container-style u-layout-cell u-size-48 u-layout-cell-1">
|
||||||
class="u-container-style u-layout-cell u-size-48 u-layout-cell-1"
|
|
||||||
>
|
|
||||||
<div class="u-container-layout u-container-layout-1">
|
<div class="u-container-layout u-container-layout-1">
|
||||||
<div class="u-table u-table-responsive u-table-1">
|
<div class="u-table u-table-responsive u-table-1">
|
||||||
<table class="u-table-entity">
|
<table class="u-table-entity">
|
||||||
|
@ -0,0 +1,92 @@
|
|||||||
|
@using HotelContracts.ViewModels
|
||||||
|
|
||||||
|
@model List<MemberViewModel>
|
||||||
|
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "ListMemberConferenceToFile";
|
||||||
|
}
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="~/css/listmembers.css" asp-append-version="true" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<h2
|
||||||
|
class="u-text u-text-custom-color-1 u-text-default u-text-1"
|
||||||
|
>
|
||||||
|
Создание отчета по участникам
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<form method="post">
|
||||||
|
<div>
|
||||||
|
<label class="u-label u-text-custom-color-1 u-label-1">
|
||||||
|
Выберите формат файла:
|
||||||
|
</label>
|
||||||
|
<div class="form-check form-check-inline">
|
||||||
|
<input class="form-check-input" type="radio" name="type" value="docx" id="docx">
|
||||||
|
<label class="u-label u-text-custom-color-1 u-label-1" for="docx">
|
||||||
|
Word-файл
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check form-check-inline">
|
||||||
|
<input class="form-check-input" type="radio" name="type" value="xlsx" id="xlsx" checked>
|
||||||
|
<label class="u-label u-text-custom-color-1 u-label-1" for="xlsx">
|
||||||
|
Excel-файл
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="u-container-style u-layout-cell u-size-48 u-layout-cell-1">
|
||||||
|
<div class="u-container-layout u-container-layout-1">
|
||||||
|
<div class="u-table u-table-responsive u-table-1">
|
||||||
|
<table class="u-table-entity">
|
||||||
|
<colgroup>
|
||||||
|
<col width="9.8%" />
|
||||||
|
<col width="62.9%" />
|
||||||
|
<col width="27.3%" />
|
||||||
|
</colgroup>
|
||||||
|
<thead
|
||||||
|
class="u-custom-color-1 u-table-header u-table-header-1">
|
||||||
|
<tr style="height: 31px">
|
||||||
|
<th class="u-border-1 u-border-grey-50 u-table-cell">
|
||||||
|
|
||||||
|
</th>
|
||||||
|
<th class="u-border-1 u-border-grey-50 u-table-cell">
|
||||||
|
ФИО участника
|
||||||
|
</th>
|
||||||
|
<th class="u-border-1 u-border-grey-50 u-table-cell">
|
||||||
|
Гражданство
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="u-table-body">
|
||||||
|
@foreach (var item in Model)
|
||||||
|
{
|
||||||
|
<tr style="height: 75px">
|
||||||
|
<td
|
||||||
|
class="u-border-1 u-border-grey-40 u-border-no-left u-border-no-right u-table-cell">
|
||||||
|
<input type="checkbox" class="form-check-input" name="Ids[]" value="@item.Id" id="@item.Id">
|
||||||
|
</td>
|
||||||
|
<td
|
||||||
|
class="u-border-1 u-border-grey-40 u-border-no-left u-border-no-right u-table-cell"
|
||||||
|
>
|
||||||
|
@Html.DisplayFor(modelItem => item.MemberFIO)
|
||||||
|
</td>
|
||||||
|
<td
|
||||||
|
class="u-border-1 u-border-grey-40 u-border-no-left u-border-no-right u-table-cell"
|
||||||
|
>
|
||||||
|
@Html.DisplayFor(modelItem => item.Citizenship)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="u-align-center u-form-group u-form-submit u-label-top" style="padding-bottom: 120px">
|
||||||
|
<div class="col-8"></div>
|
||||||
|
<div class="col-4"><input type="submit" value="Создать файл" class="u-active-custom-color-6 u-border-none u-btn u-btn-submit u-button-style u-custom-color-1 u-hover-custom-color-2 u-btn-1"/></div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
@ -15,8 +15,7 @@
|
|||||||
<div class="u-clearfix u-layout-wrap u-layout-wrap-1">
|
<div class="u-clearfix u-layout-wrap u-layout-wrap-1">
|
||||||
<div class="u-layout">
|
<div class="u-layout">
|
||||||
<div class="u-layout-row">
|
<div class="u-layout-row">
|
||||||
<div
|
<div class="u-container-style u-layout-cell u-size-48 u-layout-cell-1">
|
||||||
class="u-container-style u-layout-cell u-size-48 u-layout-cell-1">
|
|
||||||
<div class="u-container-layout u-container-layout-1">
|
<div class="u-container-layout u-container-layout-1">
|
||||||
<div class="u-table u-table-responsive u-table-1">
|
<div class="u-table u-table-responsive u-table-1">
|
||||||
<table class="u-table-entity">
|
<table class="u-table-entity">
|
||||||
|
@ -75,14 +75,8 @@
|
|||||||
<li class="u-nav-item">
|
<li class="u-nav-item">
|
||||||
<a
|
<a
|
||||||
class="u-button-style u-custom-color-4 u-nav-link u-text-active-custom-color-2 u-text-custom-color-1 u-text-hover-custom-color-6"
|
class="u-button-style u-custom-color-4 u-nav-link u-text-active-custom-color-2 u-text-custom-color-1 u-text-hover-custom-color-6"
|
||||||
asp-area="" asp-controller="Home" asp-action="Register"
|
asp-area="" asp-controller="Home" asp-action="ListMemberConferenceToFile"
|
||||||
>Список участников (xls)</a>
|
>Список участников (word/excel)</a>
|
||||||
</li>
|
|
||||||
<li class="u-nav-item">
|
|
||||||
<a
|
|
||||||
class="u-button-style u-custom-color-4 u-nav-link u-text-active-custom-color-2 u-text-custom-color-1 u-text-hover-custom-color-6"
|
|
||||||
asp-area="" asp-controller="Home" asp-action="Register"
|
|
||||||
>Список участников (docx)</a>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
47
Hotel/HotelRestApi/Controllers/ReportController.cs
Normal file
47
Hotel/HotelRestApi/Controllers/ReportController.cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
using HotelContracts.BindingModels;
|
||||||
|
using HotelContracts.BusinessLogicsContracts;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
namespace HotelRestApi.Controllers
|
||||||
|
{
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
[ApiController]
|
||||||
|
public class ReportController : Controller
|
||||||
|
{
|
||||||
|
private readonly ILogger _logger;
|
||||||
|
private readonly IReportOrganiserLogic _reportOrganiserLogic;
|
||||||
|
public ReportController(ILogger<ReportController> logger, IReportOrganiserLogic reportOrganiserLogic)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
_reportOrganiserLogic = reportOrganiserLogic;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public void CreateReportToWordFile(ReportBindingModel model)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_reportOrganiserLogic.SaveMemberConferenceToWordFile(model);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка создания отчета");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public void CreateReportToExcelFile(ReportBindingModel model)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_reportOrganiserLogic.SaveMemberConferenceToExcelFile(model);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка создания отчета");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -12,12 +12,14 @@
|
|||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="6.1.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="6.1.0" />
|
||||||
|
<PackageReference Include="PdfSharp.MigraDoc.Standard" Version="1.51.15" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\HotelBusinessLogic\HotelBusinessLogic.csproj" />
|
<ProjectReference Include="..\HotelBusinessLogic\HotelBusinessLogic.csproj" />
|
||||||
<ProjectReference Include="..\HotelDataBaseImplement\HotelDataBaseImplement.csproj" />
|
<ProjectReference Include="..\HotelDataBaseImplement\HotelDataBaseImplement.csproj" />
|
||||||
|
<ProjectReference Include="..\HotelDataModels\HotelDataModels.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -5,6 +5,8 @@ using HotelDataBaseImplement.Implemets;
|
|||||||
using Microsoft.OpenApi.Models;
|
using Microsoft.OpenApi.Models;
|
||||||
//using HotelBusinessLogic.MailWorker;
|
//using HotelBusinessLogic.MailWorker;
|
||||||
using HotelContracts.BindingModels;
|
using HotelContracts.BindingModels;
|
||||||
|
using HotelBusinessLogic.OfficePackage;
|
||||||
|
using HotelBusinessLogic.OfficePackage.Implements;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
@ -21,6 +23,11 @@ builder.Services.AddTransient<IOrganiserLogic, OrganiserLogic>();
|
|||||||
builder.Services.AddTransient<IMealPlanLogic, MealPlanLogic>();
|
builder.Services.AddTransient<IMealPlanLogic, MealPlanLogic>();
|
||||||
builder.Services.AddTransient<IMemberLogic, MemberLogic>();
|
builder.Services.AddTransient<IMemberLogic, MemberLogic>();
|
||||||
builder.Services.AddTransient<IConferenceLogic, ConferenceLogic>();
|
builder.Services.AddTransient<IConferenceLogic, ConferenceLogic>();
|
||||||
|
builder.Services.AddTransient<IReportOrganiserLogic, ReportLogicOrganiser>();
|
||||||
|
|
||||||
|
builder.Services.AddTransient<AbstractSaveToExcelOrganiser, SaveToExcelOrganiser>();
|
||||||
|
builder.Services.AddTransient<AbstractSaveToWordOrganiser, SaveToWordOrganiser>();
|
||||||
|
builder.Services.AddTransient<AbstractSaveToPdfOrganiser, SaveToPdfOrganiser>();
|
||||||
|
|
||||||
builder.Services.AddTransient<IHeadwaiterStorage, HeadwaiterStorage>();
|
builder.Services.AddTransient<IHeadwaiterStorage, HeadwaiterStorage>();
|
||||||
builder.Services.AddTransient<IDinnerStorage, DinnerStorage>();
|
builder.Services.AddTransient<IDinnerStorage, DinnerStorage>();
|
||||||
|
Loading…
Reference in New Issue
Block a user