отчёт

This commit is contained in:
Анна Забродина 2024-05-04 01:39:00 +04:00
parent 74259a391f
commit b503bc0099
7 changed files with 99 additions and 37 deletions

View File

@ -115,8 +115,7 @@ namespace HotelBusinessLogic.BusinessLogics
{ {
foreach (var mp in conferenceBooking.ConferenceBookingLunches.Values) foreach (var mp in conferenceBooking.ConferenceBookingLunches.Values)
{ {
var conferenceId = conferenceBooking.ConferenceId; var conference = conferenced.FirstOrDefault(dp => dp.Id == conferenceBooking.ConferenceId);
var conference = conferenced.FirstOrDefault(dp => dp.Id == conferenceId);
listAll.Add(new ReportLunchesViewModel listAll.Add(new ReportLunchesViewModel
{ {
LunchName = mp.LunchName, LunchName = mp.LunchName,

View File

@ -6,6 +6,7 @@ using HotelContracts.StoragesContracts;
using HotelContracts.ViewModels; using HotelContracts.ViewModels;
using HotelContracts.BindingModels; using HotelContracts.BindingModels;
using HotelDataBaseImplement.Implemets; using HotelDataBaseImplement.Implemets;
using HotelDataBaseImplement.Models;
namespace HotelBusinessLogic.BusinessLogics namespace HotelBusinessLogic.BusinessLogics
{ {
@ -15,16 +16,18 @@ namespace HotelBusinessLogic.BusinessLogics
private readonly IMemberStorage _memberStorage; private readonly IMemberStorage _memberStorage;
private readonly IConferenceStorage _conferenceStorage; private readonly IConferenceStorage _conferenceStorage;
private readonly IConferenceBookingStorage _conferenceBookingStorage; private readonly IConferenceBookingStorage _conferenceBookingStorage;
private readonly IRoomStorage _roomStorage;
private readonly AbstractSaveToExcelOrganiser _saveToExcel; private readonly AbstractSaveToExcelOrganiser _saveToExcel;
private readonly AbstractSaveToWordOrganiser _saveToWord; private readonly AbstractSaveToWordOrganiser _saveToWord;
private readonly AbstractSaveToPdfOrganiser _saveToPdf; private readonly AbstractSaveToPdfOrganiser _saveToPdf;
public ReportLogicOrganiser(IMealPlanStorage mealPlanStorage, IMemberStorage memberStorage, IConferenceStorage conferenceStorage, IConferenceBookingStorage conferenceBookingStorage, AbstractSaveToExcelOrganiser saveToExcel, AbstractSaveToWordOrganiser saveToWord, AbstractSaveToPdfOrganiser saveToPdf) public ReportLogicOrganiser(IMealPlanStorage mealPlanStorage, IMemberStorage memberStorage, IConferenceStorage conferenceStorage, IConferenceBookingStorage conferenceBookingStorage, IRoomStorage roomStorage, AbstractSaveToExcelOrganiser saveToExcel, AbstractSaveToWordOrganiser saveToWord, AbstractSaveToPdfOrganiser saveToPdf)
{ {
_mealPlanStorage = mealPlanStorage; _mealPlanStorage = mealPlanStorage;
_memberStorage = memberStorage; _memberStorage = memberStorage;
_conferenceStorage = conferenceStorage; _conferenceStorage = conferenceStorage;
_conferenceBookingStorage = conferenceBookingStorage; _conferenceBookingStorage = conferenceBookingStorage;
_roomStorage = roomStorage;
_saveToExcel = saveToExcel; _saveToExcel = saveToExcel;
_saveToWord = saveToWord; _saveToWord = saveToWord;
_saveToPdf = saveToPdf; _saveToPdf = saveToPdf;
@ -106,17 +109,20 @@ namespace HotelBusinessLogic.BusinessLogics
OrganiserId = model.OrganiserId, OrganiserId = model.OrganiserId,
}); });
var rooms = _roomStorage.GetFullList();
foreach (var mealPlan in listMealPlans) foreach (var mealPlan in listMealPlans)
{ {
foreach (var mp in mealPlan.MealPlanMembers.Values) foreach (var mp in mealPlan.MealPlanMembers.Values)
{ {
var room = rooms.FirstOrDefault(r => r.MealPlanId == mealPlan.Id);
listAll.Add(new ReportMembersViewModel listAll.Add(new ReportMembersViewModel
{ {
MemberSurname = mp.MemberSurname, MemberSurname = mp.MemberSurname,
MemberName = mp.MemberName, MemberName = mp.MemberName,
MemberPatronymic = mp.MemberPatronymic, MemberPatronymic = mp.MemberPatronymic,
MealPlanName = mealPlan.MealPlanName, RoomName = room.RoomName,
MealPlanPrice = mealPlan.MealPlanPrice RoomPrice = room.RoomPrice
}); });
} }
} }

View File

@ -41,14 +41,14 @@ namespace HotelBusinessLogic.OfficePackage
} }
bool IsCost = true; bool IsCost = true;
if (member.MealPlanPrice.ToString() == "0") if (member.RoomPrice.ToString() == "0")
{ {
IsCost = false; IsCost = false;
} }
CreateRow(new PdfRowParameters CreateRow(new PdfRowParameters
{ {
Texts = new List<string> { $"{member.MemberSurname} {member.MemberName} {member.MemberPatronymic}", member.ConferenceName, IsDate is true ? member.StartDate.ToShortDateString() : string.Empty, member.MealPlanName, IsCost is true ? member.MealPlanPrice.ToString() : string.Empty }, Texts = new List<string> { $"{member.MemberSurname} {member.MemberName} {member.MemberPatronymic}", member.ConferenceName, IsDate is true ? member.StartDate.ToShortDateString() : string.Empty, member.RoomName, IsCost is true ? member.RoomPrice.ToString() : string.Empty },
Style = "Normal", Style = "Normal",
ParagraphAlignment = PdfParagraphAlignmentType.Left ParagraphAlignment = PdfParagraphAlignmentType.Left
}); });
@ -56,7 +56,7 @@ namespace HotelBusinessLogic.OfficePackage
CreateParagraph(new PdfParagraph CreateParagraph(new PdfParagraph
{ {
Text = $"Итого: {info.Members.Sum(x => x.MealPlanPrice)}\t", Text = $"Итого: {info.Members.Sum(x => x.RoomPrice)}\t",
Style = "Normal", Style = "Normal",
ParagraphAlignment = PdfParagraphAlignmentType.Rigth ParagraphAlignment = PdfParagraphAlignmentType.Rigth
}); });

View File

@ -8,7 +8,7 @@
public string MemberName { get; set; } = string.Empty; public string MemberName { get; set; } = string.Empty;
public string MemberPatronymic { get; set; } = string.Empty; public string MemberPatronymic { get; set; } = string.Empty;
public string ConferenceName { get; set; } = string.Empty; public string ConferenceName { get; set; } = string.Empty;
public string MealPlanName { get; set; } = string.Empty; public string RoomName { get; set; } = string.Empty;
public double MealPlanPrice { get; set; } public double RoomPrice { get; set; }
} }
} }

View File

@ -680,22 +680,16 @@ namespace HotelOrganiserApp.Controllers
double sum = 0; double sum = 0;
string table = ""; string table = "";
table += $"<h2 class=\"u-text u-text-custom-color-1 u-text-default u-text-1\">Предварительный отчет</h2>"; table += "<h2 class=\"text-custom-color-1\">Предварительный отчет</h2>";
table += $"<table class=\"u-table-entity\">"; table += "<div class=\"table-responsive\">";
table += "<colgroup>"; table += "<table class=\"table table-striped table-bordered table-hover\">";
table += "<col width=\"20%\" />"; table += "<thead class=\"table-dark\">";
table += "<col width=\"20%\" />"; table += "<tr>";
table += "<col width=\"20%\" />"; table += "<th scope=\"col\">Участник</th>";
table += "<col width=\"20%\" />"; table += "<th scope=\"col\">Конференция</th>";
table += "<col width=\"20%\" />"; table += "<th scope=\"col\">Дата начала конференции</th>";
table += "</colgroup>"; table += "<th scope=\"col\">Номер</th>";
table += "<thead class=\"u-custom-color-1 u-table-header u-table-header-1\">"; table += "<th scope=\"col\">Стоимость номера</th>";
table += "<tr style=\"height: 31px\">";
table += $"<th class=\"u-border-1 u-border-grey-50 u-table-cell\">Участник</th>";
table += $"<th class=\"u-border-1 u-border-grey-50 u-table-cell\">Конференция</th>";
table += $"<th class=\"u-border-1 u-border-grey-50 u-table-cell\">Дата начала конференции</th>";
table += $"<th class=\"u-border-1 u-border-grey-50 u-table-cell\">План питания</th>";
table += $"<th class=\"u-border-1 u-border-grey-50 u-table-cell\">Стоимость плана питания</th>";
table += "</tr>"; table += "</tr>";
table += "</thead>"; table += "</thead>";
foreach (var report in result) foreach (var report in result)
@ -706,24 +700,26 @@ namespace HotelOrganiserApp.Controllers
IsDate = false; IsDate = false;
} }
bool IsCost = true; bool IsCost = true;
if (report.MealPlanPrice.ToString() == "0") if (report.RoomPrice.ToString() == "0")
{ {
IsCost = false; IsCost = false;
} }
table += "<tbody class=\"u-table-body\">"; table += "<tbody>";
table += "<tr style=\"height: 75px\">"; table += "<tr>";
table += $"<td class=\"u-border-1 u-border-grey-40 u-border-no-left u-border-no-right u-table-cell\">" + table += $"<td>{report.MemberSurname} {report.MemberName} {report.MemberPatronymic}</td>";
$"{report.MemberSurname} {report.MemberName} {report.MemberPatronymic}</td>"; table += $"<td>{report.ConferenceName}</td>";
table += $"<td class=\"u-border-1 u-border-grey-40 u-border-no-left u-border-no-right u-table-cell\">{report.ConferenceName}</td>"; table += $"<td>{(IsDate is true ? report.StartDate.ToShortDateString() : string.Empty)}</td>";
table += $"<td class=\"u-border-1 u-border-grey-40 u-border-no-left u-border-no-right u-table-cell\">{(IsDate is true ? report.StartDate.ToShortDateString() : string.Empty)}</td>"; table += $"<td>{report.RoomName}</td>";
table += $"<td class=\"u-border-1 u-border-grey-40 u-border-no-left u-border-no-right u-table-cell\">{report.MealPlanName}</td>"; table += $"<td>{(IsCost is true ? report.RoomPrice.ToString() : string.Empty)}</td>";
table += $"<td class=\"u-border-1 u-border-grey-40 u-border-no-left u-border-no-right u-table-cell\">{(IsCost is true ? report.MealPlanPrice.ToString() : string.Empty)}</td>";
table += "</tr>"; table += "</tr>";
table += "</tbody>"; table += "</tbody>";
sum += report.MealPlanPrice; sum += report.RoomPrice;
} }
table += "<tfoot class=\"table-secondary\">";
table += $"<tr><th colspan=\"4\">Итого:</th><th>{sum}</th></tr>";
table += "</tfoot>";
table += "</table>"; table += "</table>";
table += $"<h2 class=\"u-text u-text-custom-color-1 u-text-default u-text-1\">Итого: {sum}</h2>"; table += "</div>";
return table; return table;
} }

