Не выходи из комнаты. О, пускай только комната
догадывается, как ты выглядишь. И вообще инкогнито эрго сум, как заметила форме в сердцах субстанция. Не выходи из комнаты! На улице, чай, не Франция.
This commit is contained in:
parent
ae0fd39828
commit
360ba8f8d0
@ -15,6 +15,10 @@ namespace BeautySalonContracts.ViewModels
|
||||
public string ServiceName { get; set; } = string.Empty;
|
||||
public string ProcedureName { get; set; } = string.Empty;
|
||||
public string CosmeticName { get; set; } = string.Empty;
|
||||
public HashSet<EvaluationViewModel> Evaluations { get; set; } = new();
|
||||
|
||||
|
||||
public HashSet<ServiceViewModel> Services { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,45 +1,112 @@
|
||||
@{
|
||||
ViewData["Title"] = "Report";
|
||||
@using BeautySalonContracts.ViewModels
|
||||
|
||||
@model List<ReportOrdersViewModel>
|
||||
|
||||
@{
|
||||
ViewBag.Title = "Отчеты";
|
||||
}
|
||||
|
||||
<h4 class="fw-bold">Отчет по услугам</h4>
|
||||
|
||||
<div class="d-flex flex-wrap gap-1 align-items-end mb-2">
|
||||
<div class="mb-2">
|
||||
<p class="mb-0">Дата начала:</p>
|
||||
<input id="date-from-input" class="form-control" type="date" />
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<p class="mb-0">Дата конца:</p>
|
||||
<input id="date-to-input" class="form-control" type="date" />
|
||||
</div>
|
||||
<button id="generate-button" class="button-primary mb-2">
|
||||
Показать
|
||||
</button>
|
||||
<button id="send-by-mail-button" class="button-primary mb-2">
|
||||
На почту
|
||||
</button>
|
||||
<div class="text-center">
|
||||
<h2 class="display-4">Отчеты</h2>
|
||||
</div>
|
||||
|
||||
<p class="mb-0">
|
||||
<span>За период с </span>
|
||||
<span id="date-from-span" class="fw-bold">...</span>
|
||||
<span> по </span>
|
||||
<span id="date-to-span" class="fw-bold">...</span>
|
||||
</p>
|
||||
<div class="table-shell mb-2 border">
|
||||
<table class="table mb-0">
|
||||
<thead class="table-head">
|
||||
<tr>
|
||||
<th>Номер заказа</th>
|
||||
<th>Дата</th>
|
||||
<th>Услуги</th>
|
||||
<th>Оценки</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<form method="post" enctype="multipart/form-data" style="margin-top: 50px">
|
||||
<!-- Сохранить отчеты в формате Word и Excel -->
|
||||
<div class="d-flex justify-content-between">
|
||||
<!-- Кнопка для сохранения отчета в формате Word -->
|
||||
<div class="text-center">
|
||||
<button type="submit" class="btn btn-primary" formaction="@Url.Action("CreateReportWord", "Home")">Список заказов Word</button>
|
||||
</div>
|
||||
<!-- Рецепты -->
|
||||
<div class="row">
|
||||
<div class="col-4">Процедуры:</div>
|
||||
<div class="col-8">
|
||||
<select name="procedures" id="procedures" class="form-control" size="4" multiple>
|
||||
@foreach (var procedure in ViewBag.Procedures)
|
||||
{
|
||||
<option value="@procedure.Id">@procedure.Id</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Кнопка для сохранения отчета в формате Excel -->
|
||||
<div class="text-center">
|
||||
<button type="submit" class="btn btn-primary" formaction="@Url.Action("CreateReportExcel", "Home")">Список процедур Excel</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="~/js/report.js" asp-append-version="true"></script>
|
||||
<!-- Временной период выборки данных -->
|
||||
<div class="d-flex justify-content-center" style="margin: 50px 0px 30px 0px">
|
||||
<div class="text-center">
|
||||
<label for="dateFrom">С</label>
|
||||
<input type="date" id="dateFrom" name="dateFrom" class="form-control d-inline-block w-auto">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<label for="dateTo">по</label>
|
||||
<input type="date" id="dateTo" name="dateTo" class="form-control d-inline-block w-auto">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Действия для отчета в формате Pdf -->
|
||||
<div class="d-flex justify-content-between">
|
||||
<!-- Сохранить отчет в формате Pdf -->
|
||||
<div class="text-center">
|
||||
<button type="submit" class="btn btn-primary" formaction="@Url.Action("CreateReportPdf", "Home")">Сведения о заказах Pdf</button>
|
||||
</div>
|
||||
|
||||
<!-- Отправить отчет на почту -->
|
||||
<div class="d-flex">
|
||||
<label for="fileUpload" class="d-block"></label>
|
||||
<input type="file" id="fileUpload" name="fileUpload" class="form-control-file d-inline-block w-auto">
|
||||
<button type="submit" class="btn btn-primary" formaction="@Url.Action("SendReport", "Home")">Отправить отчет на почту</button>
|
||||
</div>
|
||||
|
||||
<!-- Вывести отчет на форму -->
|
||||
<div class="text-center">
|
||||
<button type="submit" class="btn btn-primary" formaction="@Url.Action("Reports", "Home")">Вывести отчет на форму</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Таблица для вывода отчета на форму -->
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Заказ</th>
|
||||
<th>Услуги</th>
|
||||
<th>Оценки</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if (Model == null || Model.Count <= 0)
|
||||
{
|
||||
<td class="text-center" colspan="3">Нет доступных данных</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var record in Model)
|
||||
{
|
||||
// Имя пациента
|
||||
<td>@record.OrderAmount</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
|
||||
// Конвертируем из HashSet в List, чтобы можно было обращаться по индексу
|
||||
var evaluations = new List<EvaluationViewModel>(record.Evaluations);
|
||||
var services = new List<ServiceViewModel>(record.Services);
|
||||
|
||||
// Записываем названия лекарств во 2 колонку
|
||||
// и названия лекарств в 3 колонку
|
||||
int maxLength = Math.Max(evaluations.Count, services.Count);
|
||||
for (int i = 0; i < maxLength; i++)
|
||||
{
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>@(i < evaluations.Count ? evaluations[i].PointsProcedure : "")</td>
|
||||
<td>@(i < services.Count ? services[i].ServiceName : "")</td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
Loading…
Reference in New Issue
Block a user