282 lines
No EOL
13 KiB
Text
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> |