init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,684 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TantargyfelosztasImportExport;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TeremImportExport;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Models.EditorTemplates;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class BaseOrarendImportExportController : BaseTantargyfelosztasImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Orarend/AdminTanariOrarend";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string TeremGridName => "TeremGrid";
|
||||
public static string TeremGridRowTemplateName => "TeremGridRowTemplate";
|
||||
|
||||
public static string GridName => "OrarendGrid";
|
||||
public static string GridRowTemplateName => "OrarendGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "OrarendImportExportHelper";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
protected OrarendImportExportModel GetImportExportModel()
|
||||
{
|
||||
TanevCO tanevCo = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo();
|
||||
var oraErvenyessegMinDate = tanevCo.KezdoNap;
|
||||
var oraErvenyessegMaxDate = tanevCo.UtolsoTanitasiNap;
|
||||
|
||||
if (ClaimData.IsActivTanev)
|
||||
{
|
||||
oraErvenyessegMaxDate = tanevCo.UtolsoNap;
|
||||
}
|
||||
|
||||
var today = DateTime.Today;
|
||||
DateTime oraErvenyessegKezdeteValue;
|
||||
if (oraErvenyessegMinDate > today)
|
||||
{
|
||||
oraErvenyessegKezdeteValue = oraErvenyessegMinDate;
|
||||
}
|
||||
else if (oraErvenyessegMaxDate < today)
|
||||
{
|
||||
oraErvenyessegKezdeteValue = oraErvenyessegMaxDate;
|
||||
}
|
||||
else
|
||||
{
|
||||
oraErvenyessegKezdeteValue = today;
|
||||
}
|
||||
|
||||
var model = new OrarendImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
AscAllowedFileExtensions = UploadFileValidator.Configuration.AscImportAllowedFileExtensions,
|
||||
OraErvenyessegKezdeteValue = oraErvenyessegKezdeteValue,
|
||||
OraErvenyessegMinDate = oraErvenyessegMinDate,
|
||||
OraErvenyessegMaxDate = oraErvenyessegMaxDate,
|
||||
OrarendExportKezdete = oraErvenyessegMinDate,
|
||||
OrarendExportVege = oraErvenyessegMaxDate
|
||||
};
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
#region Export
|
||||
|
||||
protected string GetExport(OrarendImportFileUploadCo orarendImportFileUploadCo, DateTime? orarendExportKezdete, DateTime? orarendExportVege, bool isIdoszakonKivuliElemekMegjelenitese, bool isEgyediNapOrainakKihagyasa)
|
||||
{
|
||||
var errorResult = new List<string>();
|
||||
if (!orarendExportKezdete.HasValue)
|
||||
{
|
||||
errorResult.Add(ErrorResource.OrarendErvenyessegKezdeteMegadasaKotelezo);
|
||||
}
|
||||
|
||||
if (!orarendExportVege.HasValue)
|
||||
{
|
||||
errorResult.Add(ErrorResource.OrarendErvenyessegVegeMegadasaKotelezo);
|
||||
}
|
||||
|
||||
if (errorResult.Count > 0)
|
||||
{
|
||||
return string.Join("<br />", errorResult);
|
||||
}
|
||||
|
||||
//NOTE: Az OraErvenyessegVege 00:00-t tartalmaz, de aznap napközben még lehet óra, ezért a következő nap 00:00 időpont a jó és azt mentjük a db-be!
|
||||
orarendExportVege = orarendExportVege.Value.AddDays(1);
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport(orarendImportFileUploadCo, orarendExportKezdete.Value, orarendExportVege.Value, isIdoszakonKivuliElemekMegjelenitese, isEgyediNapOrainakKihagyasa);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
protected JsonResult UploadFile(OrarendImportExportFileUploadModel orarendImportExportFileUploadModel)
|
||||
{
|
||||
var orarendImportFileUploadCo = new OrarendImportFileUploadCo
|
||||
{
|
||||
OrarendImportMuvelet = orarendImportExportFileUploadModel.OrarendImportMuvelet,
|
||||
OrarendImportTipus = orarendImportExportFileUploadModel.OrarendImportTipus,
|
||||
IsNapirendImport = orarendImportExportFileUploadModel.IsNapirendImport,
|
||||
IsTtfImport = orarendImportExportFileUploadModel.IsTtfImport,
|
||||
IsOraszamUpdate = orarendImportExportFileUploadModel.IsOraszamUpdate,
|
||||
IsOsszefuggoSzakmaiGyakorlat = orarendImportExportFileUploadModel.IsOsszefuggoSzakmaiGyakorlat,
|
||||
OrarendiOraLezarasDateTime = orarendImportExportFileUploadModel.OraErvenyessegKezdete
|
||||
};
|
||||
|
||||
switch (orarendImportExportFileUploadModel.OrarendImportTipus)
|
||||
{
|
||||
case (int)OrarendImportTipusEnum.Import:
|
||||
case (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport:
|
||||
UploadFileValidator.ValidateImportFile(orarendImportExportFileUploadModel.ImportFile);
|
||||
break;
|
||||
|
||||
case (int)OrarendImportTipusEnum.AscImport:
|
||||
UploadFileValidator.ValidateAscImportFile(orarendImportExportFileUploadModel.ImportFile);
|
||||
break;
|
||||
}
|
||||
|
||||
var errorResult = new List<string>();
|
||||
if (orarendImportExportFileUploadModel.FeladatellatasiHelyId == null)
|
||||
{
|
||||
errorResult.Add(ErrorResource.FeladatellatasiHelyMegadasaKotelezo);
|
||||
}
|
||||
|
||||
if (!orarendImportExportFileUploadModel.IsTtfImport && orarendImportExportFileUploadModel.IsOraszamUpdate)
|
||||
{
|
||||
errorResult.Add(ErrorResource.IfNotIsTtfImportIsOraszamUpdate);
|
||||
}
|
||||
|
||||
string korabbiMessage;
|
||||
string kesobbiMessage;
|
||||
|
||||
TanevCO tanevCo = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo();
|
||||
orarendImportFileUploadCo.OraErvenyessegMinDate = tanevCo.KezdoNap;
|
||||
orarendImportFileUploadCo.OraErvenyessegMaxDate = tanevCo.UtolsoTanitasiNap;
|
||||
orarendImportFileUploadCo.OraErvenyessegVegzosMaxDate = tanevCo.UtolsoTanitasiNapVegzos;
|
||||
|
||||
//NOTE: Aktív tanévben vagyunk, összefüggő szakmai gyakorlat és valamelyik excel import van, akkor le kell ellenőriznünk,
|
||||
// hogy megfelelőek-e a testreszabásokban lévő összefüggő szakmai gyakorlat kezdő és vég dátumok, illetve ezek lesznek a max és min érvényességi idők.
|
||||
if (ClaimData.IsActivTanev &&
|
||||
orarendImportFileUploadCo.IsOsszefuggoSzakmaiGyakorlat &&
|
||||
(orarendImportFileUploadCo.OrarendImportTipus == (int)OrarendImportTipusEnum.Import || orarendImportFileUploadCo.OrarendImportTipus == (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport))
|
||||
{
|
||||
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
|
||||
orarendImportFileUploadCo.OraErvenyessegMinDate = systemSettingsHelper.GetSystemSettingValue<DateTime>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
|
||||
orarendImportFileUploadCo.OraErvenyessegMaxDate = systemSettingsHelper.GetSystemSettingValue<DateTime>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
|
||||
|
||||
korabbiMessage = ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatKezdete;
|
||||
kesobbiMessage = ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatVege;
|
||||
errorResult.AddRange(ValidateOsszefuggoSzakmaiGyakorlatKezdeteVege(orarendImportFileUploadCo.OraErvenyessegMinDate, orarendImportFileUploadCo.OraErvenyessegMaxDate));
|
||||
}
|
||||
else
|
||||
{
|
||||
korabbiMessage = ImportExportCommonResource.ElsoTanitasiNap;
|
||||
kesobbiMessage = ImportExportCommonResource.UtolsoTanitasiNap;
|
||||
}
|
||||
|
||||
var fileErrorResultList = new List<string>();
|
||||
switch (orarendImportFileUploadCo.OrarendImportTipus)
|
||||
{
|
||||
case (int)OrarendImportTipusEnum.Import:
|
||||
orarendImportExportFileUploadModel.OraErvenyessegVege = orarendImportFileUploadCo.OraErvenyessegMaxDate;
|
||||
errorResult.AddRange(ValidateOraErvenyessegKezdete(orarendImportExportFileUploadModel, orarendImportFileUploadCo.OraErvenyessegMinDate, korabbiMessage, orarendImportFileUploadCo.OraErvenyessegMaxDate, kesobbiMessage));
|
||||
|
||||
if (!errorResult.Any())
|
||||
{
|
||||
Dictionary<int, string> importHeaderList = !orarendImportExportFileUploadModel.IsNapirendImport ? OrarendImportExportHelper.ImportHeaderList : OrarendImportExportHelper.ImportHeaderListNapirend;
|
||||
orarendImportFileUploadCo.ImportData = ImportExportHelper.GetImportDataFromExcel(orarendImportExportFileUploadModel.ImportFile.InputStream, importHeaderList, out fileErrorResultList);
|
||||
if (orarendImportFileUploadCo.ImportData != null)
|
||||
{
|
||||
foreach (List<string> importDataRow in orarendImportFileUploadCo.ImportData)
|
||||
{
|
||||
importDataRow.Insert(0, orarendImportExportFileUploadModel.OraErvenyessegVege.ToConvertableDateString());
|
||||
importDataRow.Insert(0, orarendImportExportFileUploadModel.OraErvenyessegKezdete.ToConvertableDateString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport:
|
||||
if (!errorResult.Any())
|
||||
{
|
||||
Dictionary<int, string> importHeaderList = !orarendImportExportFileUploadModel.IsNapirendImport ? OrarendImportExportHelper.ImportHeaderListOraErvenyessegiIdovel : OrarendImportExportHelper.ImportHeaderListNapirendOraErvenyessegiIdovel;
|
||||
orarendImportFileUploadCo.ImportData = ImportExportHelper.GetImportDataFromExcel(orarendImportExportFileUploadModel.ImportFile.InputStream, importHeaderList, out fileErrorResultList);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case (int)OrarendImportTipusEnum.AscImport:
|
||||
orarendImportExportFileUploadModel.OraErvenyessegVege = orarendImportFileUploadCo.OraErvenyessegMaxDate;
|
||||
errorResult.AddRange(ValidateOraErvenyessegKezdete(orarendImportExportFileUploadModel, orarendImportFileUploadCo.OraErvenyessegMinDate, korabbiMessage, orarendImportFileUploadCo.OraErvenyessegMaxDate, kesobbiMessage));
|
||||
|
||||
if (!errorResult.Any())
|
||||
{
|
||||
try
|
||||
{
|
||||
orarendImportFileUploadCo.ImportData = AscImportExportHelper.GetOrarendImportDataFromAsc(orarendImportExportFileUploadModel.ImportFile.InputStream, orarendImportExportFileUploadModel.OraErvenyessegKezdete.ToConvertableDateString(), orarendImportExportFileUploadModel.OraErvenyessegVege.ToConvertableDateString());
|
||||
}
|
||||
catch (BlException e)
|
||||
{
|
||||
errorResult.Add(e.Message.Replace(Core.Constants.General.Sortores, $"{Core.Constants.General.Sortores}- "));
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
errorResult.AddRange(fileErrorResultList);
|
||||
|
||||
if (errorResult.Count > 0)
|
||||
{
|
||||
JsonResult errorJson = ThrowCustomError(errorResult);
|
||||
return errorJson;
|
||||
}
|
||||
|
||||
//NOTE: FeladatellatasiHelyId.Value nem lehet null a korábbi vizsgálatok miatt!
|
||||
orarendImportFileUploadCo.FeladatellatasiHelyId = orarendImportExportFileUploadModel.FeladatellatasiHelyId.Value;
|
||||
new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(orarendImportFileUploadCo, ClaimData.IsActivTanev);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
private List<string> ValidateOsszefuggoSzakmaiGyakorlatKezdeteVege(DateTime osszefuggoSzakmaiGyakorlatKezdetDatum, DateTime osszefuggoSzakmaiGyakorlatVegDatum)
|
||||
{
|
||||
var errorList = new List<string>();
|
||||
|
||||
var helper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
TanevCO tanevCo = helper.GetTanevInfo();
|
||||
DateTime tanevKezdoNapDate = tanevCo.KezdoNap;
|
||||
DateTime tanevUtolsoNapDate = tanevCo.UtolsoNap;
|
||||
|
||||
if (osszefuggoSzakmaiGyakorlatKezdetDatum > osszefuggoSzakmaiGyakorlatVegDatum)
|
||||
{
|
||||
errorList.Add($@"{ImportExportOrarendResource.AzOsszefuggoSzakmaiGyakorlatKezdeteNemLehetKesobbiDatumMintAVege} {ImportExportOrarendResource.EztABeallitastANyilvantartasMenuTestreszabasMenupontjabanAzEnaploKorlatozasainakBeallitasanalModosithatja}");
|
||||
}
|
||||
else if (tanevKezdoNapDate > osszefuggoSzakmaiGyakorlatKezdetDatum || tanevUtolsoNapDate < osszefuggoSzakmaiGyakorlatVegDatum)
|
||||
{
|
||||
errorList.Add($@"{ImportExportOrarendResource.AzOsszefuggoSzakmaiGyakorlatKezdoEsVegDatumanakATanevElsoTanitasiNapjaEsATanevUtolsoNapjaKozeKellEsnie}");
|
||||
}
|
||||
|
||||
return errorList;
|
||||
}
|
||||
|
||||
private static List<string> ValidateOraErvenyessegKezdete(OrarendImportExportFileUploadModel orarendImportExportFileUploadModel, DateTime oraErvenyessegMinDate, string korabbiMessage, DateTime oraErvenyessegMaxDate, string kesobbiMessage)
|
||||
{
|
||||
var errorList = new List<string>();
|
||||
|
||||
if (orarendImportExportFileUploadModel.OraErvenyessegKezdete == null)
|
||||
{
|
||||
errorList.Add(ImportExportOrarendResource.RequiredOrarendErvenyessegenekKezdete);
|
||||
}
|
||||
else if (orarendImportExportFileUploadModel.OraErvenyessegKezdete < oraErvenyessegMinDate)
|
||||
{
|
||||
errorList.Add(string.Format(ImportExportCommonResource.InvalidKorabbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete, orarendImportExportFileUploadModel.OraErvenyessegKezdete.Value.ToString(Core.Constants.ToStringPattern.HungarianDate), korabbiMessage.ToLowerInvariant(), oraErvenyessegMinDate.ToString(Core.Constants.ToStringPattern.HungarianDate)));
|
||||
}
|
||||
else if (orarendImportExportFileUploadModel.OraErvenyessegKezdete > oraErvenyessegMaxDate)
|
||||
{
|
||||
errorList.Add(string.Format(ImportExportCommonResource.InvalidKesobbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete, orarendImportExportFileUploadModel.OraErvenyessegKezdete.Value.ToString(Core.Constants.ToStringPattern.HungarianDate), kesobbiMessage.ToLowerInvariant(), oraErvenyessegMaxDate.ToString(Core.Constants.ToStringPattern.HungarianDate)));
|
||||
}
|
||||
|
||||
return errorList;
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
SessionConnectionType sessionConnectionType = ConnectionTypeExtensions.GetSessionConnectionType();
|
||||
OrarendImportCo importCo = new OrarendImportExportHelper(sessionConnectionType).ImportCo;
|
||||
List<TantargyItemCo> tantargyCoList = new TantargyHelper(sessionConnectionType).GetTantargyCoList();
|
||||
List<OsztalyItemCo> osztalyCoList = new OsztalyHelper(sessionConnectionType).GetOsztalyCoList();
|
||||
List<CsoportItemCo> csoportCoList = new CsoportHelper(sessionConnectionType).GetCsoportCoList();
|
||||
List<TantargyfelosztasItemCo> tantargyfelosztasCoList = new TantargyFelosztasHelper(sessionConnectionType).GetTantargyfelosztasCoList();
|
||||
List<TeremItemCo> teremCoList = new TeremHelper(sessionConnectionType).GetTeremCoList(isImportValidation:true);
|
||||
List<OrarendItemCo> orarendCoList = new OrarendHelper(sessionConnectionType).GetOrarendCoList().Where(x => x.IsTanoranKivuliFoglalkozas == importCo.IsNapirendImport).ToList();
|
||||
|
||||
bool isTtfImport = importCo.IsTtfImport;
|
||||
var importInfoModel = new OrarendImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetTantargyImportInfoSummary(importCo.TantargyImportJsonItemList, tantargyCoList),
|
||||
GetOsztalyImportInfoSummary(importCo.OsztalyImportJsonItemList, osztalyCoList),
|
||||
GetCsoportImportInfoSummary(importCo.CsoportImportJsonItemList, csoportCoList),
|
||||
GetTantargyfelosztasImportInfoSummary(importCo, tantargyfelosztasCoList, isTtfImport),
|
||||
GetTeremImportInfoSummary(importCo.TeremImportJsonItemList, teremCoList),
|
||||
GetOrarendImportInfoSummary(importCo, orarendCoList)
|
||||
}
|
||||
},
|
||||
TantargyImportItemList = new TantargyImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTantargyImportItemModelList(importCo.TantargyImportJsonItemList, tantargyCoList)
|
||||
},
|
||||
OsztalyImportItemList = new OsztalyImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetOsztalyImportItemModelList(importCo.OsztalyImportJsonItemList, osztalyCoList)
|
||||
},
|
||||
CsoportImportItemList = new CsoportImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetCsoportImportItemModelList(importCo.CsoportImportJsonItemList, csoportCoList)
|
||||
},
|
||||
TantargyfelosztasImportItemList = new TantargyfelosztasImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTantargyfelosztasImportItemModelList(importCo, tantargyfelosztasCoList, isTtfImport)
|
||||
},
|
||||
TeremImportItemList = new TeremImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTeremImportItemModelList(importCo.TeremImportJsonItemList, teremCoList)
|
||||
},
|
||||
MainImportItemList = new OrarendImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetOrarendImportItemModelList(importCo, orarendCoList)
|
||||
},
|
||||
NemImportalhatoItemList = new OrarendImportNemImportalhatoItemListModel
|
||||
{
|
||||
NemImportalhatoItemModelList = GetNemImportalhatoItemModelList(importCo.NemImportalhatoItemList),
|
||||
OrarendImportTipus = importCo.OrarendImportTipus,
|
||||
IsNapirendImport = importCo.IsNapirendImport
|
||||
}
|
||||
};
|
||||
|
||||
var popUpModel = new PopUpModel(importInfoModel, ImportPreviewPopupName);
|
||||
popUpModel.AddCancelBtn(popUpModel, "KretaWindowHelper.destroyAllWindow");
|
||||
popUpModel.AddBtn(popUpModel, "ImportBtnOk", CommonResource.Importalas, $"{JavascriptHelperClassName}.import", "BtnOk", setDisabledAfterClick: true);
|
||||
popUpModel.AddBtn(popUpModel, "NemImportalhatoSorokExportBtnOk", ImportExportCommonResource.NemImportalhatoSorokExportalasa, $"{JavascriptHelperClassName}.nemImportalhatoSorokExport", "BtnOk");
|
||||
return PartialView(Constants.General.PopupView, popUpModel);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetTantargyfelosztasImportInfoSummary(OrarendImportCo importCo, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, bool isTtfImport)
|
||||
{
|
||||
List<TantargyfelosztasImportJsonItemCo> importJsonItemList = importCo.TantargyfelosztasImportJsonItemList;
|
||||
|
||||
string insertRowCount = "-";
|
||||
string deleteRowCount = "-";
|
||||
string updateRowCount = "-";
|
||||
string unchangedRowCount = tantargyfelosztasCoList.Count.ToString();
|
||||
if (isTtfImport)
|
||||
{
|
||||
insertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0";
|
||||
deleteRowCount = importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert ? tantargyfelosztasCoList.Count(x => x.Importalt).ToString() : "0";
|
||||
if (importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert)
|
||||
{
|
||||
unchangedRowCount = tantargyfelosztasCoList.Count(x => !x.Importalt).ToString();
|
||||
}
|
||||
updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update).ToString() ?? "-";
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportOrarendResource.Tantargyfelosztas,
|
||||
InsertRowCount = insertRowCount,
|
||||
UpdateRowCount = updateRowCount,
|
||||
DeleteRowCount = deleteRowCount,
|
||||
UnchangedRowCount = unchangedRowCount,
|
||||
InvalidRowCount = "-"
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetTeremImportInfoSummary(List<TeremImportJsonItemCo> importJsonItemList, List<TeremItemCo> teremCoList)
|
||||
{
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportOrarendResource.Terem,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = "-",
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = teremCoList.Count.ToString(),
|
||||
InvalidRowCount = "-"
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private ImportInfoSummaryModel GetOrarendImportInfoSummary(OrarendImportCo importCo, List<OrarendItemCo> coList)
|
||||
{
|
||||
List<OrarendImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
int updateRowCount = 0;
|
||||
int deleteRowCount = 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.OrarendImportMuvelet)
|
||||
{
|
||||
case (int)OrarendImportMuveletEnum.UpdateAndInsert:
|
||||
//NOTE: A korábban elvégzett műveletek miatt a importCo.OrarendiOraLezarasDateTime nem lehet null!
|
||||
updateRowCount = coList.Count(x => (x.OraErvenyessegVege == null ||
|
||||
x.OraErvenyessegVege.Value.Date > importCo.OrarendiOraLezarasDateTime.Value) &&
|
||||
x.OraErvenyessegVege != x.OraErvenyessegKezdete &&
|
||||
x.OraErvenyessegKezdete < importCo.OrarendiOraLezarasDateTime);
|
||||
|
||||
deleteRowCount = coList.Count(x => x.Importalt &&
|
||||
x.OraErvenyessegVege != x.OraErvenyessegKezdete &&
|
||||
x.OraErvenyessegKezdete >= importCo.OrarendiOraLezarasDateTime);
|
||||
unchangedRowCount = coList.Count - (updateRowCount + deleteRowCount);
|
||||
break;
|
||||
|
||||
case (int)OrarendImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)OrarendImportMuveletEnum.DeleteAndInsert:
|
||||
deleteRowCount = coList.Count(x => x.Importalt && x.OraErvenyessegVege != x.OraErvenyessegKezdete);
|
||||
unchangedRowCount = coList.Count - deleteRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportOrarendResource.Orarend,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<TantargyfelosztasImportItemModel> GetTantargyfelosztasImportItemModelList(OrarendImportCo importCo, List<TantargyfelosztasItemCo> coList, bool isTtfImport)
|
||||
{
|
||||
var importItemModelList = new List<TantargyfelosztasImportItemModel>();
|
||||
List<TantargyfelosztasImportJsonItemCo> importJsonItemList = importCo.TantargyfelosztasImportJsonItemList;
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<TantargyfelosztasImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TantargyfelosztasImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TantargyfelosztasImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.Nev ?? string.Empty,
|
||||
OsztalyCsoportNev = importJsonItem.OsztalyCsoportNev ?? string.Empty,
|
||||
TanarNev = importJsonItem.TanarNev,
|
||||
TantargyNev = importJsonItem.TantargyNev ?? string.Empty,
|
||||
Oraszam = importJsonItem.Oraszam,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TantargyfelosztasItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
var operation = isTtfImport && importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert && co.Importalt ?
|
||||
(int)ImportItemOperationEnum.Delete :
|
||||
(int)ImportItemOperationEnum.Default;
|
||||
importItemModelList.Add(new TantargyfelosztasImportItemModel
|
||||
{
|
||||
Nev = co.Nev ?? string.Empty,
|
||||
OsztalyCsoportNev = co.OsztalyCsoportNev ?? string.Empty,
|
||||
TanarNev = co.TanarNev,
|
||||
TantargyNev = co.TantargyNev ?? string.Empty,
|
||||
Oraszam = co.Oraszam,
|
||||
Operation = operation
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TeremImportItemModel> GetTeremImportItemModelList(List<TeremImportJsonItemCo> importJsonItemList, List<TeremItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<TeremImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<TeremImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TeremImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TeremImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.Nev,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TeremItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Nev).Contains(co.Nev))
|
||||
{
|
||||
importItemModelList.Add(new TeremImportItemModel
|
||||
{
|
||||
Nev = co.Nev,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<OrarendImportItemModel> GetOrarendImportItemModelList(OrarendImportCo importCo, List<OrarendItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<OrarendImportItemModel>();
|
||||
List<OrarendImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<OrarendImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (OrarendImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new OrarendImportItemModel
|
||||
{
|
||||
HetirendTipusNev = importJsonItem.HetirendTipusNev,
|
||||
HetNapjaTipusNev = importJsonItem.HetNapjaTipusId.GetDisplayName<HetNapjaTipusEnum>(ClaimData.SelectedTanevID.Value),
|
||||
OraSorszam = importJsonItem.OraSorszam,
|
||||
OraKezdete = importJsonItem.OraKezdete,
|
||||
OraVege = importJsonItem.OraVege,
|
||||
OsztalyCsoportNev = importJsonItem.OsztalyCsoportNev,
|
||||
TantargyNev = importJsonItem.TantargyNev,
|
||||
TanarNev = importJsonItem.TanarNev,
|
||||
TeremNev = importJsonItem.TeremNev,
|
||||
OraErvenyessegKezdete = importJsonItem.OraErvenyessegKezdete,
|
||||
OraErvenyessegVege = importJsonItem.OraErvenyessegVege,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (OrarendItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
int operation;
|
||||
//Ha UpdateAndInsert van, de korábbi az óra érvényesség kezdete a lezárás dátumánál, akkor update-eljük(lezárjuk) az órarendi órákat.
|
||||
if (importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.UpdateAndInsert &&
|
||||
//NOTE: A korábban elvégzett műveletek miatt a orarendImportCo.OrarendiOraLezarasDateTime nem lehet null!
|
||||
(co.OraErvenyessegVege == null || co.OraErvenyessegVege.Value.Date > importCo.OrarendiOraLezarasDateTime.Value) &&
|
||||
co.OraErvenyessegVege != co.OraErvenyessegKezdete &&
|
||||
co.OraErvenyessegKezdete < importCo.OrarendiOraLezarasDateTime)
|
||||
{
|
||||
operation = (int)ImportItemOperationEnum.Update;
|
||||
}
|
||||
//Ha UpdateAndInsert van, de későbbi vagy egyenlő az óra érvényesség kezdete a lezárás dátumánál, akkor töröljük az importált órarendi órákat.
|
||||
else if (importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.UpdateAndInsert &&
|
||||
co.Importalt &&
|
||||
co.OraErvenyessegVege != co.OraErvenyessegKezdete &&
|
||||
co.OraErvenyessegKezdete >= importCo.OrarendiOraLezarasDateTime)
|
||||
{
|
||||
operation = (int)ImportItemOperationEnum.Delete;
|
||||
}
|
||||
//Ha DeleteAndInsert van, akkor töröljük az importált órarendi órákat.
|
||||
else if (importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert &&
|
||||
co.Importalt &&
|
||||
co.OraErvenyessegVege != co.OraErvenyessegKezdete)
|
||||
{
|
||||
operation = (int)ImportItemOperationEnum.Delete;
|
||||
}
|
||||
//Különben "Nem történt változás"-t állítunk be
|
||||
else
|
||||
{
|
||||
operation = (int)ImportItemOperationEnum.Default;
|
||||
}
|
||||
|
||||
importItemModelList.Add(new OrarendImportItemModel
|
||||
{
|
||||
HetirendTipusNev = co.HetirendTipusNev,
|
||||
HetNapjaTipusNev = co.HetNapjaTipusId.GetDisplayName<HetNapjaTipusEnum>(ClaimData.SelectedTanevID.Value),
|
||||
OraSorszam = co.OraSorszam,
|
||||
OraKezdete = co.OraKezdete,
|
||||
OraVege = co.OraVege,
|
||||
OsztalyCsoportNev = co.OsztalyCsoportNev,
|
||||
TantargyNev = co.TantargyNev,
|
||||
TanarNev = co.TanarNev,
|
||||
TeremNev = co.TeremNev,
|
||||
OraErvenyessegKezdete = co.OraErvenyessegKezdete,
|
||||
//NOTE: Az OraErvenyessegVege 00:00-t tartalmaz, de aznap napközben még lehet óra, ezért a következő nap 00:00 időpont a jó és azt mentjük a db-be!
|
||||
// Ezért megjelenítéskor az eggyel korábbi napot jelenítjük meg!
|
||||
OraErvenyessegVege = co.OraErvenyessegVege?.AddDays(-1),
|
||||
Operation = operation
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.HetirendTipusNev)
|
||||
.ThenBy(x => x.HetNapjaTipusNev)
|
||||
.ThenBy(x => x.OraSorszam)
|
||||
.ThenBy(x => x.OraKezdete)
|
||||
.ThenBy(x => x.OraVege)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<OrarendImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<OrarendImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<OrarendImportNemImportalhatoItemModel>();
|
||||
foreach (OrarendImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new OrarendImportNemImportalhatoItemModel
|
||||
{
|
||||
OraErvenyessegKezdeteImportData = nemImportalhatoItem.OraErvenyessegKezdeteImportData,
|
||||
OraErvenyessegVegeImportData = nemImportalhatoItem.OraErvenyessegVegeImportData,
|
||||
HetirendImportData = nemImportalhatoItem.HetirendImportData,
|
||||
NapImportData = nemImportalhatoItem.NapImportData,
|
||||
OraImportData = nemImportalhatoItem.OraImportData,
|
||||
FoglalkozasKezdeteImportData = nemImportalhatoItem.FoglalkozasKezdeteImportData,
|
||||
FoglalkozasVegeImportData = nemImportalhatoItem.FoglalkozasVegeImportData,
|
||||
OsztalyNevImportData = nemImportalhatoItem.OsztalyNevImportData,
|
||||
CsoportNevImportData = nemImportalhatoItem.CsoportNevImportData,
|
||||
TantargyNevImportData = nemImportalhatoItem.TantargyNevImportData,
|
||||
TanarNevImportData = nemImportalhatoItem.TanarNevImportData,
|
||||
HelyisegImportData = nemImportalhatoItem.HelyisegImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList
|
||||
.OrderBy(x => x.HetirendImportData)
|
||||
.ThenBy(x => x.NapImportData)
|
||||
.ThenBy(x => x.OraImportData)
|
||||
.ThenBy(x => x.FoglalkozasKezdeteImportData)
|
||||
.ThenBy(x => x.FoglalkozasVegeImportData)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var helper = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
OrarendImportCo importCo = helper.ImportCo;
|
||||
helper.Import(new { ImportJson = importCo }, importCo.OrarendImportMuvelet, importCo.IsNapirendImport, importCo.OrarendiOraLezarasDateTime);
|
||||
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue