kreta/KretaWeb/Areas/Hianyzas/Views/Igazolas/Index.cshtml
2024-03-13 00:33:46 +01:00

282 lines
No EOL
13 KiB
Text

@using Kreta.Web.Areas.Hianyzas.Models
@using Kreta.Web.Helpers.Grid
@using Kreta.Web.Helpers
@using Kreta.Resources
@model IgazolasKeresoModel
@section AddSearchPanel {
@using (Html.SearchPanelSideBar("searchForm", "IgazolasokGrid"))
{
@Html.KretaComboBoxFor(x => x.OsztCsopId, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = Model.IsFromSzervezet ? "GetDualisCsopList" : "GetOsztCsopList", osztalyfonokiFeladat = true }), "Text", "Value").AutoBind(true).RenderSearchPanelSideBar()
}
}
<div id="IgazolasValidator">
@Html.KretaValidationSummary()
</div>
<div>
@(
Html.KretaGrid<IgazolasGridModel>(
"IgazolasokGrid",
new GridApiUrl(Model.ApiControllerName, "GetIgazolasGrid", new Dictionary<string, string> { { "OsztCsopId", Model.OsztCsopId.ToString() } }),
dataParameterFunction: "searchForm",
dataBoundAdditionalFunction: "IgazolasHelper.setKendoMaskedDataPicker(); IgazolasHelper.setToolTip();",
requestEndAdditionalFunction: "IgazolasHelper.requestEndAdditionalFunction",
clientTemplate: "detailGrid-template",
clientTemplateUrl: @Url.Action("IgazolasDetailGrid", Model.ControllerName, new { area = "Hianyzas", apiControllerName = Model.ApiControllerName }),
sort: sort => sort.Add(s => s.TanuloNevElotagNelkul).Ascending(),
allowPaging: false,
allowScrolling: true,
pageSizes: null
)
.Columns(columns =>
{
columns.Bound(c => c.TanuloNevElotagNelkul).ClientTemplate(@"
<a class='kendoTooltip tanuloNev gridLinkButton'
data-tanuloid='#: ID #'
data-tanulonev='#: TanuloNevElotagNelkul #'
data-osztaly='#: OsztCsopNev #'
data-anyjaneve='#: AnyjaNeve #'
data-szuletesiido='#: SzuletesiIdo #'
>#: TanuloNevElotagNelkul #</a>");
})
.DatePickerForColumn(Html,2021 /*Igazolás első napja*/, m => m.IgazolasElsoNap, Model.KezdoNap, Model.UtolsoNap)
.DatePickerForColumn(Html, 2022 /*Igazolás utolsó napja*/, m => m.IgazolasUtolsoNap, Model.KezdoNap, Model.UtolsoNap)
.EditableDropDownColumn(Html, HianyzasResource.IgazolasTipus, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = Model.IsFromSzervezet ? "GetDualisIgazolasTipusList" : "GetIgazolasTipusList" }), m => m.Valid, m => m.IgazolasTipus, "Text", "Value")
.TextBoxForColumn(Html,2023 /*Igazolás szöveges tartalma*/, m => m.IgazolasSzovegesTartalma)
.AutoBind(true)
.FunctionCommand(Html, new List<FunctionCommand>
{
new FunctionCommand { Name = "SaveIgazolas", NameResourceId = 111 /*Mentés*/, ClientAction = "IgazolasHelper.SaveIgazolas"}
})
.Sortable(sortable => sortable.AllowUnsort(false))
)
</div>
@Html.KretaGridTemplate("detailGrid-template")
@Html.KretaTooltipTemplate("kendoTooltip-tanuloNevTemplate",
@"<div class='kendoTooltip'>
<table>
<tr>
<td style='padding-right: 5px'><b>Osztály:</b></td>
<td>#:target.data('osztaly')#</td>
</tr>
<tr>
<td style='padding-right: 5px'><b>Anyja neve:</b></td>
<td>#:target.data('anyjaneve')#</td>
</tr>
<tr>
<td style='padding-right: 5px'><b>Születési idő:</b></td>
<td>#:target.data('szuletesiido')#</td>
</tr>
</table>
</div>")
<script type="text/javascript">
var IgazolasHelper = (function () {
var igazolasHelper = function () { };
var gridName = "IgazolasokGrid";
var searchFormName = "searchForm";
var validationSummaryName = "IgazolasValidator";
var errorContainer = $("#IgazolasValidator").find(".kreta-validation-summary");
var errorList = errorContainer.find("ul");
var url = {
SaveIgazolas: "@Url.HttpRouteUrl("ActionApi", new { controller = "IgazolasokApi", action = "SaveIgazolas" })",
ValidateIgazolasOnSave: "@Url.HttpRouteUrl("ActionApi", new { controller = "IgazolasokApi", action = "ValidateIgazolasOnSave" })",
DeleteIgazolas: "@Url.HttpRouteUrl("ActionApi", new { controller = "IgazolasokApi", action = "DeleteIgazolas" })"
};
igazolasHelper.SaveIgazolas = function () {
clearErrors();
var igazolasData = [];
var hasError = false;
var warningMessage = "";
var osztalyCsoportId = $("#OsztCsopId").val();
var modifiedRows = KretaGridHelper.getModifiedRows(gridName);
$.each(modifiedRows, function (index, rowData) {
if (hasValidRowData(rowData)) {
if (!validateErrorRowData(rowData)) {
hasError = true;
} else {
var rowWarningMessage = validateWarningRowData(rowData);
if (rowWarningMessage.length > 0) {
warningMessage += "<br/>" + rowWarningMessage;
}
igazolasData.push({
TanuloId: rowData.ID,
TanuloNev: rowData.TanuloNev,
OsztalyCsoportId: osztalyCsoportId,
IgazolasElsoNap: rowData.ki_IgazolasElsoNap,
IgazolasUtolsoNap: rowData.ki_IgazolasUtolsoNap,
IgazolasTipus: rowData.ki_IgazolasTipus,
IgazolasSzovegesTartalma: rowData.ki_IgazolasSzovegesTartalma,
SzervezetId: rowData.TanuloSzervezetId
});
}
}
});
if (hasError) {
showErrors();
} else {
if (igazolasData.length > 0) {
if (warningMessage.length > 0) {
KretaWindowHelper.confirmWindow("@CommonResource.Kerdes", warningMessage, save, igazolasData, undefined, "@IgazolasResource.OsszesIgazolasMentese", "@IgazolasResource.Vissza");
} else {
AjaxHelper.DoValidationPost(url.ValidateIgazolasOnSave, null, igazolasData, validationsuccessCallBack,validationErrorCallBack);
}
}
}
}
function getIgazolasData() {
var igazolasData = [];
var osztalyCsoportId = $("#OsztCsopId").val();
var modifiedRows = KretaGridHelper.getModifiedRows(gridName);
$.each(modifiedRows, function (index, rowData) {
if (hasValidRowData(rowData)) {
if (validateErrorRowData(rowData)) {
igazolasData.push({
TanuloId: rowData.ID,
TanuloNev: rowData.TanuloNev,
OsztalyCsoportId: osztalyCsoportId,
IgazolasElsoNap: rowData.ki_IgazolasElsoNap,
IgazolasUtolsoNap: rowData.ki_IgazolasUtolsoNap,
IgazolasTipus: rowData.ki_IgazolasTipus,
IgazolasSzovegesTartalma: rowData.ki_IgazolasSzovegesTartalma,
SzervezetId: rowData.TanuloSzervezetId
});
}
}
});
return igazolasData;
}
function validationsuccessCallBack() {
save(getIgazolasData());
}
function validationErrorCallBack(data) {
KretaWindowHelper.confirmWindow("@CommonResource.Kerdes", data.responseJSON.Message, save, getIgazolasData(), undefined, "@IgazolasResource.OsszesIgazolasMentese", "@IgazolasResource.Vissza");
}
igazolasHelper.DeleteConfirmWindow = function (rowData) {
KretaWindowHelper.confirmWindow("@CommonResource.Kerdes", "@CommonResource.BiztosanTorli", deleteIgazolas, rowData.ID);
}
igazolasHelper.requestEndAdditionalFunction = function (e) {
clearErrors();
}
igazolasHelper.setKendoMaskedDataPicker = function () {
var dataPickerElsoNap = [$("input[id*='IgazolasElsoNap']"), $("input[id*='IgazolasUtolsoNap']")];
dataPickerElsoNap.forEach(e => {
e.kendoMaskedDatePicker();
e.change(function () {
KretaDateTimeHelper.validateDate($(this));
});
e.parent().parent().css("width", "initial");
});
}
igazolasHelper.setToolTip = function () {
var kendoTooltip = $(".tanuloNev");
KretaTooltipHelper.setTooltip(kendoTooltip, "#kendoTooltip-tanuloNevTemplate");
}
function save(igazolasData) {
AjaxHelper.DoValidationPost(url.SaveIgazolas, validationSummaryName, igazolasData, saveFeedBackOk);
}
function saveFeedBackOk() {
KretaGridHelper.refreshGridSearchPanel(gridName, searchFormName);
KretaWindowHelper.feedbackWindow("@CommonResource.Siker", "@CommonResource.AMentesSikeresenMegtortent", false, KretaWindowHelper.destroyAllWindow);
}
function deleteIgazolas(data) {
AjaxHelper.DoPost(url.DeleteIgazolas, data, deleteResponseOk);
}
function deleteResponseOk() {
KretaGridHelper.refreshGridSearchPanel(gridName, searchFormName);
KretaWindowHelper.feedbackWindow("@CommonResource.Siker", "@CommonResource.ATorlesSikeresenMegtortent", false, KretaWindowHelper.destroyAllWindow);
}
function hasValidRowData(rowData) {
return (rowData.ki_IgazolasElsoNap != "" || rowData.ki_IgazolasUtolsoNap != "" || rowData.ki_IgazolasSzovegesTartalma != "");
}
function validateErrorRowData(rowData) {
var isValid = true;
if (rowData.ki_IgazolasElsoNap != "" || rowData.ki_IgazolasUtolsoNap != "" || rowData.ki_IgazolasSzovegesTartalma != "") {
if (rowData.ki_IgazolasElsoNap == "") {
addError("@IgazolasResource.NemAdtaMegAzIgazolasElsoNapjat".format(rowData.TanuloNev));
isValid = false;
}
if (rowData.ki_IgazolasUtolsoNap == "") {
addError("@IgazolasResource.NemAdtaMegAzIgazolasUtolsoNapjat".format(rowData.TanuloNev));
isValid = false;
}
}
if (rowData.ki_IgazolasElsoNap != "" && rowData.ki_IgazolasUtolsoNap != "") {
var igazolasElsoNap = kendo.parseDate(rowData.ki_IgazolasElsoNap, 'yyyy. MM. dd.');
var igazolasUtolsoNap = kendo.parseDate(rowData.ki_IgazolasUtolsoNap, 'yyyy. MM. dd.');
if (igazolasUtolsoNap < igazolasElsoNap) {
addError("@IgazolasResource.AzIgazolasUtolsoNapjaNemLehetKorabbiMintAzIgazolasElsoNapja".format(rowData.TanuloNev));
isValid = false;
}
}
if (rowData.ki_IgazolasElsoNap != "") {
var igazolasElsoNap = kendo.parseDate(rowData.ki_IgazolasElsoNap, 'yyyy. MM. dd.');
var igazolasNaplozaras = kendo.parseDate("@(Model.IgazolasNaplozarasDatum)", 'yyyy. MM. dd.');
if (igazolasElsoNap <= igazolasNaplozaras) {
addError("@IgazolasResource.AzIgazolasKezdoNapjaNemEshetLezartIdoszakra".format(rowData.TanuloNev));
isValid = false;
}
}
return isValid;
}
function validateWarningRowData(rowData) {
var warningMessage = "";
var oneDay = 24 * 60 * 60 * 1000;
var igazolasElsoNap = kendo.parseDate(rowData.ki_IgazolasElsoNap, 'yyyy. MM. dd.');
var igazolasUtolsoNap = kendo.parseDate(rowData.ki_IgazolasUtolsoNap, 'yyyy. MM. dd.');
if (Math.round(Math.abs((igazolasUtolsoNap.getTime() - igazolasElsoNap.getTime()) / oneDay)) > 20) {
warningMessage = "@IgazolasResource.AzIgazolasDatumokKozottiElteresNagyobbMint20Nap".format(rowData.TanuloNev, rowData.ki_IgazolasElsoNap.bold(), rowData.ki_IgazolasUtolsoNap.bold());
}
return warningMessage;
}
function clearErrors() {
errorContainer.addClass("validation-summary-valid").removeClass("validation-summary-errors");
errorContainer.css({ 'display': 'none' });
errorList.empty();
}
function showErrors() {
errorContainer.addClass("validation-summary-errors").removeClass("validation-summary-valid");
errorContainer.css({ 'display': 'block' });
}
function addError(errorMessage) {
$("<li />").html("<label class='error labelError'>" + errorMessage + "</label>").appendTo(errorList);
}
return igazolasHelper;
})();
</script>