View File

@ -12,6 +12,7 @@ builder.Services.AddTransient<IMemberStorage, MemberStorage>();
builder.Services.AddTransient<IMealPlanStorage, MealPlanStorage>(); builder.Services.AddTransient<IMealPlanStorage, MealPlanStorage>();
builder.Services.AddTransient<IConferenceStorage, ConferenceStorage>(); builder.Services.AddTransient<IConferenceStorage, ConferenceStorage>();
builder.Services.AddTransient<IConferenceBookingStorage, ConferenceBookingStorage>(); builder.Services.AddTransient<IConferenceBookingStorage, ConferenceBookingStorage>();
builder.Services.AddTransient<IRoomStorage, RoomStorage>();
builder.Services.AddTransient<AbstractSaveToExcelOrganiser, SaveToExcelOrganiser>(); builder.Services.AddTransient<AbstractSaveToExcelOrganiser, SaveToExcelOrganiser>();
builder.Services.AddTransient<AbstractSaveToPdfOrganiser, SaveToPdfOrganiser>(); builder.Services.AddTransient<AbstractSaveToPdfOrganiser, SaveToPdfOrganiser>();
builder.Services.AddTransient<AbstractSaveToWordOrganiser, SaveToWordOrganiser>(); builder.Services.AddTransient<AbstractSaveToWordOrganiser, SaveToWordOrganiser>();

