using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Net.Http; using System.Text.RegularExpressions; using System.Web.Http; using System.Web.Http.ModelBinding; using Kendo.Mvc.Extensions; using Kendo.Mvc.UI; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Exceptions; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Logic; using Kreta.BusinessLogic.Security; using Kreta.Client.Leltar; using Kreta.Core; using Kreta.Core.Exceptions; using Kreta.Core.FeatureToggle; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Framework.Entities; using Kreta.Framework.Util; using Kreta.Resources; using Kreta.Web.Areas.Alkalmazott.Helpers; using Kreta.Web.Areas.Alkalmazott.Models; using Kreta.Web.Areas.Tanulo.Helper; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Helpers.Grid; using Kreta.Web.Models; using Kreta.Web.Security; using Newtonsoft.Json; namespace Kreta.Web.Areas.Alkalmazott.ApiControllers { public class BaseAlkalmazottApiController : ApiController { protected readonly ILeltarClient _leltarClient; public BaseAlkalmazottApiController(ILeltarClient leltarClient) { _leltarClient = leltarClient ?? throw new ArgumentNullException(nameof(leltarClient)); } public AlkalmazottInfoModel.AlapadatModel GetAlkalmazottDataForInfo(int id) { var tanarAdatCO = GetAlkalmazottData(id); return Helpers.AlkalmazottViewHelper.ConvertCOToAlapadatModel(tanarAdatCO); } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.IsCsokkentettAdminJog.ClaimValue)] public AlkalmazottInfoModel.ElsodlegesMunkaugyiAdatok GetAlkalmazottElsodlegesMunkaugyiAdatokDataForInfo(int id, bool isKlebelsberg) { var tanarAdatCO = GetAlkalmazottData(id); var result = Helpers.AlkalmazottViewHelper.ConvertCOToElsodlegesMunkaugyiAdatokModel(tanarAdatCO); result.IsKlebelsberg = isKlebelsberg; var connectionType = ConnectionTypeExtensions.GetActiveSessionConnectionType(); var intezmenyAdatok = new IntezmenyHelper(connectionType).GetIntezmenyiAdatok(); result.IsApaczaiMentorVisible = intezmenyAdatok.IsSzakkepzo && intezmenyAdatok.IsSzakkepzoJuttatas; var helper = new FeladatEllatasiHelyHelper(connectionType); if (result.FeladatellatasiHely > 0) { result.FeladatellatasiHely_NAME = helper.GetFeladatEllatasiHelyAdatok(result.FeladatellatasiHely.Value).MukodesiHelyNev; } return result; } public AlkalmazottModel GetAlkalmazottDataForModify(int id) { var tanarAdatCO = GetAlkalmazottData(id); return Helpers.AlkalmazottViewHelper.ConvertCOToModel(tanarAdatCO); } private TanarAdatCO GetAlkalmazottData(int id) { var helper = new TanarHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); return helper.GetTanarAdatok(id); } public DataSourceResult GetAlkalmazottGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, _, _, _) = GetGridData(data, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExport(string data, DataSourceRequest request) { try { var (gridParameter, modelList, exportAttributeName, sheetName, fileName) = GetGridData(data, request); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(exportAttributeName); var memoryStream = SimpleExportLogic.GetExport(sheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private (GridParameters gridParameter, List modelList, string exportAttributeName, string sheetName, string fileName) GetGridData(string data, DataSourceRequest request) { var connection = ConnectionTypeExtensions.GetSessionConnectionType(); // NOTE: Az oktatási azonosító maszkolása miatt kell kivenni data = data.Replace("_", string.Empty); var model = JsonConvert.DeserializeObject(data); var gridParameter = Converter.GridParameter(request); int? felhasznaloSzervezetId = null; if (ClaimData.FelhasznaloSzerepkor != SzerepkorTipusEnum.Adminisztrator) { felhasznaloSzervezetId = new SzervezetHelper(connection).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); model.SzervezetId = felhasznaloSzervezetId; } var coList = new AlkalmazottHelper(connection).SearchAlkalmazott(model.ConvertModelToCo(), felhasznaloSzervezetId); var modelList = coList.Select(x => new AlkalmazottGridModel(x)).ToList(); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var exportAttributeName = model.IsFromSzervezet ? AlkalmazottGridModel.DualisAlkalmazottExportAttributeId : AlkalmazottGridModel.AlkalmazottExportAttributeId; var sheetName = model.IsFromSzervezet ? DualisResource.TabOktatok : AlkalmazottResource.Alkalmazottak; var fileName = model.IsFromSzervezet ? string.Format(AlkalmazottResource.DualisAlkalmazottTablazatExportFileName, DateTime.Now.ToString("yyyyMMddHHmm")) : AlkalmazottResource.AlkalmazottTablazatExportFileName; return (gridParameter, modelList, exportAttributeName, sheetName, fileName); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteAlkalmazott([FromBody] int id) { if (id == ClaimData.FelhasznaloId) { throw new StatusError(HttpStatusCode.BadRequest, AlkalmazottResource.AlkalmazottNemTorolhetiOnmagat); } var helper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); try { helper.DeleteAlkalmazott(id); return new HttpResponseMessage(HttpStatusCode.OK); } catch (CannotBeDeletedException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } catch (EntityDeleteFailedException ex) { var alkalmazottNev = helper.GetAlkalmazottNevById(id); var errorMessage = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, alkalmazottNev, ex.ConnectionErrorMessage); throw new StatusError(HttpStatusCode.BadRequest, errorMessage); } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public IHttpActionResult DeleteSelectedAlkalmazott(List alkalmazottIdList) { var errorMsg = string.Empty; var counter = 0; var helper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); foreach (var alkalmazottId in alkalmazottIdList) { try { helper.DeleteAlkalmazott(alkalmazottId); counter++; } catch (CannotBeDeletedException ex) { errorMsg += $"{ex.Message}{Environment.NewLine}"; continue; } catch (EntityDeleteFailedException ex) { var alkalmazottNev = helper.GetAlkalmazottNevById(alkalmazottId); var errorMessage = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, alkalmazottNev, ex.ConnectionErrorMessage); errorMsg += $"{errorMessage}{Environment.NewLine}{Environment.NewLine}"; continue; } } if (string.IsNullOrWhiteSpace(errorMsg)) { return Json(new { Message = string.Format(ErrorResource.NSorTorlesSikeres, counter) }); } if (counter > 0) { errorMsg += Environment.NewLine + string.Format(ErrorResource.NSorTorlesSikeres, counter); } throw new StatusError(HttpStatusCode.BadRequest, errorMsg); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveAlkalmazott(AlkalmazottModel model) { try { AlkalmazottCustomValidation(ModelState, model); if (ModelState.IsValid) { var thelper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var featureContext = (IFeatureContext)Request.GetDependencyScope().GetService(typeof(IFeatureContext)); var isKlebelsbergKozpontOrNSZFH = featureContext.IsEnabled(Core.Constants.FeatureName.MunkaugyiAdatokKlebelsberg) || featureContext.IsEnabled(Core.Constants.FeatureName.MunkaugyiAdatokNSZFH); var co = Helpers.AlkalmazottViewHelper.ConvertModelToCO(model); var kellFollowUp = ClaimData.KovTanevID.HasValue && !ClaimData.IsKovTanev && model.MunkaugyAdatModel.AlkalmazasVege.HasValue && model.MunkaugyAdatModel.AlkalmazasVege.Value > new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo().UtolsoNap; bool isLeltarSyncSuccess; if (model.AlkalmazottId.HasValue) { isLeltarSyncSuccess = thelper.AddOrUpdateTeacher(_leltarClient, co, update: true, isSzirIntezmeny: ClaimData.IsSzirIntezmeny, ClaimData.IsActivTanev, isKlebelsbergKozpontOrNSZFH, alkalmazottId: model.AlkalmazottId.Value, kellFollowUp: kellFollowUp); } else { isLeltarSyncSuccess = thelper.AddOrUpdateTeacher(_leltarClient, co, update: false, isSzirIntezmeny: ClaimData.IsSzirIntezmeny, ClaimData.IsActivTanev, isKlebelsbergKozpontOrNSZFH, kellFollowUp: kellFollowUp); } return Request.CreateResponse(HttpStatusCode.OK, isLeltarSyncSuccess); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } catch (Check4TValidacioExistsException) { throw new StatusError(HttpStatusCode.BadRequest, CommonResource.AMegadottFelhasznaloiAdatokkalMarLetezikFelhasznalo); } catch (BlException e) { var error = new StatusError(HttpStatusCode.BadRequest, e.Message); throw error; } } public static void AlkalmazottCustomValidation(ModelStateDictionary modelState, AlkalmazottModel model) { if (!model.AlkalmazottId.IsEntityId()) { if (string.IsNullOrWhiteSpace(model.CimElerhetosegModel.Iranyitoszam_Str)) { if (model.CimElerhetosegModel.Orszag == (int)OrszagTipusEnum.Magyarorszag) { modelState.AddModelError("CimElerhetosegModel.Iranyitoszam", AlkalmazottResource.IranyitoszamKitolteseKotelezo); } else { modelState.AddModelError("CimElerhetosegModel.Iranyitoszam_Str", AlkalmazottResource.IranyitoszamKitolteseKotelezo); } } if (string.IsNullOrWhiteSpace(model.CimElerhetosegModel.HelysegNev_Str)) { if (model.CimElerhetosegModel.Orszag == (int)OrszagTipusEnum.Magyarorszag) { modelState.AddModelError("CimElerhetosegModel.HelysegNev", AlkalmazottResource.HelysegKitolteseKotelezo); } else { modelState.AddModelError("CimElerhetosegModel.HelysegNev_Str", AlkalmazottResource.IranyitoszamKitolteseKotelezo); } } if (model.CimElerhetosegModel.KozteruletNev == null) { modelState.AddModelError("CimElerhetosegModel.KozteruletNev", AlkalmazottResource.KozteruletNevenekKitolteseKotelezo); } if (string.IsNullOrWhiteSpace(model.CimElerhetosegModel.KozteruletTipus_Str)) { if (model.CimElerhetosegModel.Orszag != (int)OrszagTipusEnum.Magyarorszag) { modelState.AddModelError("CimElerhetosegModel.KozteruletTipus_Str", AlkalmazottResource.IranyitoszamKitolteseKotelezo); } } if (model.CimElerhetosegModel.Hazszam == null) { modelState.AddModelError("CimElerhetosegModel.Hazszam", AlkalmazottResource.HazszamKitolteseKotelezo); } } if ((model.AlapAdatModel.MunkavallaloCsaladiNev.Length + model.AlapAdatModel.MunkavallaloUtonev.Length) > Core.Constants.General.CsaladiEsUtonevEgyuttMaxLength) { modelState.AddModelError("AlapAdatModel.MunkavallaloCsaladiNev", AlkalmazottResource.ACsaladiEsUtonevEgyuttNemLehetHosszabb61Karakternel); } if ((model.AlapAdatModel.SzuletesiCsaladiNev.Length + model.AlapAdatModel.SzuletesiUtonev.Length) > Core.Constants.General.SzuletesiCsaladiEsUtonevEgyuttMaxLength) { modelState.AddModelError("AlapAdatModel.SzuletesiCsaladiNev", AlkalmazottResource.ASzuletesiCsaladiEsUtonevEgyuttNemLehetHosszabb64Karakternel); } if ((model.AlapAdatModel.AnyjaCsaladiNeve.Length + model.AlapAdatModel.AnyjaUtoneve.Length) > Core.Constants.General.AnyaCsaladiEsUtonevEgyuttMaxLength) { modelState.AddModelError("AlapAdatModel.AnyjaCsaladiNeve", AlkalmazottResource.AzAnyaCsaladiEsUtoneveEgyuttNemLehetHosszabb64Karakternel); } if (model.AlapAdatModel.SzuletesiIdo.HasValue && model.AlapAdatModel.SzuletesiIdo.Value > DateTime.Now.AddYears(-14)) { modelState.AddModelError("AlapAdatModel.SzuletesiIdo", StringResourcesUtil.GetString(4299)); //A születési dátum minimum 14 évvel ez előttinek kell lennie! } if (model.AlapAdatModel.SzuletesiIdo.HasValue && model.AlapAdatModel.SzuletesiIdo.Value < DateTime.Now.AddYears(-100)) { modelState.AddModelError("AlapAdatModel.SzuletesiIdo", StringResourcesUtil.GetString(4300)); //A születési dátum nem lehet a jelenlegi dátum előtt 100 évvel! } if (model.MunkaugyAdatModel.AlkalmazasKezdete.HasValue && model.MunkaugyAdatModel.AlkalmazasKezdete.Value < DateTime.Now.AddYears(-100)) { modelState.AddModelError("MunkaugyAdatModel.AlkalmazasKezdete", AlkalmazottResource.AlkalmazasKezdeteNemLehetAJelenlegiDatumElott100evvel); } if (model.MunkaugyAdatModel.AlkalmazasVege.HasValue && model.MunkaugyAdatModel.AlkalmazasKezdete.HasValue && model.MunkaugyAdatModel.AlkalmazasVege.Value < model.MunkaugyAdatModel.AlkalmazasKezdete.Value) { modelState.AddModelError("MunkaugyAdatModel.AlkalmazasVege", AlkalmazottResource.AlkalmazasVegeNemLehetKorabbanMintAKezdete); } if (model.MunkaugyAdatModel.AlkalmazasKezdete.HasValue && model.AlapAdatModel.SzuletesiIdo.HasValue && model.MunkaugyAdatModel.AlkalmazasKezdete.Value < model.AlapAdatModel.SzuletesiIdo.Value) { modelState.AddModelError("MunkaugyAdatModel.AlkalmazasKezdete", StringResourcesUtil.GetString(4302)); //Az alkalmazás kezdete nem lehet korábban mint a születési dátum! } if (!string.IsNullOrWhiteSpace(model.AlapAdatModel.OktatasiAzonosito) || !string.IsNullOrWhiteSpace(model.JogosultsagModel.BelepesiNev)) { var felhasznaloHelper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tanevMegnevezes = GetTanevMegnevezesForBelepesCheck(); var anotherYearId = Kreta.Web.Classes.Utils.GetAnotherYearId(); var tanevIds = new List { ClaimData.SelectedTanevID.Value }; if (anotherYearId.HasValue) { tanevIds.Add(anotherYearId.Value); } var list = felhasznaloHelper.Check4TFelhOktAzonValidation(tanevIds, (int)Validation4TEnum.Alkalmazott, "F", model.AlapAdatModel.SzuletesiNevElotag, model.AlapAdatModel.SzuletesiCsaladiNev, model.AlapAdatModel.SzuletesiUtonev, "F", model.AlapAdatModel.AnyjaNeveElotag, model.AlapAdatModel.AnyjaCsaladiNeve, model.AlapAdatModel.AnyjaUtoneve, model.AlapAdatModel.SzuletesiHely, model.AlapAdatModel.SzuletesiIdo, model.AlapAdatModel.OktatasiAzonosito, model.JogosultsagModel.BelepesiNev); var selectedTanevUtkozes = list.Where(x => (!model.AlkalmazottId.HasValue || (x.ID != model.AlkalmazottId && x.ElozoTanevRekordId != model.AlkalmazottId)) && x.TanevId == ClaimData.SelectedTanevID.Value).ToList(); var anotherTanevUtkozes = list.Where(x => (!model.AlkalmazottId.HasValue || (x.ID != model.AlkalmazottId && x.ElozoTanevRekordId != model.AlkalmazottId)) && anotherYearId.HasValue && x.TanevId == anotherYearId.Value).ToList(); var followUpolnivalo = list.Find(x => (!model.AlkalmazottId.HasValue || x.ID != model.AlkalmazottId) && x.TanevId != ClaimData.SelectedTanevID.Value && x.ValidationType == (int)Validation4TEnum.Alkalmazott && SDAConvert.ToString(x.OktatasiAzonosito) == SDAConvert.ToString(model.AlapAdatModel.OktatasiAzonosito) && ((x.SzuletesiNevSorrend == "F" && model.AlapAdatModel.SzuletesiCsaladiNev == x.SzuletesiCsaladiNev && model.AlapAdatModel.SzuletesiUtonev == x.SzuletesiUtonev) || (model.AlapAdatModel.SzuletesiCsaladiNev == x.SzuletesiUtonev && model.AlapAdatModel.SzuletesiUtonev == x.SzuletesiCsaladiNev)) && SDAConvert.ToString(model.AlapAdatModel.SzuletesiNevElotag) == x.SzuletesiNevElotag && ((x.AnyjaNevSorrend == "F" && model.AlapAdatModel.AnyjaCsaladiNeve == x.AnyjaCsaladiNev && model.AlapAdatModel.AnyjaUtoneve == x.AnyjaUtonev) || (model.AlapAdatModel.AnyjaCsaladiNeve == x.AnyjaUtonev && model.AlapAdatModel.AnyjaUtoneve == x.AnyjaCsaladiNev)) && SDAConvert.ToString(model.AlapAdatModel.AnyjaNeveElotag) == x.AnyjaElotag && x.OktatasiAzonosito == SDAConvert.ToString(model.AlapAdatModel.OktatasiAzonosito) && x.SzuletesiHely == SDAConvert.ToString(model.AlapAdatModel.SzuletesiHely) && x.SzuletesiIdo == model.AlapAdatModel.SzuletesiIdo); if (followUpolnivalo != null) { model.FollowUpolniId = followUpolnivalo.ID; } if (!string.IsNullOrWhiteSpace(model.AlapAdatModel.OktatasiAzonosito) && selectedTanevUtkozes.Any(x => x.OktatasiAzonosito == model.AlapAdatModel.OktatasiAzonosito && x.ValidationType == (int)Validation4TEnum.Alkalmazott)) { modelState.AddModelError("AlapAdatModel.OktatasiAzonosito", string.Format(ErrorResource.OktatasiAzonositoFoglaltAltal, string.Join(", ", selectedTanevUtkozes .Where(x => x.OktatasiAzonosito == SDAConvert.ToString(model.AlapAdatModel.OktatasiAzonosito) && x.ValidationType == (int)Validation4TEnum.Alkalmazott) .Select(x => x.NyomtatasiNev)), string.Empty)); } else if (!string.IsNullOrWhiteSpace(model.AlapAdatModel.OktatasiAzonosito) && followUpolnivalo == null && anotherTanevUtkozes.Any(x => x.OktatasiAzonosito == SDAConvert.ToString(model.AlapAdatModel.OktatasiAzonosito) && x.ValidationType == (int)Validation4TEnum.Alkalmazott)) { modelState.AddModelError("AlapAdatModel.OktatasiAzonosito", string.Format(ErrorResource.OktatasiAzonositoFoglaltAltal, string.Join(", ", anotherTanevUtkozes .Where(x => x.OktatasiAzonosito == SDAConvert.ToString(model.AlapAdatModel.OktatasiAzonosito) && !x.GondviseloId.HasValue && x.ValidationType == (int)Validation4TEnum.Alkalmazott) .Select(x => x.NyomtatasiNev)), tanevMegnevezes)); } var selectedTanevUtkozesForBejelentkezesiNev = selectedTanevUtkozes.Where(x => x.BejelentkezesiNev?.ToComparableString() == model.JogosultsagModel.BelepesiNev?.ToComparableString()); var anotherTanevUtkozesForBejelentkezesiNev = anotherYearId.HasValue && followUpolnivalo == null ? anotherTanevUtkozes.Where(x => x.BejelentkezesiNev?.ToComparableString() == model.JogosultsagModel.BelepesiNev?.ToComparableString()) : new List(); TanuloLogic.FelhasznalonevValidacio(modelState, "JogosultsagModel.BelepesiNev", selectedTanevUtkozesForBejelentkezesiNev, anotherTanevUtkozesForBejelentkezesiNev, tanevMegnevezes); if (!model.MunkaugyAdatModel.BetoltetlenAllashely && model.AlapAdatModel.SzuletesiIdo.HasValue) { if (list.Any(x => (!model.AlkalmazottId.HasValue || x.ID != model.AlkalmazottId) && x.TanevId == ClaimData.SelectedTanevID.Value && x.ValidationType == (int)Validation4TEnum.Alkalmazott && ((x.SzuletesiNevSorrend == "F" && model.AlapAdatModel.SzuletesiCsaladiNev == x.SzuletesiCsaladiNev && model.AlapAdatModel.SzuletesiUtonev == x.SzuletesiUtonev) || (model.AlapAdatModel.SzuletesiCsaladiNev == x.SzuletesiUtonev && model.AlapAdatModel.SzuletesiUtonev == x.SzuletesiCsaladiNev)) && SDAConvert.ToString(model.AlapAdatModel.SzuletesiNevElotag) == x.SzuletesiNevElotag && ((x.AnyjaNevSorrend == "F" && model.AlapAdatModel.AnyjaCsaladiNeve == x.AnyjaCsaladiNev && model.AlapAdatModel.AnyjaUtoneve == x.AnyjaUtonev) || (model.AlapAdatModel.AnyjaCsaladiNeve == x.AnyjaUtonev && model.AlapAdatModel.AnyjaUtoneve == x.AnyjaCsaladiNev)) && SDAConvert.ToString(model.AlapAdatModel.AnyjaNeveElotag) == x.AnyjaElotag && SDAConvert.ToString(model.JogosultsagModel.BelepesiNev) == x.BejelentkezesiNev && x.OktatasiAzonosito == SDAConvert.ToString(model.AlapAdatModel.OktatasiAzonosito) && x.SzuletesiHely == SDAConvert.ToString(model.AlapAdatModel.SzuletesiHely) && x.SzuletesiIdo == model.AlapAdatModel.SzuletesiIdo)) { throw new Check4TValidacioExistsException(string.Empty); } } } if (model.AlapAdatModel.Allampolgarsag == model.AlapAdatModel.Allampolgarsag2) { modelState.AddModelError("AlapAdatModel.Allampolgarsag2", ErrorResource.MegegyezoAllapolgarsag); } if (ClaimData.IsSzakkepzoIntezmeny && !string.IsNullOrWhiteSpace(model.AlapAdatModel.OktatasiAzonosito) && !BusinessLogic.Extensions.FelhasznaloExtensions.IsValidOktatasiAzonosito(model.AlapAdatModel.OktatasiAzonosito)) { modelState.AddModelError("AlapAdatModel.OktatasiAzonosito", ErrorResource.AMegadottOktatasiAzonositoHibas); } if (!string.IsNullOrWhiteSpace(model.AlapAdatModel.AdoazonositoJel)) { var rgx = new Regex(@"^\d{10}$"); if (!rgx.IsMatch(model.AlapAdatModel.AdoazonositoJel)) { modelState.AddModelError("AlapAdatModel.AdoazonositoJel", AlkalmazottResource.AdoazonositoJelFormatumaNemMegfelelo); } } Kreta.Web.Classes.Utils.TajSzamValidation(modelState, "AlapAdatModel.TajSzam", model.AlapAdatModel.TajSzam); if (model.JogosultsagModel != null) { if (!string.IsNullOrWhiteSpace(model.JogosultsagModel.BelepesiNev) && model.JogosultsagModel.BelepesiNev.Trim().Length == 0) { throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(5488)); } } if (model.CimElerhetosegModel != null) { Kreta.Web.Classes.Utils.TelefonSzamValidation(modelState, model.CimElerhetosegModel.Telefon, model.CimElerhetosegModel.TelefonTipus, TelefonszamTulajdonosEnum.AlkalmazottElsodleges); Kreta.Web.Classes.Utils.TelefonSzamValidation(modelState, model.CimElerhetosegModel.Telefon2, model.CimElerhetosegModel.TelefonTipus2, TelefonszamTulajdonosEnum.AlkalmazottMasodlagos); } if (model.MunkaugyAdatModel.FoglalkoztatasTipusa == (int)FoglalkoztatasTipusaEnum.Reszmunkaidos && !model.MunkaugyAdatModel.ReszmunkaidosSzazalek.HasValue) { modelState.AddModelError("MunkaugyAdatModel.ReszmunkaidosSzazalek", ErrorResource.AReszmunkaidoSzazalekMezoMegadasaKotelezoAMunkaugyiAdatokTabFulon); } if (model.MunkaugyAdatModel.FoglalkoztatasTipusa == (int)FoglalkoztatasTipusaEnum.Oraado && !model.MunkaugyAdatModel.Oraszam.HasValue) { modelState.AddModelError("MunkaugyAdatModel.Oraszam", ErrorResource.AzOraszamMegadasaKotelezoAMunkaugyiAdatokTabFulon); } if (model.MunkaugyAdatModel.MunkaKor == (int)MunkakorTipusEnum.iskolaor) { if (!model.AlkalmazottId.HasValue) { if (string.IsNullOrWhiteSpace(model.CimElerhetosegModel.Emailcim)) { modelState.AddModelError("MunkaugyAdatModel.Emailcim", ErrorResource.EmailCimMegadasaKotelezo); } if (string.IsNullOrWhiteSpace(model.CimElerhetosegModel.Telefon)) { modelState.AddModelError("MunkaugyAdatModel.Telefon", ErrorResource.TelefonszamMegadasaKotelezo); } if (!model.CimElerhetosegModel.EmailTipus.HasValue) { modelState.AddModelError("MunkaugyAdatModel.EmailTipus", ErrorResource.EmailTipusMegadasaKotelezo); } if (!model.CimElerhetosegModel.TelefonTipus.HasValue) { modelState.AddModelError("MunkaugyAdatModel.TelefonTipus", ErrorResource.TelefonTipusKotelezo); } } else { var thelper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var data = thelper.GetTanarAdatok(model.AlkalmazottId.Value); if (string.IsNullOrWhiteSpace(data.Email)) { modelState.AddModelError("MunkaugyAdatModel.Emailcim", ErrorResource.EmailCimMegadasaKotelezo); } if (string.IsNullOrWhiteSpace(data.Telefon)) { modelState.AddModelError("MunkaugyAdatModel.Telefon", ErrorResource.TelefonszamMegadasaKotelezo); } } } if (!model.MunkaugyAdatModel.VezetoiOraszamOka.IsEntityId() && !model.MunkaugyAdatModel.IsDualisKepzohelyFromSzervezet) { var isNszfhUjSzkt = ClaimData.IsSelectedTanev20_21OrLater && ClaimData.IsSzakkepzoIntezmeny; modelState.AddModelError("MunkaugyAdatModel.VezetoiOraszamOka", isNszfhUjSzkt ? ErrorResource.VezetoiMegbizasMegadasaKotelezo : ErrorResource.VezetoiOraszamOkaMegadasaKotelezo); } //Ha aktív tanévben módosítunk if (ClaimData.KovTanevID.HasValue && ClaimData.IsActivTanev && !model.MunkaugyAdatModel.IsDualisKepzohelyFromSzervezet) { if (new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo(ClaimData.KovTanevID).IsKivalaszthato) { var felhelyHelper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType()); if (model.MunkaugyAdatModel.FeladatellatasiHely.HasValue) { var kovtanevFelhely = felhelyHelper.GetKovTanevIdByAktTanevId(model.MunkaugyAdatModel.FeladatellatasiHely.Value); //NOTE: Ha a kiválasztott felhely nem létezik a következő tanévben, és nem még választott a következő tanévre felhelyet, akkor hibát dobunk if (!kovtanevFelhely.IsEntityId() && !model.MunkaugyAdatModel.FeladatellatasiHelyKovTanev.HasValue) { modelState.AddModelError("MunkaugyAdatModel.FeladatellatasiHely", AlkalmazottResource.KovTanevesFelhelyNemLetezik); } } } } var isSzakkepzoJuttatas = new IntezmenyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetIntezmenyiAdatok().IsSzakkepzoJuttatas; if (model.MunkaugyAdatModel.IsApaczaiMentor && (ClaimData.IsSzakkepzoIntezmeny || isSzakkepzoJuttatas)) { if (string.IsNullOrWhiteSpace(model.AlapAdatModel.MunkavallaloCsaladiNev) || string.IsNullOrWhiteSpace(model.AlapAdatModel.MunkavallaloUtonev) || string.IsNullOrWhiteSpace(model.AlapAdatModel.SzuletesiCsaladiNev) || string.IsNullOrWhiteSpace(model.AlapAdatModel.SzuletesiUtonev) || string.IsNullOrWhiteSpace(model.AlapAdatModel.AnyjaCsaladiNeve) || string.IsNullOrWhiteSpace(model.AlapAdatModel.AnyjaUtoneve) || string.IsNullOrWhiteSpace(model.AlapAdatModel.SzuletesiHely) || !model.AlapAdatModel.SzuletesiIdo.HasValue || string.IsNullOrWhiteSpace(model.AlapAdatModel.TajSzam) || string.IsNullOrWhiteSpace(model.AlapAdatModel.AdoazonositoJel) || string.IsNullOrWhiteSpace(model.AlapAdatModel.OktatasiAzonosito) || !model.MunkaugyAdatModel.IsAlkalmazottMentorAdatokKitoltve) { modelState.AddModelError("MunkaugyAdatModel.IsAlkalmazottMentorAdatokKitoltve", ErrorResource.MentoradatokMegadasaKotelezoKerjukMindenMegallapodashozSzuksegesAdatotRogzitsen); } } else if (model.AlkalmazottId.HasValue && !model.MunkaugyAdatModel.IsApaczaiMentor && (ClaimData.IsSzakkepzoIntezmeny || isSzakkepzoJuttatas)) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var thelper = new TanarHelper(connectionType); var data = thelper.GetTanarAdatok(model.AlkalmazottId.Value); if (data.IsApaczaiMentor && thelper.HasTanarMentorCsoport(model.AlkalmazottId.Value)) { modelState.AddModelError("MunkaugyAdatModel.IsApaczaiMentor", ErrorResource.NemAllithatoAlkalmazottMentorCsoporttal); } } } public static string GetTanevMegnevezesForBelepesCheck() => ClaimData.IsKovTanev ? ErrorResource.AzAktualisTaneven : ErrorResource.AKovetkezoTaneven; private static void AlkalmazottTobbesModCustomValidation(ModelStateDictionary modelState, AlkalmazottModModel model) { if (model.AlkalmazasKezdete.HasValue && model.AlkalmazasKezdete.Value < DateTime.Now.AddYears(-100)) { modelState.AddModelError("model.AlkalmazasKezdete", AlkalmazottResource.AlkalmazasKezdeteNemLehetAJelenlegiDatumElott100evvel); } if (model.AlkalmazasVege.HasValue && model.AlkalmazasKezdete.HasValue && model.AlkalmazasVege.Value < model.AlkalmazasKezdete.Value) { modelState.AddModelError("model.AlkalmazasVege", AlkalmazottResource.AlkalmazasVegeNemLehetKorabbanMintAKezdete); } } #region Elérhetőség info tab public DataSourceResult GetElerhetosegCimGrid(int id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, alkalmazottNev) = GetElerhetosegCimGridData(id, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExportElerhetosegCimGrid(int id, DataSourceRequest request) { try { var (gridParameter, modelList, alkalmazottNev) = GetElerhetosegCimGridData(id, request); return GetElerhetosegCimExportFile(gridParameter, modelList, AdatszolgaltatasokResource.ElerhetosegCimExportSheetName, $"{alkalmazottNev}_{AdatszolgaltatasokResource.ElerhetosegCimExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}", ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetElerhetosegCimExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(AlkalmazottInfoModel.ElerhetosegCimModel.ElerhetosegCimExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } private (GridParameters gridParameter, List modelList, string alkalmazottNev) GetElerhetosegCimGridData(int id, DataSourceRequest request) { var gridParameter = Converter.GridParameter(request); var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coList = helper.GetTeacherAddressDataCoList(id); var modelList = new List(); foreach (var co in coList) { var gridModel = new AlkalmazottInfoModel.ElerhetosegCimModel(co); modelList.Add(gridModel); } return (gridParameter, modelList, helper.GetTanarAdatok(id).NyomtatasiNev); } public DataSourceResult GetElerhetosegTelefonGrid(int id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, alkalmazottNev) = GetElerhetosegTelefonGridData(id, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExportElerhetosegTelefonGrid(int id, DataSourceRequest request) { try { var (gridParameter, modelList, alkalmazottNev) = GetElerhetosegTelefonGridData(id, request); return GetElerhetosegTelefonExportFile(gridParameter, modelList, AdatszolgaltatasokResource.ElerhetosegTelefonExportSheetName, $"{alkalmazottNev}_{AdatszolgaltatasokResource.ElerhetosegTelefonExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}", ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetElerhetosegTelefonExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(AlkalmazottInfoModel.ElerhetosegTelefonModel.ElerhetosegTelefonExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } private (GridParameters gridParameter, List modelList, string alkalmazottNev) GetElerhetosegTelefonGridData(int id, DataSourceRequest request) { var gridParameter = Converter.GridParameter(request); var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coList = helper.GetTeacherPhonesCoList(id); var modelList = new List(); foreach (var co in coList) { var gridModel = new AlkalmazottInfoModel.ElerhetosegTelefonModel(co); modelList.Add(gridModel); } return (gridParameter, modelList, helper.GetTanarAdatok(id).NyomtatasiNev); } public DataSourceResult GetElerhetosegEmailGrid(int id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, alkalmazottNev) = GetElerhetosegEmailGridData(id, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExportElerhetosegEmailGrid(int id, DataSourceRequest request) { try { var (gridParameter, modelList, alkalmazottNev) = GetElerhetosegEmailGridData(id, request); return GetElerhetosegEmailExportFile(gridParameter, modelList, AdatszolgaltatasokResource.ElerhetosegEmailExportSheetName, $"{alkalmazottNev}_{AdatszolgaltatasokResource.ElerhetosegEmailExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}", ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetElerhetosegEmailExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(AlkalmazottInfoModel.ElerhetosegEmailModel.ElerhetosegEmailExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } private (GridParameters gridParameter, List modelList, string alkalmazottNev) GetElerhetosegEmailGridData(int id, DataSourceRequest request) { var gridParameter = Converter.GridParameter(request); var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coList = helper.GetTeacherEmailsCoList(id); var modelList = new List(); foreach (var co in coList) { var gridModel = new AlkalmazottInfoModel.ElerhetosegEmailModel(co); modelList.Add(gridModel); } return (gridParameter, modelList, helper.GetTanarAdatok(id).NyomtatasiNev); } #endregion [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public DataSourceResult GetAlkalmazottElerhetosegCimGrid(string id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var helper = new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); var ds = helper.GetCim(int.Parse(id)); return ds.ToDataSourceResult(); } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public DataSourceResult GetAlkalmazottElerhetosegTelGrid(string id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var helper = new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); var ds = helper.GetTelefonSzam(int.Parse(id)); return ds.ToDataSourceResult(); } [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] public DataSourceResult GetAlkalmazottElerhetosegEmailGrid(string id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var helper = new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); var ds = helper.GetEmails(int.Parse(id)); return ds.ToDataSourceResult(); } public CimElerhetosegModel GetAlkalmazottElerhetosegCim(int id) { var co = new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetAlkalmazottCimById(id); return CimElerhetosegModel.ConvertCoToModel(co); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveElerhetosegCim(CimElerhetosegModel model) { if (ModelState.IsValid) { try { var co = CimElerhetosegModel.ConvertModelToFelhasznaloElerhetosegCo(model); new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()).AlkalmazottCimMentese(co, ClaimData.KovTanevID); return new HttpResponseMessage(HttpStatusCode.OK); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteElerhetosegCim([FromBody] int id) { try { new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).AlkalmazottGondviseloCimTorlese(id); return new HttpResponseMessage(HttpStatusCode.OK); } catch (EntityDeleteFailedException ex) { var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, AlkalmazottResource.Cim, ex.ConnectionErrorMessage); throw new StatusError(HttpStatusCode.BadRequest, uzenet); } } public CimElerhetosegModel GetAlkalmazottElerhetosegTel(int id) { var co = new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetAlkalmazottElerhetosegTelById(id); return CimElerhetosegModel.ConvertCoToModel(co); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveElerhetosegTel(CimElerhetosegModel model) { Classes.Utils.TelefonSzamValidation(ModelState, model.Telefon, model.TelefonTipus, TelefonszamTulajdonosEnum.Alkalmazott); AlkalmazottLogic.AlkalmazottTelefonCustomValidation(ModelState, model); if (ModelState.IsValid) { var co = CimElerhetosegModel.ConvertModelToFelhasznaloElerhetosegTelCo(model); try { new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ValidateForDuplicateEntriesAlkalmazottElerhetoseg(co.FelhasznaloId, co.Telefonszam, ValidateElerhetosegType.Telefon, co.TelefonTipusa, co.ID); new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).FelhasznaloElerhetosegTelMentese(co, ClaimData.KovTanevID); } catch (BlException ex) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message); } return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteElerhetosegTel([FromBody] int id) { try { new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).AlkalmazottElerhetosegTelTorlese(id); return new HttpResponseMessage(HttpStatusCode.OK); } catch (EntityDeleteFailedException ex) { var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, AlkalmazottResource.Telefonszam, ex.ConnectionErrorMessage); throw new StatusError(HttpStatusCode.BadRequest, uzenet); } } public CimElerhetosegModel GetAlkalmazottElerhetosegEmail(int id) { var co = new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetAlkalmazottElerhetosegEmailById(id); return CimElerhetosegModel.ConvertCoToModel(co); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveElerhetosegEmail(CimElerhetosegModel model) { AlkalmazottLogic.AlkalmazottEmailCustomValidation(ModelState, model); if (ModelState.IsValid) { var co = CimElerhetosegModel.ConvertModelToFelhasznaloElerhetosegEmailCo(model); try { new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ValidateForDuplicateEntriesAlkalmazottElerhetoseg(co.FelhasznaloId, co.EmailCim, ValidateElerhetosegType.Telefon, co.EmailTipusa, co.ID); new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).FelhasznaloElerhetosegEmailMentese(co, ClaimData.KovTanevID); } catch (BlException ex) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message); } return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteElerhetosegEmail([FromBody] int id) { try { new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).AlkalmazottElerhetosegEmailTorlese(id); return new HttpResponseMessage(HttpStatusCode.OK); } catch (EntityDeleteFailedException ex) { var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, AlkalmazottResource.EmailCim, ex.ConnectionErrorMessage); throw new StatusError(HttpStatusCode.BadRequest, uzenet); } } #region Foglalkozás tab public DataSourceResult GetFoglalkozasGrid(int id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, alkalmazottNev) = GetFoglalkozasGridData(id, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExportFoglalkozasGrid(int id, DataSourceRequest request) { try { var (gridParameter, modelList, alkalmazottNev) = GetFoglalkozasGridData(id, request); return GetFoglalkozasExportFile(gridParameter, modelList, AdatszolgaltatasokResource.FoglalkozasExportSheetName, $"{alkalmazottNev}_{AdatszolgaltatasokResource.FoglalkozasExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}", ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetFoglalkozasExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(AlkalmazottInfoModel.FoglalkozasModel.FoglalkozasExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } private (GridParameters gridParameter, List modelList, string alkalmazottNev) GetFoglalkozasGridData(int id, DataSourceRequest request) { var gridParameter = Converter.GridParameter(request); var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coList = helper.GetTeacherRoutinesCoList(id); var modelList = new List(); foreach (var co in coList) { var gridModel = new AlkalmazottInfoModel.FoglalkozasModel(co); modelList.Add(gridModel); } return (gridParameter, modelList, helper.GetTanarAdatok(id).NyomtatasiNev); } #endregion #region Órarendi Óra tab public DataSourceResult GetOrarendiOraGrid(int id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, alkalmazottNev) = GetOrarendiOraGridData(id, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExportOrarendiOraGrid(int id, DataSourceRequest request) { try { var (gridParameter, modelList, alkalmazottNev) = GetOrarendiOraGridData(id, request); return GetOrarendiOraExportFile(gridParameter, modelList, AdatszolgaltatasokResource.OrarendiOraExportSheetName, $"{alkalmazottNev}_{AdatszolgaltatasokResource.OrarendiOraExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}", ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetOrarendiOraExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(AlkalmazottInfoModel.OrarendiOraModel.OrarendiOraExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } private (GridParameters gridParameter, List modelList, string alkalmazottNev) GetOrarendiOraGridData(int id, DataSourceRequest request) { var gridParameter = Converter.GridParameter(request); var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coList = helper.GetTeacherSubjectsHoursCoList(id); var modelList = new List(); foreach (var co in coList) { var gridModel = new AlkalmazottInfoModel.OrarendiOraModel(co); modelList.Add(gridModel); } return (gridParameter, modelList, helper.GetTanarAdatok(id).NyomtatasiNev); } #endregion #region Tanmenet tab public DataSourceResult GetTanmenetGrid(int id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, alkalmazottNev) = GetTanmenetGridData(id, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExportTanmenetGrid(int id, DataSourceRequest request) { try { var (gridParameter, modelList, alkalmazottNev) = GetTanmenetGridData(id, request); return GetTanmenetExportFile(gridParameter, modelList, AdatszolgaltatasokResource.TanmenetExportSheetName, $"{alkalmazottNev}_{AdatszolgaltatasokResource.TanmenetExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}", ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetTanmenetExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(AlkalmazottInfoModel.TanmenetModel.TanmenetExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } private (GridParameters gridParameter, List modelList, string alkalmazottNev) GetTanmenetGridData(int id, DataSourceRequest request) { var gridParameter = Converter.GridParameter(request); var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coList = helper.GetTanarTanmenetCoList(id); var modelList = new List(); foreach (var co in coList) { var gridModel = new AlkalmazottInfoModel.TanmenetModel(co); modelList.Add(gridModel); } return (gridParameter, modelList, helper.GetTanarAdatok(id).NyomtatasiNev); } #endregion #region Megtartott órák tab public DataSourceResult GetMegtartottTanoraGrid(int id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, alkalmazottNev) = GetMegtartottTanoraGridData(id, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExportMegtartottTanoraGrid(int id, DataSourceRequest request) { try { var (gridParameter, modelList, alkalmazottNev) = GetMegtartottTanoraGridData(id, request); return GetMegtartottTanoraExportFile(gridParameter, modelList, AdatszolgaltatasokResource.MegtartottTanoraExportSheetName, $"{alkalmazottNev}_{AdatszolgaltatasokResource.MegtartottTanoraExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}", ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetMegtartottTanoraExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(AlkalmazottInfoModel.MegtartottTanoraModel.MegtartottTanoraExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } private (GridParameters gridParameter, List modelList, string alkalmazottNev) GetMegtartottTanoraGridData(int id, DataSourceRequest request) { var gridParameter = Converter.GridParameter(request); var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coList = helper.GetMegtartottTanoraCoList(id); var modelList = new List(); foreach (var co in coList) { var gridModel = new AlkalmazottInfoModel.MegtartottTanoraModel(co); modelList.Add(gridModel); } return (gridParameter, modelList, helper.GetTanarAdatok(id).NyomtatasiNev); } #endregion #region Értékelés tab public DataSourceResult GetErtekelesGrid(int id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList, alkalmazottNev) = GetErtekelesGridData(id, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExportErtekelesGrid(int id, DataSourceRequest request) { try { var (gridParameter, modelList, alkalmazottNev) = GetErtekelesGridData(id, request); return GetErtekelesExportFile(gridParameter, modelList, AdatszolgaltatasokResource.ErtekelesExportSheetName, $"{alkalmazottNev}_{AdatszolgaltatasokResource.ErtekelesExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}", ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetErtekelesExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(AlkalmazottInfoModel.ErtekelesModel.ErtekelesExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } private (GridParameters gridParameter, List modelList, string alkalmazottNev) GetErtekelesGridData(int id, DataSourceRequest request) { var gridParameter = Converter.GridParameter(request); var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var coList = helper.GetTanarErtekelesCoList(id); var modelList = new List(); foreach (var co in coList) { var gridModel = new AlkalmazottInfoModel.ErtekelesModel(co); modelList.Add(gridModel); } return (gridParameter, modelList, helper.GetTanarAdatok(id).NyomtatasiNev); } #endregion public HttpResponseMessage SaveModAlkalmazott(AlkalmazottModModel model) { if (!model.IsFromSzervezet) { AlkalmazottTobbesModCustomValidation(ModelState, model); } if (ModelState.IsValid) { try { var featureContext = (IFeatureContext)Request.GetDependencyScope().GetService(typeof(IFeatureContext)); var isKlebelsbergKozpontOrNSZFH = featureContext.IsEnabled(Core.Constants.FeatureName.MunkaugyiAdatokKlebelsberg) || featureContext.IsEnabled(Core.Constants.FeatureName.MunkaugyiAdatokNSZFH); var co = model.IsFromSzervezet ? ConvertSzervezetAlkalmazottModModelToCO(model) : ConvertAlkalmazottModModelToCO(model); var isNszfhUjSzkt = ClaimData.IsSelectedTanev20_21OrLater && ClaimData.IsSzakkepzoIntezmeny; if (string.IsNullOrWhiteSpace(model.AlkalmazottArray)) { var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); if (!model.IsFromSzervezet) { helper.AlkalmazottTobbesModify(co, model.NeedUpdateMunkaidoAdatai, isKlebelsbergKozpontOrNSZFH, isNszfhUjSzkt); } else { helper.SzervezetAlkalmazottTobbesModify(co); } return new HttpResponseMessage(HttpStatusCode.OK); } var alkalmazottArray = model.AlkalmazottArray.Split(','); foreach (var item in alkalmazottArray) { if (!string.IsNullOrWhiteSpace(item)) { var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); co.AlkalmazottId = int.Parse(item); if (!model.IsFromSzervezet) { helper.AlkalmazottTobbesModify(co, model.NeedUpdateMunkaidoAdatai, isKlebelsbergKozpontOrNSZFH, isNszfhUjSzkt); } else { helper.SzervezetAlkalmazottTobbesModify(co); } } } return new HttpResponseMessage(HttpStatusCode.OK); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } private TanarTobbesModCO ConvertAlkalmazottModModelToCO(AlkalmazottModModel model) { return new TanarTobbesModCO() { AlkalmazottId = model.AlkalmazottId, AlkalmazottArray = model.AlkalmazottArray, Nem = model.ModifyNem, PedagogusFokozat = model.PedagogusFokozat, KotelezoOraszam = model.Oraszam, MunkaidoKedvezmenyOka = model.MunkaidoKedvezmenyOka, MunkaidoKedvezmenyOraszam = model.MunkaidoKedvezmenyOraszam, MunkaKor = model.MunkaKor, FoglalkoztatasiJogviszony = model.FoglalkoztatasiJogviszony, AlkalmazasKezdete = model.AlkalmazasKezdete, FeladatellatasiHely = model.FeladatellatasiHely, GyESGyed = model.TartosHelyettesites, Foallasu = model.Foallasu, Nyugdijas = model.Nyugdijas, AlkalmazasVege = model.AlkalmazasVege, FoglalkoztatasTipusa = model.FoglalkoztatasTipusa, ReszmunkaidosSzazalek = model.ReszmunkaidosSzazalek, VezetoiOraszamOka = model.VezetoiOraszamOka, Szakvizsga = model.Szakvizsga, //SzabadAllashely = model.SzabadAllashely, SzakertoiVagyVizsgaelnokiTevekenysegu = model.SzakertoiVagyVizsgaelnokiTevekenysegu, SzakmaiTovabbkepzes = model.SzakmaiTovabbkepzes, SzakertoMesterpedagogusKutatotanar = model.SzakertoMesterpedagogusKutatotanar, VezetoPedagogusVezetoOvodaPedagogus = model.VezetoPedagogusVezetoOvodaPedagogus, Attanito = model.Attanito, AttanitoMasIntezmeny = model.AttanitoMasIntezmeny, IsAttanitoSzCnBelul = model.IsAttanitoSzCnBelul, AllandoHelyettesitesre = model.AllandoHelyettesitesre, IsKuldhetoPedMinositesSzRnek = model.IsKuldhetoPedMinositesSzRnek, OktatoiFeladatokatIsEllat = GetOktatoiFeladatokatIsEllat(model), IsOsztalyfonok = model.IsOsztalyfonok, IsInternetetOktCelraHasznal = model.IsInternetetOktCelraHasznal, IsInformatKepIsmRendelkezik = model.IsInformatKepIsmRendelkezik, IsIktEszkozoketLgalabb40Hasznal = model.IsIktEszkozoketLgalabb40Hasznal, HasEfopEszkoz = model.HasEfopEszkoz, }; } private TanarTobbesModCO ConvertSzervezetAlkalmazottModModelToCO(AlkalmazottModModel model) { return new TanarTobbesModCO() { AlkalmazottId = model.AlkalmazottId, AlkalmazottArray = model.AlkalmazottArray, Nem = model.ModifyNem, OktatoSzervezetId = model.OktatoSzervezetId }; } private int? GetOktatoiFeladatokatIsEllat(AlkalmazottModModel model) { if (model.MunkaKor.HasValue) { if (Core.Constants.NszfhTovabbiMunkakorTipusIdList.Contains(model.MunkaKor.Value)) { return model.OktatoiFeladatokatIsEllat; } return (int)IgenNemEnum.Nem; } return null; } [NonAction] public HttpResponseMessage SaveDualisKepzohelyiOktato(DualisKepzohelyiOktatoModel model, bool isFromSzervezet) { var co = new TanarAdatCO() { Nem = (int)NemEnum.Ferfi, NevElotag = model.NevEloTag, Elotag = model.NevEloTag, SzuletesiNevElotag = model.NevEloTag, SzuletesiCsaladiNev = AlkalmazottResource.DualisCsaladNev, SzuletesiUtonev = AlkalmazottResource.KulsoGyakorlatiUtoNev, AnyjaCsaladiNeve = AlkalmazottResource.DualisCsaladNev, AnyjaUtoneve = model.NevEloTag, MunkavallaloCsaladiNev = model.CsaladiNev, MunkavallaloUtonev = model.Utonev, FeladatellatasiHely = model.FeladatellatasiHely, SzuletesiHely = AlkalmazottResource.Ismeretlen, SzuletesiIdo = new DateTime(1950, 01, 01), MunkaKor = model.MunkaKor, FoglalkoztatasiJogviszony = (int)MunkaviszonyTipusEnum.na, BetoltetlenAllashely = false, VezetoiOraszamOka = (int)VezetoiOraszamokTipusEnum.Nincs, IsDualisKepzohelyiOktato = true, DualisKepzohelyNeve = model.DualisKepzohelyNeve, DualisKepzohelyAdoszama = model.DualisKepzohelyAdoszama, SzervezetId = model.OktatoSzervezetId, IsSzakiranyuOktatasertFelelos = model.IsSzakiranyuOktatasertFelelos, BelepesiNev = model.JogosultsagModel.BelepesiNev, Jelszo = model.JogosultsagModel.Jelszo, JogosultsagiSzint = ClaimData.IsActivTanev ? model.JogosultsagModel.JogosultsagiSzint.Select(int.Parse).ToList() : new List { (int)SzerepkorTipusEnum.Naplo } }; if (isFromSzervezet && model.OktatoSzervezetId.IsEntityId()) { var szervezetCo = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetDualisKepzohelyById(model.OktatoSzervezetId.Value); co.DualisKepzohelyNeve = szervezetCo.KepzohelyNeve; co.DualisKepzohelyAdoszama = szervezetCo.KepzohelyAdoszama; } var h = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType()); h.AddOrUpdateTeacher(_leltarClient, co, update: false, isSzirIntezmeny: ClaimData.IsSzirIntezmeny, ClaimData.IsActivTanev, isFromSzervezet: isFromSzervezet, isDualis: true); return new HttpResponseMessage(HttpStatusCode.OK); } } }