kreta/KretaWeb/Scripts/OsztalyCsoportbaSorolas.js
2024-03-13 00:33:46 +01:00

446 lines
15 KiB
JavaScript

var SorolasLogic = function () {
var helper = function () {};
var formName = 'SorolasForm';
var fromSelectName = 'multiselect';
var toSelectName = 'multiselect_to';
var toDdl = 'ToDDL';
var fromDdl = 'FromDDL';
var keltezesHelyeName = 'KeltezesHelye';
var keltezesDatumaName = 'KeltezesDatuma';
helper.FromUrl = '';
helper.FromAdditionalFunction = null;
helper.ToUrl = '';
helper.ToAdditionalFunction = null;
helper.SaveUrl = '';
helper.SaveAdditionalFunction = null;
helper.SaveOnErrorFunction = null;
helper.IsDefaultFeedbackWindow = true;
helper.SelectedOsztalyId = null;
helper.JogviszonyVegeValidationMessage = '';
helper.JogvMegszuneseJogcimTipusIdValidationMessage = '';
helper.Save = function (zaradekTextName) {
if (!CommonUtils.isNullOrEmpty(zaradekTextName)) {
var zaradekText = $('#' + zaradekTextName);
var keltezesHelyeText = $('#' + keltezesHelyeName);
var keltezesDatumaDP = $('#' + keltezesDatumaName);
zaradekText.removeClass('error');
keltezesHelyeText.removeClass('error');
keltezesDatumaDP.removeClass('error');
$('#' + zaradekTextName + '-error')
.parent()
.remove();
if ($('#' + toSelectName + ' option.red').length == 0) {
zaradekText.attr('data-rule-required', 'false');
zaradekText.attr('aria-required', 'false');
zaradekText.rules('remove', 'required');
zaradekText.rules('add', { required: false });
keltezesHelyeText.attr('data-rule-required', 'false');
keltezesHelyeText.attr('aria-required', 'false');
keltezesHelyeText.rules('remove', 'required');
keltezesDatumaDP.attr('data-rule-required', 'false');
keltezesDatumaDP.attr('aria-required', 'false');
keltezesDatumaDP.rules('remove', 'required');
} else {
zaradekText.attr('data-rule-required', 'true');
zaradekText.attr('aria-required', 'true');
zaradekText.rules('add', 'required');
keltezesHelyeText.attr('data-rule-required', 'true');
keltezesHelyeText.attr('aria-required', 'true');
keltezesHelyeText.rules('add', 'required');
keltezesDatumaDP.attr('data-rule-required', 'true');
keltezesDatumaDP.attr('aria-required', 'true');
keltezesDatumaDP.rules('add', 'required');
}
CheckJogviszonyValidation();
var validator = $('#' + formName).validate();
$('#' + zaradekTextName, '#' + formName).each(function () {
validator.successList.push(this); //mark as error free
validator.showErrors(); //remove error messages if present
});
//validator.resetForm();//remove error class on name elements and clear history
validator.reset(); //remove all error and success data
}
var fromValue = $('#' + fromSelectName).val();
KretaOsztalybaSorolasHelper.selectAllOptions(fromSelectName);
var toValue = $('#' + toSelectName).val();
KretaOsztalybaSorolasHelper.selectAllOptions(toSelectName);
var json = KretaOsztalybaSorolasHelper.createJson(formName);
if ($('#' + formName).valid()) {
if (json.ToElements.length > 0) {
if (!CommonUtils.isNullOrEmpty(zaradekTextName)) {
if (CommonUtils.isNullOrEmpty(zaradekText.val())) {
//Minden elemnel van mentett ki/atsorolasi zaradek de a szoveg nincs kitoltve
if ($('#' + toSelectName + ' option.red').length === 0) {
SaveAtsorolas(json);
}
} else {
//Van akinél van rögzített és van akinél még nincs. Felületen ki van töltve
if (
$('#' + toSelectName + ' option.green').length > 0 &&
$('#' + toSelectName + ' option.red').length > 0
) {
KretaWindowHelper.feedbackWindowWithThreeButton(
Globalization.Kerdes,
Globalization.EgyesTanulokMarRendelkeznekKiAtsorolasiZaradekkalKerdes,
false,
Globalization.RogzitesMindenkinek,
Globalization.RogzitesAkinekMegNincsen,
Globalization.Vissza,
RogzitesMindenkinek,
RogzitesAkinekMegNincsen,
null
);
}
//Felületen meg van adva és vagy csak záradékkal rendelkező elemek vannak, vagy csak záradékkal nem rendelkezőek
if (
$('#' + toSelectName + ' option.green').length === 0 ||
$('#' + toSelectName + ' option.red').length === 0
) {
RogzitesMindenkinek();
}
}
} else {
RogzitesMindenkinek(json);
}
} else {
KretaWindowHelper.feedbackWindow(
Globalization.Hiba,
Globalization.MenteshezLegalabbEgyTanulo,
true
);
}
}
KretaOsztalybaSorolasHelper.deSelectAllOptions(fromSelectName);
$('#' + fromSelectName).val(fromValue);
KretaOsztalybaSorolasHelper.deSelectAllOptions(toSelectName);
$('#' + toSelectName).val(toValue);
};
helper.changeFromDdl = function (dynamicPropertiesObject) {
var senderValue = $('#' + fromDdl)
.data('kendoComboBox')
.value();
if (senderValue != '') {
if (KretaOsztalybaSorolasHelper.checkPrePost(fromDdl)) {
var data = createChangeDdlData(
{ Id: senderValue },
dynamicPropertiesObject
);
AjaxHelper.DoGet(
helper.FromUrl,
data,
KretaOsztalybaSorolasHelper.replaceFromTanuloList
);
if (typeof helper.FromAdditionalFunction === 'function') {
helper.FromAdditionalFunction();
}
}
} else {
KretaOsztalybaSorolasHelper.removeOptions(fromSelectName);
}
};
helper.changeToDdl = function (dynamicPropertiesObject) {
var sender = $('#' + toDdl).data('kendoComboBox');
var senderValue = sender.value();
if (senderValue != '') {
helper.SelectedOsztalyId = senderValue;
if (window.oldComboBoxValue != '') {
KretaWindowHelper.confirmWindow(
Globalization.Kerdes,
Globalization.OsztalyCsoportbaSorolasModositasFigyelmeztetes,
function () {
changeToAjax(senderValue, dynamicPropertiesObject);
window.oldComboBoxValue = '';
helper.setDateRequiredDivVisibility();
},
senderValue,
function () {
sender.value(window.oldComboBoxValue);
window.oldComboBoxValue = '';
},
Globalization.Rendben,
Globalization.Vissza
);
} else {
changeToAjax(senderValue, dynamicPropertiesObject);
}
} else {
KretaOsztalybaSorolasHelper.removeOptions(toSelectName);
helper.SelectedOsztalyId = null;
}
};
helper.init = function (dropKovTanevAlert) {
window.oldComboBoxValue = '';
KretaOsztalybaSorolasHelper.setMultiselectButton(toDdl);
setTimeout(function () {
function combobox_open(e) {
window.oldComboBoxValue = $('#' + toDdl)
.data('kendoComboBox')
.value();
}
$('#' + toDdl)
.data('kendoComboBox')
.bind('open', combobox_open);
}, 1);
if (typeof dropKovTanevAlert !== 'undefined' && dropKovTanevAlert) {
KretaWindowHelper.feedbackWindow(
Globalization.Hiba,
Globalization.HianyzoKovTanev /*A rendszerben nem található meg jelenleg következő tanév, így a besorolás nem lehetséges!*/,
true
);
}
};
helper.initDate = function (id) {
$('#' + id).focusout(function () {
kendoControl = $(this).data('kendoDatePicker');
var value = $(this).val().replace(' ', '').replace(' ', '');
var dateValue = new Date(value);
var minDate = kendoControl.min();
var maxDate = kendoControl.max();
var deleteDatePickerValue = false;
if (minDate != null) {
if (dateValue < minDate) {
deleteDatePickerValue = true;
}
}
if (maxDate != null) {
if (dateValue > maxDate) {
deleteDatePickerValue = true;
}
}
if (deleteDatePickerValue) {
kendoControl.value('');
}
});
$('#Datum').on('focusout', function () {
$('#Datum').data('kendoDatePicker').trigger('change');
});
};
helper.setDate = function (id, datum) {
$('#' + id)
.data('kendoDatePicker')
.value(datum);
$('#' + id)
.focus()
.focusout();
$('#' + id)
.data('kendoDatePicker')
.trigger('change');
};
helper.setFromAndToDdl = function (dynamicPropertiesObject) {
helper.changeFromDdl(dynamicPropertiesObject);
helper.changeToDdl(dynamicPropertiesObject);
};
helper.setDateRequiredDivVisibility = function () {
if ($('#Datum').length) {
if (
!CommonUtils.isNullOrUndefined($('#Datum')) &&
!CommonUtils.isNullOrUndefined($('#Datum').data('kendoDatePicker')) &&
!CommonUtils.isNullOrUndefined(
$('#Datum').data('kendoDatePicker').value()
)
) {
$('#dateRequiredDiv').hide();
$('#multiselect_rightAll').prop('disabled', false);
$('#multiselect_rightSelected').prop('disabled', false);
$('#multiselect_leftAll').prop('disabled', false);
$('#multiselect_leftSelected').prop('disabled', false);
} else {
$('#dateRequiredDiv').show();
$('#multiselect_rightAll').prop('disabled', true);
$('#multiselect_rightSelected').prop('disabled', true);
$('#multiselect_leftAll').prop('disabled', true);
$('#multiselect_leftSelected').prop('disabled', true);
}
}
};
function changeToAjax(senderValue, dynamicPropertiesObject) {
if (KretaOsztalybaSorolasHelper.checkPrePost(toDdl)) {
var data = createChangeDdlData(
{ Id: senderValue },
dynamicPropertiesObject
);
AjaxHelper.DoGet(
helper.ToUrl,
data,
KretaOsztalybaSorolasHelper.replaceToTanuloList
);
if (typeof helper.ToAdditionalFunction === 'function') {
helper.ToAdditionalFunction();
}
}
}
function createChangeDdlData(originalData, dynamicPropertiesObject) {
if (!CommonUtils.isNullOrUndefined(dynamicPropertiesObject)) {
originalData = Object.assign(originalData, dynamicPropertiesObject);
}
var data = null;
if (
!CommonUtils.isNullOrUndefined($('#Datum')) &&
!CommonUtils.isNullOrUndefined($('#Datum').data('kendoDatePicker')) &&
!CommonUtils.isNullOrUndefined(
$('#Datum').data('kendoDatePicker').value()
)
) {
var datum = moment
.utc(kendo.parseDate($('#Datum').data('kendoDatePicker').value(), 'u'))
.local()
.format();
if (!CommonUtils.isNullOrEmpty(datum)) {
data = {
datum: datum
};
originalData = Object.assign(originalData, data);
}
}
if (
!CommonUtils.isNullOrUndefined($('#KilepesDatum')) &&
!CommonUtils.isNullOrUndefined(
$('#KilepesDatum').data('kendoDatePicker')
) &&
!CommonUtils.isNullOrUndefined(
$('#KilepesDatum').data('kendoDatePicker').value()
)
) {
var datum = moment
.utc(
kendo.parseDate(
$('#KilepesDatum').data('kendoDatePicker').value(),
'u'
)
)
.local()
.format();
if (!CommonUtils.isNullOrEmpty(datum)) {
data = {
kilepesDatum: datum
};
originalData = Object.assign(originalData, data);
}
}
return originalData;
}
function saveFeedBackOk(afterSaveFunction) {
if (typeof afterSaveFunction === 'function') {
afterSaveFunction();
}
if (helper.IsDefaultFeedbackWindow) {
KretaWindowHelper.feedbackWindow(
Globalization.Siker,
Globalization.SikeresMentes,
false
);
}
KretaOsztalybaSorolasHelper.resetForm(fromDdl, toDdl);
}
function RogzitesAkinekMegNincsen() {
var json = KretaOsztalybaSorolasHelper.createJson(formName);
var zaradekRogzitesArray = new Array();
$.each(json.ToElements, function (key, value) {
if (value.isVanMentettVegzaradek) {
zaradekRogzitesArray.push({
Id: value.Id,
fromid: value.fromid,
jogviszonycount: value.jogviszonycount,
jogviszonyids: value.jogviszonyids,
isVanMentettVegzaradek: value.isVanMentettVegzaradek,
isKellFeluletenMegadottZaradekRogzitese: false
});
} else {
zaradekRogzitesArray.push({
Id: value.Id,
fromid: value.fromid,
jogviszonycount: value.jogviszonycount,
jogviszonyids: value.jogviszonyids,
isVanMentettVegzaradek: value.isVanMentettVegzaradek,
isKellFeluletenMegadottZaradekRogzitese: true
});
}
});
json.ToElements = zaradekRogzitesArray;
SaveAtsorolas(json);
}
function RogzitesMindenkinek() {
var json = KretaOsztalybaSorolasHelper.createJson(formName);
var zaradekRogzitesArray = new Array();
$.each(json.ToElements, function (key, value) {
zaradekRogzitesArray.push({
Id: value.Id,
fromid: value.fromid,
jogviszonycount: value.jogviszonycount,
jogviszonyids: value.jogviszonyids,
isVanMentettVegzaradek: value.isVanMentettVegzaradek,
isKellFeluletenMegadottZaradekRogzitese: true
});
});
json.ToElements = zaradekRogzitesArray;
SaveAtsorolas(json);
}
function SaveAtsorolas(json) {
AjaxHelper.DoValidationPost(
helper.SaveUrl,
formName,
json,
function () {
saveFeedBackOk(helper.SaveAdditionalFunction);
},
helper.SaveOnErrorFunction
);
}
function CheckJogviszonyValidation() {
var jogviszonyVizsgalat = $("#IsJogviszonyVizsgalat").val();
if (jogviszonyVizsgalat !== undefined) {
var jogviszonyVege = $('#JogviszonyVege');
var jogvMegszuneseJogcimTipusId = $('#JogvMegszuneseJogcimTipusId');
if (jogviszonyVizsgalat === 'true') {
CommonUtils.UpdateRequiredProperies((jogviszonyVege !== undefined && jogviszonyVege !== null && jogviszonyVege.length > 0), '#JogviszonyVege', helper.JogviszonyVegeValidationMessage)
CommonUtils.UpdateRequiredProperies((jogvMegszuneseJogcimTipusId !== undefined && jogvMegszuneseJogcimTipusId !== null && jogvMegszuneseJogcimTipusId.length > 0), '#JogvMegszuneseJogcimTipusId', helper.JogvMegszuneseJogcimTipusIdValidationMessage)
}
else {
CommonUtils.UpdateRequiredProperies(false, '#JogviszonyVege', helper.JogviszonyVegeValidationMessage)
CommonUtils.UpdateRequiredProperies(false, '#JogvMegszuneseJogcimTipusId', helper.JogvMegszuneseJogcimTipusIdValidationMessage)
}
}
}
return helper;
};