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

497 lines
No EOL
22 KiB
Text

@using Kreta.BusinessLogic.Classes
@using Kreta.Framework;
@using Kreta.Enums.ManualEnums;
@using Kreta.Enums;
@using Kreta.Resources
@using Kreta.Web.Areas.Intezmeny.Models
@using Kreta.Web.Helpers.Grid
@model TanevRendjeIndexModel
@section AddJs {
@Scripts.Render("~/bundles/Calendar")
<script type="text/javascript">
var TanevRendjeCalendarHelper = (function () {
var tanevRendjeCalendarHelper = function () { };
var calendarName = "TanevRendjeCalendar";
tanevRendjeCalendarHelper.CalendarClickEvent = function (calendarParam) {
TanevRendjeHelper.openModifyTanevRendjeWindow(calendarParam);
};
tanevRendjeCalendarHelper.CalendarSelectEvent = function (calendarParam) {
if (calendarParam.allDay) {
TanevRendjeHelper.openNewTanevRendjeWindow(calendarParam);
}
};
tanevRendjeCalendarHelper.RefreshCalendar = function () {
var currentCalendarView = $("#" + calendarName).fullCalendar('getView');
var startDate = currentCalendarView.intervalStart._d;
$("#" + calendarName).fullCalendar('destroy');
createCalendar(startDate);
};
function createCalendar(startDate) {
var calendar = new SDAFullCalendar();
var parameters = calendar.getParameters();
parameters.calendar = calendarName;
parameters.calendarStartDate = startDate;
parameters.kellCsengetesiRendMegjelenites = false;
parameters.isNewEventEnabled = true;
parameters.viewModes = "month";
parameters.defaultView = "month";
parameters.viewSet = calendar.mounthView;
parameters.eventLimit = false;
parameters.headerLeft = 'prev,next';
parameters.serviceURL = '@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "CalendarApi", action = "GetTanevRendjeCalendar" })';
parameters.clickEvent = TanevRendjeCalendarHelper.CalendarClickEvent;
parameters.selectEvent = TanevRendjeCalendarHelper.CalendarSelectEvent;
parameters.validRange = { start: moment.utc('@Model.TanevKezdoNap.ToString("yyyy-MM-dd")'), end: moment.utc('@Model.TanevUtolsoNap.ToString("yyyy-MM-dd")') };
calendar.initialize(parameters);
}
tanevRendjeCalendarHelper.IsInValidRange = function(eventStart)
{
var validRange = $('#' + calendarName).fullCalendar('getView').options.validRange;
var start = moment.utc(validRange.start);
var end = moment.utc(validRange.end);
var eventStartUtc = new Date(eventStart).setHours(2);
return ((start <= eventStartUtc) && (end >= eventStartUtc));
}
$(document).ready(function () {
createCalendar("@( (Model.TanevKezdoNap <= DateTime.Today && Model.TanevUtolsoNap >= DateTime.Today ? DateTime.Today : Model.TanevKezdoNap > DateTime.Today ? Model.TanevKezdoNap : Model.TanevUtolsoNap).ToString("yyyy-MM-dd"))");
});
return tanevRendjeCalendarHelper;
})();
</script>
<script type="text/javascript">
var TanevRendjeHelper = (function () {
var tanevRendjeHelper = function () { };
var gridName = "TanevRendjeGrid";
var formName = "TanevRendjeForm";
var url = {
OpenTanevRendjeInfoPopUp: "@Url.Action("OpenTanevRendjeInfoPopUp", "TanevRendje", new { area = "Intezmeny" })",
OpenNewTanevRendjePopUp: "@Url.Action("OpenNewTanevRendjePopUp", "TanevRendje", new { area = "Intezmeny" })",
OpenModifyTanevRendjePopUp: "@Url.Action("OpenModifyTanevRendjePopUp", "TanevRendje", new { area = "Intezmeny" })",
OpenSetHetirendPopUp: "@Url.Action("OpenSetHetirendPopUp", "TanevRendje", new { area = "Intezmeny" })",
CheckTanevRendjeBeforeSave: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "TanevRendjeApi", action = "CheckTanevRendjeBeforeSave" })",
SaveTanevRendje: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "TanevRendjeApi", action = "SaveTanevRendje" })",
DeleteTanevRendje: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "TanevRendjeApi", action = "DeleteTanevRendje" })",
SetHetirend: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "TanevRendjeApi", action = "SetHetirend" })",
GetHetirendHelyettesites: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "TanevRendjeApi", action = "GetHetirendHelyettesitesList" })",
OpenDeleteTanevRendjePopUp: "@Url.Action("OpenDeleteTanevRendjePopUp", "TanevRendje", new { area = "Intezmeny" })",
GetNaptipusIsTanoraOrTanorakivuli: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "TanevRendjeApi", action = "GetNaptipusIsTanoraOrTanorakivuli" })",
GetExport: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = Constants.ApiControllers.TanevRendjeApi, action = "GetExport" })"
}
tanevRendjeHelper.openTanevRendjeInfoWindow = function (rowData) {
var postData = { TanevRendjeId: rowData.ID };
AjaxHelper.DoPost(url.OpenTanevRendjeInfoPopUp, postData, popUpInfoWindow);
}
tanevRendjeHelper.openNewTanevRendjeWindow = function (data) {
var postData = null;
if (data.hasOwnProperty("start")) {
postData = { TanevRendjeDatum: data.start }
}
AjaxHelper.DoPost(url.OpenNewTanevRendjePopUp, postData, popUpNewWindow);
}
tanevRendjeHelper.openModifyTanevRendjeWindow = function (data) {
var postData = null;
if (data.hasOwnProperty("eventId")) {
postData = { TanevRendjeId: data.eventId };
} else if (data.hasOwnProperty("ID")) {
postData = { TanevRendjeId: data.ID };
}
var isInValidRange = TanevRendjeCalendarHelper.IsInValidRange(data.Datum);
if (isInValidRange === true) {
AjaxHelper.DoPost(url.OpenModifyTanevRendjePopUp, postData, popUpModifyWindow);
}
else {
AjaxHelper.DoPost(url.OpenTanevRendjeInfoPopUp, postData, popUpInfoWindow);
}
}
tanevRendjeHelper.openSetHetirendWindow = function (data) {
AjaxHelper.DoPost(url.OpenSetHetirendPopUp, null, popUpSetHetirendWindow);
}
tanevRendjeHelper.deleteTanevRendjeConfirmWindow = function (rowData) {
AjaxHelper.DoPost(url.OpenDeleteTanevRendjePopUp, { TanevRendjeId: rowData.ID }, popUpDeleteWindow);
}
function popUpDeleteWindow(data) {
var config = KretaWindowHelper.getWindowConfigContainer();
config.title = "@OrarendResource.TanevRendjeTorles";
config.height = "155px";
config.width = "650px";
config.content = data;
var modal = KretaWindowHelper.createWindow("deleteTanevRendjeWindow", config);
KretaWindowHelper.openWindow(modal, true);
}
tanevRendjeHelper.deleteTanevRendjeCancel = function () {
KretaWindowHelper.destroyWindow("deleteTanevRendjeWindow");
}
tanevRendjeHelper.tanevRendjeInfoCancel = function () {
KretaWindowHelper.destroyWindow("tanevRendjeInfoWindow");
}
tanevRendjeHelper.newTanevRendjeCancel = function () {
KretaWindowHelper.destroyWindow("newTanevRendjeWindow");
}
tanevRendjeHelper.modifyTanevRendjeCancel = function () {
KretaWindowHelper.destroyWindow("modifyTanevRendjeWindow");
}
tanevRendjeHelper.setHetirendCancel = function () {
KretaWindowHelper.destroyWindow("setHetirendWindow");
}
tanevRendjeHelper.newTanevRendjeSave = function () {
checkTanevRendjeBeforeSave();
}
tanevRendjeHelper.modifyTanevRendjeSave = function () {
checkTanevRendjeBeforeSave();
}
tanevRendjeHelper.validationHetirendHelyettesites = function () {
var modifiedHetirendList = NaptariHetGridHelper.GetModifiedHetirendList();
var data = { ModifiedHetirendList: modifiedHetirendList };
AjaxHelper.DoPost(url.GetHetirendHelyettesites, data, TanevRendjeHelper.setHetirendSave, validationResponse);
}
function validationResponse(data) {
var msg = data.responseJSON.Json.Msg;
KretaWindowHelper.confirmWindow("@(StringResourcesUtil.GetString(368))" /*Figyelmeztetés*/, "@HelyettesitesResource.HetirendHelyettesites" + msg, TanevRendjeHelper.setHetirendSave, null, null, "@HelyettesitesResource.Tovabb","@HelyettesitesResource.Megsem");
}
tanevRendjeHelper.setHetirendSave = function () {
var modifiedHetirendList = NaptariHetGridHelper.GetModifiedHetirendList();
var data = { ModifiedHetirendList: modifiedHetirendList };
AjaxHelper.DoPost(url.SetHetirend, data, setHetirendSaveResponseOk, feedbackError);
}
tanevRendjeHelper.changeNapTipusa = function () {
AjaxHelper.DoGet(url.GetNaptipusIsTanoraOrTanorakivuli, { napTipusId: $("#NapTipusa").data('kendoComboBox').value() }, changeNapTipusaResponseOk);
}
function changeNapTipusaResponseOk(result) {
if (result) {
$("#UresOrarend, #OrarendiNap").closest('div').removeClass('disabledItem').prev('div').removeClass('disabledItem');
$("#OrarendiNap").click();
}
else {
$("#UresOrarend, #OrarendiNap, #ElteroOrarendSzerintiTanitasNapDatum, #CsengetesiRend").closest('div').addClass('disabledItem').prev('div').addClass('disabledItem');
$("#UresOrarend").prop('checked', false); $("#OrarendiNap").prop('checked', false);
$("#ElteroOrarendSzerintiTanitasNapDatum").val($("#Datum").val());
}
}
tanevRendjeHelper.getExport = function () {
KretaGridHelper.getExport(gridName, url.GetExport)
}
function checkTanevRendjeBeforeSave() {
if (getForm().valid()) {
var formData = getFormData();
formData.SelectedOsztalyCsoportIdList = TanevRendjeOsztalyCsoportGridHelper.GetSelectedOsztalyCsoportIdList();
formData.ModifiedOsztalyCsoportList = TanevRendjeOsztalyCsoportGridHelper.GetModifiedOsztalyCsoportList();
AjaxHelper.DoPost(url.CheckTanevRendjeBeforeSave, formData, checkTanevRendjeBeforeSaveResponseOk, feedbackError);
}
}
function checkTanevRendjeBeforeSaveResponseOk(result) {
if (result.NeedConfirm) {
KretaWindowHelper.confirmWindow("@(StringResourcesUtil.GetString(368))" /*Figyelmeztetés*/, result.ConfirmMessage, tanevRendjeSave);
} else {
tanevRendjeSaveResponseOk();
}
}
function tanevRendjeSave() {
if (getForm().valid()) {
var formData = getFormData();
formData.ModifiedOsztalyCsoportList = TanevRendjeOsztalyCsoportGridHelper.GetModifiedOsztalyCsoportList();
formData.SelectedOsztalyCsoportIdList = TanevRendjeOsztalyCsoportGridHelper.GetSelectedOsztalyCsoportIdList();
AjaxHelper.DoValidationPost(url.SaveTanevRendje, formName, formData, tanevRendjeSaveResponseOk);
}
}
function getFormData() {
return getForm().toObject({ getDisabled: true });
}
function getForm() {
return $("#" + formName);
}
function popUpInfoWindow(data) {
var config = KretaWindowHelper.getWindowConfigContainer();
config.title = "@(StringResourcesUtil.GetString(1784))"; /*Tanévrend adatai*/
config.height = "400px";
config.content = data;
var modal = KretaWindowHelper.createWindow("tanevRendjeInfoWindow", config);
KretaWindowHelper.openWindow(modal, true);
}
function popUpNewWindow(data) {
var config = KretaWindowHelper.getWindowConfigContainer();
config.title = "@(StringResourcesUtil.GetString(2583))"; /*Tanévrend felvétele*/
config.height = "500px";
config.content = data;
var modal = KretaWindowHelper.createWindow("newTanevRendjeWindow", config);
KretaWindowHelper.openWindow(modal, true);
}
function popUpModifyWindow(data) {
var config = KretaWindowHelper.getWindowConfigContainer();
config.title = "@(StringResourcesUtil.GetString(1785))"; /*Tanévrend módosítása*/
config.height = "500px";
config.content = data;
var modal = KretaWindowHelper.createWindow("modifyTanevRendjeWindow", config);
KretaWindowHelper.openWindow(modal, true);
}
function popUpSetHetirendWindow(data) {
var config = KretaWindowHelper.getWindowConfigContainer();
config.title = "@(StringResourcesUtil.GetString(4244))"; /*Hetirend beállítása*/
config.height = "600px";
config.content = data;
var modal = KretaWindowHelper.createWindow("setHetirendWindow", config);
KretaWindowHelper.openWindow(modal, true);
}
tanevRendjeHelper.deleteTanevRendje = function () {
AjaxHelper.DoPost(url.DeleteTanevRendje, { TanevrendjeId: $("#TanevrendjeId").val(), EgyediRogzitesTorles: $("#EgyediRogzitesTorles").prop('checked') }, deleteTanevRendjeResponseOk, feedbackError);
}
function deleteTanevRendjeResponseOk() {
KretaWindowHelper.successFeedBackWindow(KretaWindowHelper.destroyAllWindow);
KretaGridHelper.refreshGrid(gridName);
TanevRendjeCalendarHelper.RefreshCalendar();
}
function tanevRendjeSaveResponseOk() {
KretaWindowHelper.successFeedBackWindow(KretaWindowHelper.destroyAllWindow);
KretaGridHelper.refreshGrid(gridName);
TanevRendjeCalendarHelper.RefreshCalendar();
}
function setHetirendSaveResponseOk() {
KretaWindowHelper.successFeedBackWindow(KretaWindowHelper.destroyAllWindow);
KretaGridHelper.refreshGrid(gridName);
}
function feedbackError(data) {
if (typeof (data.responseJSON.ModelState) !== "undefined") {
AjaxHelper.RemoteErrors($('#' + formName), data.responseJSON.ModelState);
}
else {
var message = data.responseJSON.Message;
KretaWindowHelper.feedbackWindow("@(StringResourcesUtil.GetString(367))" /*Hiba*/, message, true);
}
}
tanevRendjeHelper.setRowEditing = function (rowData) {
return (rowData.NapTip != "@((int)NapTipusEnum.elso_tanitasi_nap)" && rowData.NapTip != "@((int)NapTipusEnum.elso_felev_vege)" && rowData.NapTip != "@((int)NapTipusEnum.utolso_tanitasi_nap)");
}
return tanevRendjeHelper;
})();
</script>
<script>
var TanevRendjeOsztalyCsoportGridHelper = (function () {
var tanevRendjeOsztalyCsoportGridHelper = function () { };
var gridName = "TanevRendjeOsztalyCsoportGrid";
tanevRendjeOsztalyCsoportGridHelper.GetModifiedOsztalyCsoportList = function (e) {
var modifiedRows = KretaGridHelper.getModifiedRows(gridName);
var selectedIdList = TanevRendjeOsztalyCsoportGridHelper.GetSelectedOsztalyCsoportIdList();
var list = {};
$.each(modifiedRows, function (index, row) {
if (($.inArray(row.ID, selectedIdList) != -1) && !row.Hozzarendelve) {
list[row.ID] = true;
} else if (($.inArray(row.ID, selectedIdList) == -1) && row.Hozzarendelve) {
list[row.ID] = false;
}
});
return list;
};
tanevRendjeOsztalyCsoportGridHelper.GetSelectedOsztalyCsoportIdList = function () {
var grid = $("#" + gridName);
var gridData = KretaGridHelper.getKendoGridData(gridName);
var selectedIds = [];
var selectedCheckboxList = grid.find("input[type=checkbox]:checked");
selectedCheckboxList.each(function (index) {
var row = $(this).closest("tr");
var dataItem = gridData.dataItem(row);
selectedIds.push(dataItem.ID);
})
return selectedIds;
};
tanevRendjeOsztalyCsoportGridHelper.RefreshGrid = function () {
KretaGridHelper.refreshGridSearchPanel("TanevRendjeOsztalyCsoportGrid", "searchForm");
}
return tanevRendjeOsztalyCsoportGridHelper;
})();
</script>
<script>
var NaptariHetGridHelper = (function () {
var naptariHetGridHelper = function () { };
var gridName = "NaptariHetGrid";
var hetirendList = @Html.Raw(Json.Encode(Model.HetirendList));
naptariHetGridHelper.GetModifiedHetirendList = function (e) {
var modifiedRows = KretaGridHelper.getModifiedRows(gridName);
var list = {};
$.each(modifiedRows, function (index, row) {
var modifiedHetirend = row.input[0].value;
if (row.Hetirend != modifiedHetirend) {
list[row.ID] = modifiedHetirend != "0" ? modifiedHetirend : null;
}
});
return list;
};
naptariHetGridHelper.SetHetirendAfterCurrent = function (e) {
e.preventDefault();
var gridData = KretaGridHelper.getKendoGridData(gridName);
var currentRow = $(e.currentTarget).closest("tr");
var dataItem = gridData.dataItem(currentRow);
var dropDownList = $("#" + gridName + "_Hetirend_" + dataItem.ID).data("kendoDropDownList");
var currentHetirend = parseInt(dropDownList.value());
var currentRowIndex = $("tr", gridData.tbody).index(currentRow);
var data = gridData.dataSource.data();
for (var i = currentRowIndex + 1; i < data.length; i++) {
dataItem = data[i];
dataItem.dirty = true;
currentHetirend = getNextHetirend(currentHetirend);
dropDownList = $("#" + gridName + "_Hetirend_" + dataItem.ID).data("kendoDropDownList");
dropDownList.value(currentHetirend);
}
}
function getNextHetirend(hetirend) {
var index = $.inArray(hetirend, hetirendList);
if ((index == -1) || (index == hetirendList.length - 1)) {
return hetirendList[0];
}
return hetirendList[index + 1];
}
return naptariHetGridHelper;
})();
</script>
}
<div id="TanevRendjeCalendar">
</div>
<br />
@{
var tanevRendjeFunctionCommandList = new List<FunctionCommand>
{
new FunctionCommand { NameResourceId = 115 /*Új*/, ClientAction="TanevRendjeHelper.openNewTanevRendjeWindow" },
new FunctionCommand { Name = ImportExportCommonResource.Export, ClientAction="TanevRendjeHelper.getExport" }
};
if (Model.HetirendList.Count > 1)
{
tanevRendjeFunctionCommandList.Add(new FunctionCommand { NameResourceId = 4244 /*Hetirend beállítása*/, ClientAction = "TanevRendjeHelper.openSetHetirendWindow" });
}
}
<h3>@StringResourcesUtil.GetString(674/*Tanév rendje*/)</h3>
@{
var grid = Html.KretaGrid<TanevRendjeGridModel>
(
name: "TanevRendjeGrid",
getUrl: new GridApiUrl("TanevRendjeApi", "GetTanevRendjeGrid"),
sort: sort => sort.Add(m => m.Datum).Ascending()
)
.Columns(columns =>
{
columns.Bound(c => c.TanevNev).Width("10%");
})
.LinkButtonColumn(string.Empty, c => c.Datum, "TanevRendjeHelper.openTanevRendjeInfoWindow", GridButtonsEnum.Kivalasztas, format: SDAFormat.Format[SDAFormat.FormatType.ShortDate])
.Columns(columns =>
{
columns.Bound(c => c.NapTipusNev);
columns.Bound(c => c.IsOrarendiNapText).Width("10%");
columns.Bound(c => c.NapNev).Width("10%");
columns.Bound(c => c.HetirendNev).Width("10%");
columns.Bound(c => c.Megjegyzes).Width("15%");
columns.Bound(c => c.ErintettOsztalyCsoportText);
})
.RowFunction(Html, new List<RowFunction>
{
new RowFunction { NameResourceId = 116 /*Módosítás*/, ClientAction= "TanevRendjeHelper.openModifyTanevRendjeWindow", IconEnum = Kreta.Enums.ManualEnums.GridRowFunctionIconEnum.Modositas },
new RowFunction { NameResourceId = 118 /*Adatok*/, ClientAction= "TanevRendjeHelper.openTanevRendjeInfoWindow", IconEnum = Kreta.Enums.ManualEnums.GridRowFunctionIconEnum.Adatok }
})
.FunctionCommand(Html, tanevRendjeFunctionCommandList)
.Sortable(sortable => sortable
.AllowUnsort(true)
.SortMode(GridSortMode.MultipleColumn));
var conditionalRowFunctions = new List<RowFunction>();
conditionalRowFunctions.Add(
new RowFunction { NameResourceId = 117 /*Törlés*/, ClientAction = "TanevRendjeHelper.deleteTanevRendjeConfirmWindow", IconEnum = Kreta.Enums.ManualEnums.GridRowFunctionIconEnum.Torles }
);
grid.ConditionalRowFunction(Html, conditionalRowFunctions, "TanevRendjeHelper.setRowEditing");
}
<div>@grid</div>