kreta/KretaWeb/Areas/Orarend/Views/TanariOrarend/HaziFeladat_Tab.cshtml
2024-03-13 00:33:46 +01:00

391 lines
17 KiB
Text

@using Kreta.Web.Areas.Orarend.Models;
@using Kreta.Web.Helpers.Modal;
@using Kreta.Framework;
@using Kreta.Web.Security;
@using Kreta.Web.Helpers;
@using Kreta.Web.Areas.Orarend.Models;
@using Kreta.Resources;
@using Kreta.Web.Helpers.Grid;
@using Kreta.BusinessLogic.Classes;
@using Kreta.Core;
@using Kreta.Web.Areas.Tanar.Models;
@using Kreta.Enums.ManualEnums;
@model HaziFeladatNaplozas
@{
Layout = null;
const string HaziFeladatCsatolmanyokApi = Kreta.Web.Constants.ApiControllers.HaziFeladatCsatolmanyokApi;
const string gridName = "HFCsatolmanyGrid";
}
<style>
.uploadInfo {
font-weight: bold;
}
.uploadInfo ul > li {
margin-left: 15px;
}
.k-upload-selected {
display:none;
}
.k-button.k-clearUploadButton {
margin-left: 5px;
}
</style>
<script type="text/javascript">
var HazifeladatFileUploadHelper = (function () {
var hazifeladatFileUploadHelper = function () { };
var gridName = "@gridName";
var uploadDone = true;
var url = {
DeleteCsatolmany: "@Url.HttpRouteUrl(Kreta.Web.Constants.RouteKey.ActionApi, new { controller = HaziFeladatCsatolmanyokApi, action = "DeleteCsatolmany" })",
DownloadCsatolmany: "@Url.HttpRouteUrl(Kreta.Web.Constants.RouteKey.ActionApi, new { controller = HaziFeladatCsatolmanyokApi, action = "DownloadCsatolmanyFile" })",
}
var currentFilesSizeInBytes = 0;
hazifeladatFileUploadHelper.select = function (e) {
KretaFileUpload.StopAnimation();
var attachments = e.files;
var allowedFileExtensionArray = @Html.Raw(Json.Encode(Model.AllowedFileExtensions));
for (var i = 0; i < attachments.length; i++) {
if ($.inArray(attachments[i].extension.toLowerCase(), allowedFileExtensionArray) === -1) {
e.preventDefault();
KretaWindowHelper.feedbackWindow("@CommonResource.Hiba", "@ErrorResource.AFajlKiterjeszteseVagyTipusaNemMegfelelo", true);
return;
}
}
var usedFilesSizeInKiloBytes = parseInt("@Model.UsedFilesSizeInKiloBytes");
var maxAllowedFilesSizeInKiloBytes = parseInt("@Model.MaxAllowedFilesSizeInKiloBytes");
var usedFilesSizeInBytesTotal = parseInt("@Model.UsedFilesSizeInKiloBytesTotal");
var maxAllowedFilesSizeInKiloBytesTotal = parseInt("@Model.MaxAllowedFilesSizeInKiloBytesTotal");
currentFilesSizeInBytes += attachments.reduce((acc, curr) => acc + curr.size, 0);
if (maxAllowedFilesSizeInKiloBytes < ((currentFilesSizeInBytes / 1024) + usedFilesSizeInKiloBytes)) {
e.preventDefault();
var errorMessage = "@ErrorResource.AtlepteAHazifeladathozMegengedettFeltolthetoAdatmennyiseget";
errorMessage = errorMessage.format(
"<br />",
maxAllowedFilesSizeInKiloBytes,
(usedFilesSizeInKiloBytes).toFixed(2),
(currentFilesSizeInBytes / 1024).toFixed(2));
currentFilesSizeInBytes -= attachments.reduce((acc, curr) => acc + curr.size, 0);
KretaWindowHelper.feedbackWindow("@CommonResource.Hiba", errorMessage, true);
return;
}
if (maxAllowedFilesSizeInKiloBytesTotal < ((currentFilesSizeInBytes / 1024) + (usedFilesSizeInBytesTotal / 1024))) {
e.preventDefault();
var errorMessage = "@ErrorResource.AtlepteAzOsszesenMegengedettFeltolthetoAdatmennyiseget";
errorMessage = errorMessage.format(
"<br />",
maxAllowedFilesSizeInKiloBytesTotal,
(usedFilesSizeInBytesTotal / 1024).toFixed(2),
(currentFilesSizeInBytes / 1024).toFixed(2));
currentFilesSizeInBytes -= attachments.reduce((acc, curr) => acc + curr.size, 0);
KretaWindowHelper.feedbackWindow("@CommonResource.Hiba", errorMessage, true);
return;
}
$(".k-clearUploadButton").remove();
$(".k-upload-button").after('<button type="button" class="k-button k-clearUploadButton" onclick = "HazifeladatFileUploadHelper.ClearFileUpload()"> Törlés</button>');
}
hazifeladatFileUploadHelper.ClearFileUpload = function () {
$("#csatolmany").data("kendoUpload")._removeFileEntry($(".k-file"));
$(".k-clearUploadButton").remove();
}
hazifeladatFileUploadHelper.success = function (e) {
var csatolmanyId = e.response;
if (typeof csatolmanyId === "number") {
$("#CsatolmanyId").val(csatolmanyId);
}
}
hazifeladatFileUploadHelper.deleteConfirm = function (rowData) {
KretaWindowHelper.confirmWindow("@CommonResource.Figyelmeztetes", "@(TanarResource.BiztosanToroliSzeretneCsatolmanyt)", deleteCsatolmany, rowData.ID);
}
function deleteCsatolmany(data) {
AjaxHelper.DoPost(url.DeleteCsatolmany, data, deleteResponseOk, responseError);
}
function responseError(data) {
KretaGridHelper.refreshGrid(gridName);
AjaxHelper.ShowError(data);
}
function deleteResponseOk() {
$("#CsatolmanyId").val('');
KretaGridHelper.refreshGrid(gridName);
}
hazifeladatFileUploadHelper.download = function (rowData) {
CommonUtils.formFileDownload(url.DownloadCsatolmany, rowData.ID);
};
function responseError(data) {
KretaGridHelper.refreshGridSearchPanel(gridName, searchFormName);
AjaxHelper.ShowError(data);
}
hazifeladatFileUploadHelper.upload = function (e) {
uploadDone = false;
}
hazifeladatFileUploadHelper.complete = function (e) {
uploadDone = true;
}
hazifeladatFileUploadHelper.uploadIsDone = function () {
return uploadDone;
}
hazifeladatFileUploadHelper.error = function (e) {
//var err = $.parseJSON(e.XMLHttpRequest.responseText);
//KretaWindowHelper.feedbackWindow(Globalization.Hiba, err.Message.replace(CommonUtils.LineBreakRegex, '<br />'), true);
}
return hazifeladatFileUploadHelper;
})();
</script>
@Html.ValidationSummary()
<div class="container-fluid">
@Html.HiddenFor(m => m.Id)
@Html.HiddenFor(m => m.OrarendiOraId)
@Html.HiddenFor(m => m.NapDatuma)
@Html.HiddenFor(m => m.HelyettesitoId)
@Html.HiddenFor(m => m.CsatolmanyId)
<div class="row">
<div class="col-sm-6">
@Html.KretaDatePickerFor(m => m.Hatarido).Min(DateTime.Today.AddDays(1)).Max(DateTime.Parse(Kreta.Core.Constants.MinMaxValues.MaxDate)).RenderWithName(isCustomRequired: true)
</div>
<div style="float:right; padding-left: 5px;">
@if (Model.IsTanarVehetFelHazitNaplozasNelkul)
{
@Html.KretaButton(new ModalButtonModel() { Name = "haziFeladatMentes", Text = "HÁZI FELADAT MENTÉSE", Enabled = true, EventName = Model.IsHaziFeladatHelper ? "function(){ HazifeladatHelper.SaveHaziFeladat(); }" : "function(){ Naplozashelper.SaveHaziFeladat(); }" })
}
@if (Model.Id != null)
{
@Html.KretaButton(new ModalButtonModel() { Name = "haziFeladatTorles", Text = "HÁZI FELADAT TÖRLÉSE", Enabled = true, EventName = "function(){ HazifeladatHelper.DeleteHaziFeladat(); }" })
}
</div>
</div>
<div class="row">
<div class="col-sm-12">
@Html.KretaHtmlEditorFor(m => m.HaziFeladat).PasteCleanup(p => p
.Css(false)
.MsAllFormatting(false)
.Span(false)
).Events(x=>x.Paste("function(e) { HazifeladatHelper.onPasteEvent(e); }"))
</div>
</div>
@{
<div class="row">
<div class="col-sm-12">
@Html.KretaFileUpload(
"csatolmany",
Url.Action("UploadCsatolmany", "TanariOrarend"),
uploadText: CommonResource.Feltoltes,
onSelectEvent: "function(e) { HazifeladatFileUploadHelper.select(e); }",
onSuccessEvent: "function(e) { HazifeladatFileUploadHelper.success(e); }",
onUploadEvent: "function(e) { HazifeladatFileUploadHelper.upload(e); }",
onCompleteEvent: "function(e) { HazifeladatFileUploadHelper.complete(e); }",
onErrorEvent: "function(e) { HazifeladatFileUploadHelper.error(e); }",
htmlAttributes: new Dictionary<string, object> { { "accept", string.Join(", ", Model.AllowedFileExtensions) } }
)
</div>
<div class="col-sm-12">
@Html.Label(string.Format(TanarResource.KorabbanMarFeltoltottAdatmennyiseg, string.Format("{0:0.00}", CommonUtils.ConvertByteToMByte(Model.UsedFilesSizeInKiloBytesTotal))))
<br />
@Html.Label(string.Format(TanarResource.MaximalisMegengedettAdatmennyiseg, string.Format("{0:0.00}", CommonUtils.ConvertKByteToGByte(Model.MaxAllowedFilesSizeInKiloBytes))))
</div>
<div class="col-sm-12 uploadInfo">
<span>@CommonResource.MegengedettTipusok</span>
<ul>
<li>.txt, .pdf, .doc, .docx</li>
<li>.xls, .xlsx</li>
<li>.ppt, .pptx</li>
<li>.bmp, .jpg, .jpeg, .png</li>
<li>.rar, .zip</li>
</ul>
</div>
</div>
if (Model.Id.IsEntityId())
{
<div class="row">
<div class="col-sm-12" id="sumHaziFeladatCsatolmanyokGridDiv">
<a id="haziFeladatCsatolmanyokIcon" class="k-icon k-plus" href="#"></a>
<label class="windowInputLabel">@OrarendResource.CsatoltAllomanyok:</label>
</div>
<script>
$(document).ready(function () {
$("#sumHaziFeladatCsatolmanyokGridDiv").click(function () {
if ($("#haziFeladatCsatolmanyokGridDiv").hasClass("displayNone")) {
$("#haziFeladatCsatolmanyokGridDiv").removeClass("displayNone");
$("#haziFeladatCsatolmanyokIcon").removeClass("k-plus").addClass("k-minus");
}
else {
$("#haziFeladatCsatolmanyokGridDiv").addClass("displayNone");
$("#haziFeladatCsatolmanyokIcon").removeClass("k-minus").addClass("k-plus");
}
});
});
</script>
</div>
<div class="row displayNone" id="haziFeladatCsatolmanyokGridDiv">
<div class="col-sm-12">
@(
Html.KretaGrid<HFCsatolmanyGridModel>
(
gridName,
new GridApiUrl(HaziFeladatCsatolmanyokApi, "GetHFCsatolmanyokGridForHazi",
new Dictionary<string, string>
{
{ "haziFeladatId", Model.Id.ToString() }
}),
allowScrolling: true,
showSorszam: false,
sort: sort => sort.Add(s => s.FeltoltesDatum).Ascending()
)
.Columns(columns =>
{
columns.Bound(c => c.FajlNev).Width("30%");
columns.Bound(c => c.FajlMeretMB).Format("{0:n}").Width("30%");
columns.Bound(c => c.FeltoltesDatum).Width("30%").Format(SDAFormat.Format[SDAFormat.FormatType.ShortDate]);
})
.RowFunction(Html, new List<RowFunction>
{
new RowFunction
{
Name = CommonResource.Torles,
ClientAction= "HazifeladatFileUploadHelper.deleteConfirm",
IconEnum = GridRowFunctionIconEnum.Torles
}
})
.RowFunction(Html, new List<RowFunction>
{
new RowFunction
{
Name = CommonResource.Letoltes,
ClientAction= "HazifeladatFileUploadHelper.download",
IconEnum = GridRowFunctionIconEnum.Letoltes
}
})
.Sortable(sortable => sortable
.AllowUnsort(true)
.SortMode(GridSortMode.MultipleColumn))
)
</div>
</div>
}
}
</div>
<script type="text/javascript">
var HazifeladatHelper = (function () {
var hazifeladatHelper = function () { };
var tanarHaziFeladatId = parseInt("@Model.Id");
if (isNaN(tanarHaziFeladatId)) { tanarHaziFeladatId = null; }
var saveURL = '@Url.HttpRouteUrl("ActionApi", new {controller = "TanariOrarendApi", action = "SaveHaziFeladatFromDetail" })';
hazifeladatHelper.getModel = function () { return getModel(); };
hazifeladatHelper.onTabActiv = function () { refreshEditor(); };
hazifeladatHelper.SaveHaziFeladat = function () {
if (!HazifeladatFileUploadHelper.uploadIsDone()) {
KretaWindowHelper.confirmWindow("@(CommonResource.Kerdes)", "@(CommonResource.ACsatolmanyFeltolteseNemFejezedottBeBiztosanFolytatja)", function () { saveHazi(); });
} else {
saveHazi();
}
}
function saveHazi() {
var model = getModel();
AjaxHelper.DoPost(saveURL, model, function (data) { sikeresHazifeladatMentes(data); });
}
function sikeresHazifeladatMentes(data) {
var csatolmanyElement = $("#csatolmany");
var fileuploadbutton = $('.k-upload-selected');
if (data.HazifeladatId > 0 && csatolmanyElement.length > 0 && fileuploadbutton.length > 0) {
var uploader = csatolmanyElement.data("kendoUpload");
uploader.bind("upload", function (e) { AjaxHelper.ShowIndicator(); e.data = { hfId: data.HazifeladatId } });
uploader.bind("complete", function (e) { AjaxHelper.HideIndicator(); KretaWindowHelper.destroyAllWindow(); TanariOrarend.FormSearch("searchForm"); KretaWindowHelper.successFeedBackWindow(); });
uploader.bind("error", function (e) { alert("Sikertelen file feltöltés!") });
setTimeout(function () { fileuploadbutton.click(); }, 1); /*set timeout kiveszi a fuggvényt a post success ágából és így külön fel tudjuk dobni neki busy indikatort*/
} else {
KretaWindowHelper.destroyAllWindow(); TanariOrarend.FormSearch("searchForm"); KretaWindowHelper.successFeedBackWindow();
}
}
hazifeladatHelper.DeleteHaziFeladat = function () {
var model = {
"Id": $("#Id").val()
,"OrarendiOraId": $("#OrarendiOraId").val()
, "TanitasiOraId" : "@Model.TanitasiOraId"
};
AjaxHelper.DoPost(saveURL, model, function () { KretaWindowHelper.destroyAllWindow(); TanariOrarend.FormSearch("searchForm"); KretaWindowHelper.successFeedBackWindow(); });
}
function getModel() {
var hatarido = null;
if ($("#Hatarido").data("kendoDatePicker").value() != null) {
hatarido = moment.utc(kendo.parseDate($("#Hatarido").data("kendoDatePicker").value(), "u")).local().format();
}
else {
if ($("#Hatarido").val()) {
hatarido = new Date(($("#Hatarido").val()).replaceAll('.','-'));
}
}
var model = {
"HaziFeladat": $("#HaziFeladat").data("kendoEditor").value(),
"Hatarido": hatarido,
"Id": $("#Id").val(),
"OrarendiOraId": $("#OrarendiOraId").val(),
"NapDatuma": $("#NapDatuma").val(),
"HelyettesitoId": $("#HelyettesitoId").val(),
"CsatolmanyId": $("#CsatolmanyId").val(),
"IsElmaradt": "@Model.IsElmaradt",
"TanitasiOraId" : "@Model.TanitasiOraId"
};
return model;
}
function refreshEditor() {
$("#HaziFeladat").getKendoEditor().refresh();
}
hazifeladatHelper.onPasteEvent = function (e) {
if ((/^<img src="data:image/).test(e.html)) {
e.html = "";
}
}
return hazifeladatHelper;
})();
</script>