kreta/KretaWeb/Areas/Tantargy/Views/Shared/TantargyFelosztasFelveteleModal.cshtml
2024-03-13 00:33:46 +01:00

270 lines
13 KiB
Text

@using Kreta.Web.Helpers.Grid
@using Kreta.Web.Helpers
@using Kreta.Web.Areas.Tantargy.Models
@using Kreta.Resources
@model TantargyFelosztasFelveteleModel
<div class="container-fluid details">
@{
using (Html.KretaForm("tantargyFelosztasForm"))
{
<div class="row">
<div class="col-xs-6 col-sm-6">
@Html.KretaComboBoxFor(x => x.TanarId, Model.TanarList, htmlAttributes: new Dictionary<string, object>() { { "class", "fullwidth" } }, onChangeFunction: "TantargyFelosztasHelper.onDataChange()", isSingleElementSet: !Model.IsFromSzervezet).AutoBind(true).RenderWithName()
</div>
</div>
}
}
@{
var grid = Html.KretaGrid<TantargyFelosztasFelvetelGridModel>(
"TantargyFelosztasFelvetelGrid",
new GridApiUrl(Model.ApiControllerName, "GetTantargyFelosztasokFelvetel", new Dictionary<string, string>() { { "IsFromSzervezet", Model.IsFromSzervezet.ToString() } }),
allowFilterable: false,
dataBoundAdditionalFunction: "FelosztasFelvetelHelper.disableTantargyColumn();",
useToolBar: false
).TableHtmlAttributes(new {@class = "tableLayoutFixed"});
grid.ConditionColumn(OsztalyCsoportResource.OsztalyCsoport, m => m.Valid,
"<span style = \"float: right;\"> #: OsztalyCsoport # </span>", grid.GroupedComboBoxForColumnTemplate(Html, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetOsztalyCsoportListByEvfolyam", isDualisKepzohelyiCsoport = Model.IsFromSzervezet }), m => m.OsztalyCsoport, changeEvent: Model.IsFromSzervezet ? "FelosztasFelvetelHelper.osztalyCsoportChanged" : string.Empty));
grid.ConditionColumn(TantargyResource.Tantargy, m => m.Valid,
"<span style = \"float: right;\"> #: Tantargy # </span>", grid.ComboBoxForColumnTemplate(Html, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = Model.ApiControllerName, action = "GetTantargyakDD" }), m => m.Tantargy));
if (!Model.IsFromSzervezet)
{
grid.ConditionColumn(OrarendResource.Oraszam, m => m.Valid,
"<span style = \"float: right;\"> #: Oraszam # </span>", grid.NumericBoxForColumnTemplate(Html, m => m.Oraszam, max: Kreta.Core.Constants.General.TantargyfelosztasImportMaxOraszam, precision: 2, step: 0.25, min: 0), 100);
grid.ConditionColumn(OrarendResource.Tulora, m => m.Valid,
"<span style = \"float: right;\"> #: Tuloraszam # </span>", grid.NumericBoxForColumnTemplate(Html, m => m.Tuloraszam, max: Kreta.Core.Constants.General.TantargyfelosztasImportMaxOraszam, precision: 2, step: 0.25, min: 0), 100);
grid.ConditionColumn(TantargyfelosztasResource.MegbizasiOraszam, m => m.Valid,
"<span style = \"float: right;\"> #: MegbizasiOraszam # </span>", grid.NumericBoxForColumnTemplate(Html, m => m.MegbizasiOraszam, max: Kreta.Core.Constants.General.TantargyfelosztasImportMaxOraszam, precision: 2, step: 0.25, min: 0), 160);
grid.ConditionColumn(TantargyResource.Oraszamkorrekcio, m => m.Valid,
"<span style = \"float: left;\"> #: OsszevontOra_BNAME # </span>", grid.CheckBoxColumnTemplate("OsszevontOra", m => m.OsszevontOra, true), 100);
grid.ConditionColumn(TantargyResource.NemzetisegiOra, m => m.Valid,
"<span style = \"float: left;\"> #: NemzetisegiOra_BNAME # </span>", grid.CheckBoxColumnTemplate("NemzetisegiOra", m => m.NemzetisegiOra, true), 140);
}
grid.Sortable(sortable => sortable
.AllowUnsort(true)
.SortMode(GridSortMode.MultipleColumn));
}
<div class="row">
<div class="col-xs-12 col-sm-12">
@(grid)
</div>
</div>
</div>
<script>
var FelosztasFelvetelHelper = (function() {
var felosztasFelvetelHelper = function() {}
felosztasFelvetelHelper.Savefelosztas = function () {
if (checkTanar() && checkdataset()) {
var modRows = KretaGridHelper.getModifiedRows("TantargyFelosztasFelvetelGrid");
var felosztasData = [modRows.length];
if (!CommonUtils.parseBool("@Model.IsFromSzervezet")) {
$.each(modRows, function (index, value) {
felosztasData[index] = {
CsoportID: value.input[0].value,
TantargyID: value.input[1].value,
Oraszam: value.input[2].value.replace(".", ","),
TuloraSzam: value.input[3].value.replace(".", ","),
MegbizasiOraszam: value.input[4].value.replace(".", ","),
OsszevontOra: value.input[5].value,
NemzetisegiOra: value.input[6].value
}
});
}
else {
$.each(modRows, function (index, value) {
felosztasData[index] = {
CsoportID: value.input[0].value,
TantargyID: value.input[1].value,
}
});
}
AjaxHelper.DoPost(
"@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new {controller = Model.ApiControllerName, action = "SaveFelosztas" })",
{ tanarID: $("#TanarId").val(), tanevId: $("#Tanev").val(), IsFromSzervezet: "@Model.IsFromSzervezet", felosztasok: felosztasData },
sikeresMentes,
sikertelenMentes);
}
}
felosztasFelvetelHelper.ValidateFelosztas = function () {
var allRows = KretaGridHelper.getAllRows("TantargyFelosztasFelvetelGrid");
var modRows = KretaGridHelper.getModifiedRows("TantargyFelosztasFelvetelGrid");
var vanegyezes = false;
if (!CommonUtils.parseBool("@Model.IsFromSzervezet")) {
$.each(modRows, function (index, value) {
if (!vanegyezes) {
$.each(allRows, function (i, v) {
if (!vanegyezes &&
value.input[0].value == v.OsztalyCsoportID &&
value.input[1].value == v.TantargyID) {
vanegyezes = true;
}
});
}
});
}
else {
$.each(modRows, function (index, value) {
if (!vanegyezes) {
$.each(allRows, function (i, v) {
if (!vanegyezes &&
value.input[0].value == v.OsztalyCsoportID &&
value.input[1].value == v.TantargyID) {
vanegyezes = true;
}
});
}
});
}
if (vanegyezes) {
KretaWindowHelper.confirmWindow("@(CommonResource.Kerdes)",
"@(TantargyResource.ARogziteniKivantTantargyfelosztasSorokMarFelvitelreKerultSzeretneFrissiteniAJelenlegiTantargyfelosztast)",
FelosztasFelvetelHelper.Savefelosztas);
} else {
FelosztasFelvetelHelper.Savefelosztas();
}
}
function sikeresMentes() {
KretaWindowHelper.successFeedBackWindow(closeWindows,
"@(CommonResource.AMuveletSikeresenMegtortentAModositastKuldjeElAFentartojanak)");
}
function sikertelenMentes(e) {
var msg = "@ErrorResource.SikertelenMentes";
if (e.responseJSON.Message && e.responseJSON.Message != "") {
msg = e.responseJSON.Message;
}
KretaWindowHelper.feedbackWindow("@ErrorResource.Hiba", msg, true);
}
function checkdataset() {
var hasError = false;
var allRows = KretaGridHelper.getAllRows("TantargyFelosztasFelvetelGrid");
var missingValue = false;
var emptyRows = "";
var isDualisFoglalkozas = CommonUtils.parseBool("@Model.IsFromSzervezet");
var haveModifiedRows = KretaGridHelper.haveModifiedRows("TantargyFelosztasFelvetelGrid");
$.each(allRows, function (index, value) {
if (value.input.length != 0) {
var thisRowEmpty = false;
if (isDualisFoglalkozas && $.trim(value.input[0].value) == "" &&
$.trim(value.input[1].value) == "") {
thisRowEmpty = true;
} else if (!isDualisFoglalkozas) {
if ($.trim(value.input[0].value) == "" &&
$.trim(value.input[1].value) == "" &&
$.trim(value.input[2].value) == "") {
thisRowEmpty = true;
}
}
if (thisRowEmpty == false) {
var isCurrentRowInvalid = false;
var widget = $("#TantargyFelosztasFelvetelGrid_OsztalyCsoport_" + value.ID).data("kendoComboBox");
if (widget.value() == widget.text()) {
widget.value("");
value.input[0].value = "";
}
if (isDualisFoglalkozas && value.input[0].value == "" ||
value.input[1].value == "") {
isCurrentRowInvalid = true;
}
else if (!isDualisFoglalkozas) {
if (value.input[0].value == "" ||
value.input[1].value == "" ||
value.input[2].value == "") {
isCurrentRowInvalid = true;
} else if (value.input[3].value != "" || value.input[4].value != "") {
var oraszam = parseFloat(value.input[2].value.replace(",", "."));
var tulora = 0, megbizasiOraszam = 0;
if (value.input[3].value != "") {
tulora = parseFloat(value.input[3].value.replace(",", "."));
}
if (value.input[4].value != "") {
megbizasiOraszam = parseFloat(value.input[4].value.replace(",", "."));
}
if (oraszam < tulora || oraszam < megbizasiOraszam) {
isCurrentRowInvalid = true;
}
}
}
if (isCurrentRowInvalid) {
missingValue = true;
if (emptyRows == "") {
emptyRows += (index + 1) + ".";
} else {
emptyRows += ", " + (index + 1) + ".";
}
}
}
}
});
if (!haveModifiedRows) {
KretaWindowHelper.warningWindow(
"@(CommonResource.Kotelezo)",
"@(CommonResource.MenteshezKellLegalabbEgySor)");
hasError = true;
} else if (missingValue) {
KretaWindowHelper.warningWindow(
"@(CommonResource.Kotelezo)",
"@(CommonResource.Az)" + emptyRows + "@(TantargyfelosztasResource.TTFFelvitelKotelezoAdat)",
"undefined",
"kitoltesKotelezo");
hasError = true;
}
return !hasError;
}
function checkTanar() {
if ($("#TanarId").val() == "" || $("#Tanev").val() == "") {
KretaWindowHelper.warningWindow(
"@(CommonResource.Kotelezo)",
"@(TantargyfelosztasResource.FelvitelhezTanrKotelezo)",
"undefined",
"tanarKotelezo");
return false;
} else {
return true;
}
}
function closeWindows() {
KretaGridHelper.refreshGrid("TantargyFelosztasGrid");
KretaWindowHelper.destroyAllWindow();
}
felosztasFelvetelHelper.osztalyCsoportChanged = function (e) {
var name = $(e.sender.input)[0].name;
var tantargyname = name.replace('OsztalyCsoport', 'Tantargy').replace('_input', '');
var tantargy = $('#' + tantargyname);
if (e.sender.value() != '' && tantargy.val() == '') {
tantargy.data('kendoComboBox').value(@Model.DualisKepzesTantargyId);
}
}
felosztasFelvetelHelper.disableTantargyColumn = function () {
if (CommonUtils.parseBool("@Model.IsFromSzervezet")) {
var tantargyakComboDiv = $('[name^="TantargyFelosztasFelvetelGrid_Tantargy"]').parents("div .gridComboBox");
if (!tantargyakComboDiv.hasClass("disabledItem")) {
tantargyakComboDiv.addClass("disabledItem");
}
}
}
return felosztasFelvetelHelper;
})();
</script>