Files
BeWoPlaner/BeWoPlanerMobil/Views/ReportViewer/ReportViewerFormPartial.cshtml
Lyndon Jetten 3ca4ec5323 Das Gruppenbuchungsformular hat jetzt die Summe der Ziele aller ausgewählten Hilfepläne und die Schnittmenge deren Leistungen und Kategorien.
Das Mehrfachbuchungsformular hat ebenfalls die Schnittmenge der Leistungen und Kategorien von den ausgewählten Hilfeplänen.

Das Caching ist wieder aktiviert. Und lädt pro Post-Aufruf nur noch einmal 13 MB und danach nur noch 300 kb herunter.

Überall konsequent geprüft, ob das Model nicht null ist und falls dem so ist, wird ausgeloggt, damit es zu keinen Fehlern mehr kommt.
2024-06-26 12:29:22 +02:00

252 lines
9.7 KiB
Plaintext

@using BeWoPlanerMobil.Models
@using BeWoPlanerMobil.Util
@model BeWoPlanerMobil.Models.ReportViewerModel
@{
if(TempData[TempDataConstants.DoLogoutKey] is bool doLogout && doLogout)
{
<text>
<script type="text/javascript">
$("#second-logout-form").submit();
</script>
</text>
}
}
<script type="text/javascript">
function reportFilterOnChange() {
try {
//team oder mitarbeiter
toggleMitarbeiterstundenForm();
} catch (error) {
showErrorPopup(error);
}
}
function allEmployeesCbOnClick() {
try {
var isChecked = $("#msk-all-employees-cb").is(':checked');
$("#msk-employee-list").toggle(isChecked);
if(isChecked) {
$("#msk-form-warning").hide();
}
} catch (error) {
showErrorPopup(error);
}
}
function allTeamsCbOnClick() {
try {
var isChecked = $("#msk-all-teams-cb").is(':checked');
$("#msk-team-list").toggle(isChecked);
if (isChecked) {
$("#msk-form-warning").hide();
}
} catch (error) {
showErrorPopup(error);
}
}
function createMitarbeiterstundenkontoReport() {
try {
var formWarning = $("#msk-form-warning");
formWarning.hide();
formWarning.empty();
var month = $("#msk-month-select :selected").val();
var year = $("#msk-year-select :selected").val();
var allEmployees = $("#msk-all-employees-cb").is(':checked');
var allTeams = $("#msk-all-teams-cb").is(':checked');
var employeeOid = $("#msk-employee-select :selected").val();
var teamOid = $("#msk-team-select :selected").val();
var ansicht = 0;
if ($("#msk-tagesansicht-cb").length) {
ansicht = $("#msk-tagesansicht-cb").is('checked') ? 1 : 0;
} else {
switch ($("input[name=msk-ansichtsradio]:checked").attr("id")) {
case "msk-tagesansichtsradio":
ansicht = 1;
break;
case "msk-jahresansichtsradio":
ansicht = 2;
break;
default:
ansicht = 0;
break;
}
}
var teamForm = $("#msk-team-form");
var employeeForm = $("#msk-employee-form");
var isEmployeeFormSelected = employeeForm.css("display") === "block" || employeeForm.css("display") === "none" && (teamForm.css("display") === "none" || teamForm.length === 0);
var parameterString = month + ";" + year + ";" + isEmployeeFormSelected + ";";
if(isEmployeeFormSelected) {
if (allEmployees === false && employeeOid === "0") {
formWarning.removeClass("d-none");
formWarning.html("Bitte wählen Sie einen Mitarbeiter aus.");
formWarning.show();
return;
} else {
parameterString += allEmployees + ";" + employeeOid;
}
} else {
if (allTeams === false && teamOid === "0") {
formWarning.removeClass("d-none");
formWarning.html("Bitte wählen Sie ein Team aus.");
formWarning.show();
return;
} else {
parameterString += allTeams + ";" + teamOid;
}
}
parameterString += ";" + ansicht;
showSpinner();
$("#msk-report-container").load("@Url.Action("LoadMitarbeiterstundenkonto")", { parameters: parameterString }, function() {
hideSpinner();
});
} catch (error) {
showErrorPopup(error);
}
}
</script>
@*ToDo: Bis auf weiteres nur Mitarbeiterstundenkonto anzeigen!*@
@*@if(Model.SelectedReportType == ReportType.Berichte)
{
@Html.DropDownListFor(model => model.SelectedCustomReport, Model.CustomReports, new { @class = "custom-select", id = "msk-customReportSelect", onchange = "loadCustomReport()" })
}*@
@if(Model.SelectedReportType == ReportType.Mitarbeiterstundenkonto && AbstractModel.HasRightToViewMitarbeiterstundenkonto)
{
<div id="report-form-container">
<div class="form-row">
<div class="col">
<div class="alert alert-danger d-none w-100" role="alert" id="msk-form-warning">
</div>
</div>
</div>
@if(AbstractModel.HasRightMitarbeiterstundenkontoViewAll || AbstractModel.HasRightMitarbeiterstundenkontoViewTeams)
{
<div class="form-row">
<div class="col">
<div class="form-check">
<input class="form-check-input" type="radio" name="filterRadio" id="msk-filterForEmployeesRadio" onchange="reportFilterOnChange()" checked />
<label for="msk-filterForEmployeesRadio">Nach Mitarbeiter filtern</label>
</div>
</div>
</div>
<div class="form-row">
<div class="col">
<div class="form-check">
<input class="form-check-input" type="radio" name="filterRadio" id="msk-filterForTeamsRadio" onchange="reportFilterOnChange()" />
<label for="msk-filterForTeamsRadio">Nach Teams filtern</label>
</div>
</div>
</div>
}
<div id="msk-employee-form">
@if(AbstractModel.HasRightMitarbeiterstundenkontoViewAll)
{
<div class="form-row">
<div class="col">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="msk-all-employees-cb" />
<label class="form-check-label" for="msk-all-employees-cb" onclick="allEmployeesCbOnClick()">Alle Mitarbeiter</label>
</div>
</div>
</div>
}
<div class="form-row" id="msk-employee-list">
<div class="col">
@Html.DropDownListFor(model => model.SelectedEmployeeOid, Model.Employees, new { @class = "custom-select mb-3", id = "msk-employee-select" })
</div>
</div>
</div>
@if(AbstractModel.HasRightMitarbeiterstundenkontoViewAll || AbstractModel.HasRightMitarbeiterstundenkontoViewTeams)
{
<div id="msk-team-form">
<div class="form-row">
<div class="col">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="msk-all-teams-cb" />
<label class="form-check-label" for="msk-all-teams-cb" onclick="allTeamsCbOnClick()">Alle Teams</label>
</div>
</div>
</div>
<div class="form-row" id="msk-team-list">
<div class="col">
@Html.DropDownListFor(model => model.SelectedTeamOid, Model.Teams, new { @class = "custom-select mb-3", id = "msk-team-select" })
</div>
</div>
</div>
}
<div class="form-row">
<div class="col">
@Html.DropDownListFor(model => model.SelectedMonth, Model.Months, new { @class = "custom-select mb-3", id = "msk-month-select" })
</div>
<div class="col">
@Html.DropDownListFor(model => model.SelectedYear, Model.Years, new { @class = "custom-select mb-3", id = "msk-year-select" })
</div>
</div>
<div class="form-row">
@{
var str = BS.Shared.Translation.Translator.Translate("StundenkontoTagesansicht");
}
@if(str == "StundenkontoTagesansicht")
{
<div class="col-4">
<div class="form-check">
<input class="form-check-input" type="radio" name="msk-ansichtsradio" id="msk-tagesansichtsradio" />
<label for="msk-tagesansichtsradio">Tag</label>
</div>
</div>
<div class="col-4">
<div class="form-check">
<input class="form-check-input" type="radio" name="msk-ansichtsradio" id="msk-monatsansichtsradio" checked />
<label for="msk-monatsansichtsradio">Monat</label>
</div>
</div>
<div class="col-4">
<div class="form-check">
<input class="form-check-input" type="radio" name="msk-ansichtsradio" id="msk-jahresansichtsradio" />
<label for="msk-jahresansichtsradio">Jahr</label>
</div>
</div>
}
else
{
<div class="col">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="msk-tagesansicht-cb" />
<label class="form-check-label" for="msk-tagesansicht-cb">@str</label>
</div>
</div>
}
</div>
<div class="form-row">
<div class="col">
<button type="button" class="btn btn-primary w-100" onclick="createMitarbeiterstundenkontoReport()">Erstellen</button>
</div>
</div>
</div>
}