View File

@ -0,0 +1,60 @@
@using HotelContracts.ViewModels
@{
ViewData["Title"] = "ListMembersToPdfFile";
}
<div class="container">
<div class="text-center mb-4">
<h2 class="text-custom-color-1">Отчет по участникам за период</h2>
</div>
<form method="post">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="dateFrom" class="form-label text-custom-color-1">Начало периода:</label>
<input type="datetime-local" id="dateFrom" name="dateFrom" class="form-control" placeholder="Выберите дату начала периода">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="dateTo" class="form-label text-custom-color-1">Окончание периода:</label>
<input type="datetime-local" id="dateTo" name="dateTo" class="form-control" placeholder="Выберите дату окончания периода">
</div>
</div>
</div>
<div class="row mb-4">
<div class="col-md-8"></div>
<div class="col-md-4">
<button type="button" id="demonstrate" class="btn btn-outline-dark w-100 text-center d-flex justify-content-md-center">Продемонстрировать</button>
</div>
</div>
<div id="report"></div>
</form>
</div>
@section Scripts {
<script>
function check() {
var dateFrom = $('#dateFrom').val();
var dateTo = $('#dateTo').val();
if (dateFrom && dateTo) {
$.ajax({
method: "GET",
url: "/Home/GetMembersReport",
data: { dateFrom: dateFrom, dateTo: dateTo },
success: function (result) {
if (result != null) {
$('#report').html(result);
}
}
});
};
}
check();
$('#demonstrate').on('click', (e) => check());
</script>
}