using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Configuration; using System.Data; using System.Linq; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.Client.Tavollet; using Kreta.Core.Configuratiaton; using Kreta.Core.SAP.CommunicationModels; using Kreta.Core.SAP.Enums; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Resources; using Kreta.Web.Areas.HRModul.Models; using Kreta.Web.Helpers; using Kreta.Web.Security; namespace Kreta.Web.Areas.HRModul.Logic { public class TavolletjelentoLogic { public TavolletjelentoSearchModel GetNewTavolletjelentoSearchModel(bool isKezeles) { var helper = new HRModulHelper(ConnectionTypeExtensions.GetSessionConnectionType()); TavolletjelentoSearchModel model = new TavolletjelentoSearchModel() { SrcIsLeaderCall = isKezeles && helper.IsLeader(), SrcToroltekMegjelenitese = IgenNemEnum.Igen.AsInt(), SrcKezeles = isKezeles, }; var tanev = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tanevCo = tanev.GetTanevInfo(); var kozpontiKreta = (KozpontiKretaConfiguration)ConfigurationManager.GetSection("KozpontiKretaConfig"); var client = new TavolletClient(kozpontiKreta.KgrUrl, kozpontiKreta.ApiKey); if (!ClaimData.IsDefaultAdminUser) { var kozpontiResult = client.GetTavolletAlkalmazottakAdatai(model.ConvertToTavolletAdatokRequestModel(tanevCo.Sorszam, ClaimData.FelhasznaloId)); if (kozpontiResult.IsSuccess && kozpontiResult.TavolletAdatokResultList != null && kozpontiResult.TavolletAdatokResultList.Count > 0) { model.SzTSzAzonosito = kozpontiResult.TavolletAdatokResultList[0].SzTSzAzonosito; model.SzabadsagKeret = kozpontiResult.TavolletAdatokResultList[0].EvesKeret; model.IgenybeVehetoTavolletek = kozpontiResult.TavolletAdatokResultList[0].FelhasznalhatoKeret; model.IgenybeVettTavolletek = kozpontiResult.TavolletAdatokResultList[0].FelhasznaltKeret; model.FuggobenLevoTavolletek = kozpontiResult.TavolletAdatokResultList[0].FuggoTavolletIgenyek; model.UtolsoSzinkron = kozpontiResult.TavolletAdatokResultList[0].UtolsoSzinkron; model.IsTavolletFoIntezmenye = kozpontiResult.TavolletAdatokResultList[0].IsTavolletFoIntezmenye; } } else { model.IsTavolletFoIntezmenye = true; } var tavolletJogosultSzerepkor = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue>(RendszerBeallitasTipusEnum.Tavollet_Jogosult_Szerepkor); if (ClaimData.IsAdministrator || helper.IsLeader() || (ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.alkalmazott && tavolletJogosultSzerepkor.Contains((int)TavolletJogosultSzerepkorEnum.Alkalmazott)) || (ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.Naplo && tavolletJogosultSzerepkor.Contains((int)TavolletJogosultSzerepkorEnum.Pedagogus)) || helper.IsHrKezelo() && model.IsTavolletFoIntezmenye) { model.SrcTavolletRogzitheto = true; model.SrcFoIntezmenyeE = 1; } if ((ClaimData.FelhasznaloSzerepkor == Enums.SzerepkorTipusEnum.Adminisztrator) || (helper.IsHrKezelo())) model.SrcIsAdminCall = true; if (!isKezeles) { model.SrcAlkalmazott = new int[] { ClaimData.FelhasznaloId }; model.AlkalmazottFilterId = ClaimData.FelhasznaloId; } model.MinimumSrcIdoszakKezdet = model.MinimumSrcIdoszakVeg = helper.GetMinimumNaptariEv(ClaimData.IsAdministrator); model.SrcNaptariEv = new int[] { DateTime.Now.Year }; return model; } public TavolletjelentoModel GetNewTavolletjelentoModel(bool isKezeles) { var now = DateTime.Now; var model = new TavolletjelentoModel { TavolletKezdet = now.StartOfWeek(DayOfWeek.Monday), TavolletVeg = now.StartOfWeek(DayOfWeek.Monday).AddDays(5), ViewType = TavolletjelentoViewTypeEnum.New, // MinKezdet = now.Day < 6 ? new DateTime(now.AddMonths(-1).Year, now.AddMonths(-1).Month, 1) : new DateTime(now.Year, now.Month, 1), Muvelet = WorkflowMuveletEnum.UjRogzites, IsKezeles = isKezeles, }; var helper = new HRModulHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); model.IsLeaderCall = helper.IsLeader(); model.TavolletIdotartamNap = helper.GetTavolletIdotartam(model.TavolletKezdet.Value, model.TavolletVeg.Value); var attribute = (StringLengthAttribute)typeof(TavolletjelentoModel).GetProperty(nameof(model.Megjegyzes)).GetCustomAttributes(typeof(StringLengthAttribute), false).First(); model.MegjegyzesMezoMaxHossza = attribute.MaximumLength; if ((ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.Adminisztrator) || helper.IsHrKezelo()) model.IsAdminCall = true; if (!isKezeles) { model.AlkalmazottList = new string[] { string.Format("{0}", ClaimData.FelhasznaloId) }; model.AlkalmazottFilterId = ClaimData.FelhasznaloId; } return model; } public TavolletjelentoModel GetModifyTavolletjelentoModel(int id, WorkflowMuveletEnum muvelet = WorkflowMuveletEnum.CsakModositas) { var helper = new HRModulHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); //var model = ConvertCoToModel(helper.GetTavolletCO(id)); var alkalmazottHelper = new AlkalmazottHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var kozpontiKreta = (KozpontiKretaConfiguration)ConfigurationManager.GetSection("KozpontiKretaConfig"); var client = new TavolletClient(kozpontiKreta.KgrUrl, kozpontiKreta.ApiKey); var alkalmazottak = new List(); alkalmazottak.Add(new TavolletAlkalmazottData { TavolletJelentoId = id }); var kozpontiResult = client.GetTavollet(new TavolletjelentoCRUDRequestModel { AlkalmazottList = alkalmazottak }); var co = new TavolletjelentoCO() { ID = kozpontiResult.TavolletJelentoId, TavolletOka = kozpontiResult.TavolletTipusId.GetDisplayName(ClaimData.SelectedTanevID.Value), TavolletOkaId = kozpontiResult.TavolletTipusId, AlkalmazottNeve = kozpontiResult.AlkalmazottNev, TavolletKezdet = kozpontiResult.TavolletKezdete, TavolletVeg = kozpontiResult.TavolletVege, TavolletIdotartamNap = kozpontiResult.TavolletIdotartamaNap, StatuszId = kozpontiResult.TavolletStatuszId, StatuszNeve = kozpontiResult.TavolletStatuszId.GetDisplayName(ClaimData.SelectedTanevID.Value), RogzitoNeve = kozpontiResult.RogzitoNev, MegjegyzesekList = kozpontiResult.MegjegyzesekList, //Dokumentum = kozpontiResult.DokumentumokList, AlkalmazottId = ClaimData.IntezmenyAzonosito == kozpontiResult.RogzitoIntezmenyAzonosito ? alkalmazottHelper.GetAlkalmazottIdByGUID(kozpontiResult.AlkalmazottGuid.ToString()) : default }; var model = ConvertCoToModel(co); model.IsNemRogzitoIntezmeny = ClaimData.IntezmenyAzonosito != kozpontiResult.RogzitoIntezmenyAzonosito; model.OsszefuzottMegjegyzesek = new List(); foreach (var megjegyzes in kozpontiResult.MegjegyzesekList) { var megjegyzesLine = string.Format("{0} ({1}) - {2}", megjegyzes.RogzitesIdopontja.ToString("yyyy.MM.dd HH:mm:ss"), megjegyzes.RogzitoNev, megjegyzes.Megjegyzes); model.OsszefuzottMegjegyzesek.Add(new TavolletjelentoMegjegyzesItem(megjegyzesLine, (megjegyzes.MegjegyzesTipus == MegjegyzesTipusok.Hianypotlas ? "hp" : ""))); } var attribute = (StringLengthAttribute)typeof(TavolletjelentoModel).GetProperty(nameof(model.MegjegyzesMezo)).GetCustomAttributes(typeof(StringLengthAttribute), false).First(); model.MegjegyzesMezoMaxHossza = attribute.MaximumLength; model.ViewType = TavolletjelentoViewTypeEnum.Modify; model.IsHianypotlas = model.StatuszId == (int)TavolletStatuszEnum.HianypotlasraVisszakuldve || model.StatuszId == (int)TavolletStatuszEnum.Tankerulet_altal_hianypotlasra_visszakuldve; model.IsLeaderCall = helper.IsLeader(); model.Muvelet = muvelet; if ((ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.Adminisztrator) || helper.IsHrKezelo()) model.IsAdminCall = true; return model; } public TavolletjelentoTobbesModel GetTobbesModifyTavolletjelentoModel(List ids) { var alkalmazottHelper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var kozpontiKreta = (KozpontiKretaConfiguration)ConfigurationManager.GetSection("KozpontiKretaConfig"); var client = new TavolletClient(kozpontiKreta.KgrUrl, kozpontiKreta.ApiKey); var alkalmazottak = new List(); var alkalmazottIds = new List(); var alkalmazottNevek = new List(); var tavolletekDict = new Dictionary(); foreach (var id in ids) { alkalmazottak.Add(new TavolletAlkalmazottData { TavolletJelentoId = id }); } var kozpontiResult = client.GetTavolletDetailList(new TavolletjelentoCRUDRequestModel { AlkalmazottList = alkalmazottak }); foreach (var alkalmazott in kozpontiResult.TavolletjelentoResultList) { alkalmazottIds.Add(alkalmazottHelper.GetAlkalmazottIdByGUID(alkalmazott.AlkalmazottGuid.ToString())); alkalmazottNevek.Add(alkalmazott.AlkalmazottNev); tavolletekDict.Add(alkalmazott.TavolletJelentoId, new AlkalmazottAdat { AlkalmazottSzTSz = alkalmazott.AlkalmazottSzTSz, RogzitoFunkcioTerulet = alkalmazott.RogzitoFunkcioTerulet }); } var model = new TavolletjelentoTobbesModel(); var idArrayString = string.Join(",", ids); model.TavolletIDArrayString = idArrayString; model.TavolletAlkalmazottIdArrayString = string.Join(",", alkalmazottIds.Distinct()); model.TavolletAlkalmazottNevArray = string.Join(", ", alkalmazottNevek.Distinct()); model.TavolletekDictionary = tavolletekDict; var firstTipusId = kozpontiResult.TavolletjelentoResultList.FirstOrDefault()?.TavolletTipusId; var firstTavolletKezdete = kozpontiResult.TavolletjelentoResultList.FirstOrDefault()?.TavolletKezdete; var firstTavolletVege = kozpontiResult.TavolletjelentoResultList.FirstOrDefault()?.TavolletVege; model.ElteroSorok = kozpontiResult.TavolletjelentoResultList.Any(i => i.TavolletTipusId != firstTipusId) || kozpontiResult.TavolletjelentoResultList.Any(I => I.TavolletKezdete != firstTavolletKezdete) || kozpontiResult.TavolletjelentoResultList.Any(i => i.TavolletVege != firstTavolletVege); model.FelhasznaloTobbszorKivalasztva = kozpontiResult.TavolletjelentoResultList.Select(i => i.AlkalmazottGuid).Count() != kozpontiResult.TavolletjelentoResultList.Select(i => i.AlkalmazottGuid).Distinct().Count(); return model; } public TavolletjelentoCRUDRequestModel SaveOrUpdateTavollet(TavolletjelentoModel model, TavolletjelentoCO co) { //FIXME!!!4!!!! var felhasznaloHelper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var alkalmazottHelper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var HRModulHelper = new HRModulHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var alkalmazottak = new List(); var tanev = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tanevCo = tanev.GetTanevInfo(); var aIds = model.AlkalmazottList.Select(int.Parse).Distinct().ToList(); var aa = alkalmazottHelper.GetAlkalmazottIDTavolletAlkalmazott(aIds); if (model.AlkalmazottList.Length > 0 && model.Muvelet != WorkflowMuveletEnum.CsakModositas) { if (model.Muvelet != WorkflowMuveletEnum.Elutasitas) { foreach (var id in aIds) { alkalmazottak.Add(new TavolletAlkalmazottData { TavolletJelentoId = model.ID ?? default, RogzitoFunkcioTerulet = aa[id].FunkcioTerulet, AlkalmazottSzTSz = aa[id].AlkalmazottSzTSz, AlkalmazottGuid = aa[id].AlkalmazottGuid, AlkalmazottNev = aa[id].AlkalmazottNev, }); } } else { foreach (var alkalmazott in model.AlkalmazottList) { alkalmazottak.Add(new TavolletAlkalmazottData { TavolletJelentoId = model.ID ?? default, }); } } } else { if (model.AlkalmazottList.Length > 0 && !model.ID.HasValue) { //foreach (var alkalmazott in model.AlkalmazottList) //{ // alkalmazottak.Add(new TavolletAlkalmazottData // { // TavolletJelentoId = default // }); //} } else { alkalmazottak.Add(new TavolletAlkalmazottData { TavolletJelentoId = model.ID.Value, RogzitoFunkcioTerulet = aa[aIds.First()].FunkcioTerulet, AlkalmazottSzTSz = aa[aIds.First()].AlkalmazottSzTSz, }); } } var request = new TavolletjelentoCRUDRequestModel(); request.AlkalmazottList = alkalmazottak; if (co != null) {/* saveModel.Action = WorkflowMuveletek.Modosit; saveModel.TavolletTipusId = tobbesModel.TavolletOka.Value; saveModel.TavolletStatuszId = (int)TavolletStatuszEnum.Fuggo; saveModel.TavolletKezdete = tobbesModel.TavolletKezdet.Value.ToLocalTime(); saveModel.TavolletVege = tobbesModel.TavolletVeg.Value.ToLocalTime(); saveModel.TavolletIdotartamaNap = tobbesModel.TavolletIdotartamNap ?? default; saveModel.Megjegyzes = tobbesModel.Megjegyzes; saveModel.RogzitoNev = ClaimData.FelhasznaloNev; saveModel.RogzitoGuid = Guid.Parse(felhasznaloHelper.GetFelhasznaloEgyediAzonosito(ClaimData.FelhasznaloId)); saveModel.RogzitoIntezmenyAzonosito = ClaimData.IntezmenyAzonosito; */ request.KretaIntezmenyAzonosito = ClaimData.IntezmenyAzonosito; request.KretaIntezmenyId = ClaimData.IntezmenyId; request.TanevId = tanevCo.Sorszam; //request.FunkcioTerulet = felhasznaloHelper.GetFunkcioTeruletSAPKod(ClaimData.FelhasznaloId); request.RogzitoIntezmenyAzonosito = ClaimData.IntezmenyAzonosito; request.RogzitoGuid = Guid.Parse(felhasznaloHelper.GetFelhasznaloEgyediAzonosito(ClaimData.FelhasznaloId)); request.RogzitoNev = ClaimData.FelhasznaloNev;// alkalmazottHelper.GetAlkalmazottNevById(ClaimData.FelhasznaloId); //ClaimData.FelhasznaloNev request.TavolletNaptariEv = DateTime.Now.Year; //TODO: ha következő évre rögzítünk, akkor az az év legyen? request.TavolletKezdete = model.TavolletKezdet.HasValue ? model.TavolletKezdet.Value.ToLocalTime() : default; //TODO request.TavolletVege = model.TavolletVeg.HasValue ? model.TavolletVeg.Value.ToLocalTime() : default; //TODO request.TavolletIdotartamaNap = model.TavolletIdotartamNap.Value; request.TavolletIdotartamaOra = 0; request.TavolletTipusId = model.TavolletOka ?? default; //TODO request.Megjegyzes = co.Megjegyzes; request.IsMellekletTartozikHozza = model.FilesArray != null && model.FilesArray.Count > 0; } switch (model.Muvelet) { case WorkflowMuveletEnum.UjRogzites: if (HRModulHelper.IsIntezmenyvezeto(ClaimData.FelhasznaloId)) { request.TavolletStatuszId = (int)HRModulHelper.GetElfogadasStatuszByTipus((TavolletTipusEnum)co.TavolletOkaId); } else { request.TavolletStatuszId = (int)TavolletStatuszEnum.Fuggo; } request.Action = WorkflowMuveletek.Letrehoz; break; case WorkflowMuveletEnum.CsakModositas: if (model.StatuszId == (int)TavolletStatuszEnum.HianypotlasraVisszakuldve || model.StatuszId == (int)TavolletStatuszEnum.Tankerulet_altal_hianypotlasra_visszakuldve) { request.TavolletStatuszId = (int)TavolletStatuszEnum.Fuggo; } else { request.TavolletStatuszId = model.StatuszId; } request.Action = WorkflowMuveletek.Modosit; break; case WorkflowMuveletEnum.Hianypotlas: request.TavolletStatuszId = (int)TavolletStatuszEnum.HianypotlasraVisszakuldve; request.Action = WorkflowMuveletek.Hianypotlas; break; case WorkflowMuveletEnum.Elutasitas: request.TavolletStatuszId = (int)TavolletStatuszEnum.Elutasitva; request.Action = WorkflowMuveletek.Elutasit; break; } return request; } public TavolletjelentoCRUDRequestModel ElfogadTavollet(TavolletjelentoModel model, TavolletjelentoCO co) { var alkalmazottak = new List(); if (model.AlkalmazottList.Length > 0) { foreach (var alkalmazott in model.AlkalmazottList) { alkalmazottak.Add(new TavolletAlkalmazottData { TavolletJelentoId = int.Parse(alkalmazott), }); } } var request = new TavolletjelentoCRUDRequestModel(); request.AlkalmazottList = alkalmazottak; request.TavolletTipusId = model.TavolletOka ?? 0; request.Action = WorkflowMuveletek.Modosit; request.TavolletKezdete = model.TavolletKezdet.HasValue ? model.TavolletKezdet.Value.ToLocalTime() : default; request.TavolletVege = model.TavolletVeg.HasValue ? model.TavolletVeg.Value.ToLocalTime() : default; request.TavolletStatuszId = model.StatuszId; return request; } public TavolletjelentoCRUDRequestModel DeleteTavollet(TavolletjelentoDeleteModel model) { var alkalmazottHelper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var felhasznaloHelper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType()); //var megjegyzes = CreateTimestampedComment(model.Note); //if (!string.IsNullOrWhiteSpace(megjegyzes)) //{ // megjegyzes += string.IsNullOrWhiteSpace(megjegyzes) ? megjegyzes : "\n" + megjegyzes; //} var alkalmazottak = new List(); alkalmazottak.Add(new TavolletAlkalmazottData { TavolletJelentoId = model.Id }); var request = new TavolletjelentoCRUDRequestModel { AlkalmazottList = alkalmazottak, Megjegyzes = model.Note, Action = WorkflowMuveletek.Torol, RogzitoNev = alkalmazottHelper.GetAlkalmazottNevById(ClaimData.FelhasznaloId), RogzitoGuid = Guid.Parse(felhasznaloHelper.GetFelhasznaloEgyediAzonosito(ClaimData.FelhasznaloId)) }; return request; } public void CustomValidation(System.Web.Http.ModelBinding.ModelStateDictionary ModelState, TavolletjelentoModel model) { if (model.AlkalmazottList.Length > 0) { var alkalmazottakSzTSzAzonositoNelkul = new List(); var alkalmazottHelper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); foreach (var alkalmazott in model.AlkalmazottList) { if (!HasSZTSZKOD(Convert.ToInt32(alkalmazott))) { alkalmazottakSzTSzAzonositoNelkul.Add(alkalmazottHelper.GetAlkalmazottNevById(Convert.ToInt32(alkalmazott))); } } if (alkalmazottakSzTSzAzonositoNelkul.Count > 0) { ModelState.AddModelError("NincsSzTSzAzonositoError", string.Format(HRModulResource.NincsSzTSzAzonosito, string.Join(", ", alkalmazottakSzTSzAzonositoNelkul))); } } if (model.AlkalmazottList.Length > 1 && model.FilesArray != null && model.FilesArray.Any()) { ModelState.AddModelError("FilesArrayError", HRModulResource.WarnCsatolmanyNemRogzithetoTobbAlkalmazottnak); } if (!string.IsNullOrWhiteSpace(model.MegjegyzesMezo)) { var attribute = (StringLengthAttribute)typeof(TavolletjelentoModel).GetProperty(nameof(model.Megjegyzes)).GetCustomAttributes(typeof(StringLengthAttribute), false).First(); if (model.MegjegyzesMezo.Length > attribute.MaximumLength) { ModelState.AddModelError("MegjegyzesMaxHossz", HRModulResource.MegjegyzesMax255Karakter); } } var helper = new HRModulHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tavolletJogosultSzerepkor = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue>(RendszerBeallitasTipusEnum.Tavollet_Jogosult_Szerepkor); var error = true; if ((ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.alkalmazott && tavolletJogosultSzerepkor.Contains((int)TavolletJogosultSzerepkorEnum.Alkalmazott)) || (ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.Naplo && tavolletJogosultSzerepkor.Contains((int)TavolletJogosultSzerepkorEnum.Pedagogus)) || ClaimData.IsAdministrator || helper.IsLeader() || helper.IsHrKezelo()) { error = false; } if (error) { ModelState.AddModelError("JogosultsagError", HRModulResource.NincsJogosultsagaTavolletetRogziteni); } else { if ((DateTime.Now.Hour >= 16 && model.TavolletKezdet.HasValue && model.TavolletKezdet.Value.Day - 1 == DateTime.Now.Day) && (!ClaimData.IsAdministrator || !helper.IsLeader())) { ModelState.AddModelError("RogzitesiIdoError", HRModulResource.MaMarNemRogzithetTavolletetHolnapra); } } if (!model.TavolletKezdet.HasValue) { ModelState.AddModelError("RogzitesiIdoError", HRModulResource.TavolletKezdetKotelezo); } if (!model.TavolletVeg.HasValue) { ModelState.AddModelError("RogzitesiIdoError", HRModulResource.TavolletVegKotelezo); } if (model.TavolletKezdet.Value > model.TavolletVeg.Value) { ModelState.AddModelError("DatumError", HRModulResource.KezdetNemLehetNagyobbAVegenel); } if (model.TavolletKezdet.Value < DateTime.Now && DateTime.Now.Day > 5 && model.TavolletKezdet.Value.Month < DateTime.Now.Month && model.TavolletKezdet.Value.Year == model.TavolletVeg.Value.Year) { ModelState.AddModelError("DatumError", HRModulResource.TavolletRogziteseNemLehetsegesAzAdottIdoszakban); } if (!model.TavolletOka.HasValue) { ModelState.AddModelError("TavolletOkaError", HRModulResource.TavolletOkaKotelezo); } if (model.AlkalmazottList.Length <= 0 && !model.ID.HasValue) { ModelState.AddModelError("AlkalmazottListError", HRModulResource.LegalabbEgyAlkalmazott); } } public void CustomValidation(System.Web.Http.ModelBinding.ModelStateDictionary ModelState, TavolletjelentoTobbesModel model) { if (model.TavolletAlkalmazottIdArray.Length > 0) { var alkalmazottakSzTSzAzonositoNelkul = new List(); var alkalmazottHelper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); foreach (var alkalmazott in model.TavolletAlkalmazottIdArray) { if (!HasSZTSZKOD(Convert.ToInt32(alkalmazott))) { alkalmazottakSzTSzAzonositoNelkul.Add(alkalmazottHelper.GetAlkalmazottNevById(Convert.ToInt32(alkalmazott))); } } if (alkalmazottakSzTSzAzonositoNelkul.Count > 0) { ModelState.AddModelError("NincsSzTSzAzonositoError", string.Format(HRModulResource.NincsSzTSzAzonosito, string.Join(", ", alkalmazottakSzTSzAzonositoNelkul))); } } var HRModulHelper = new HRModulHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tavolletJogosultSzerepkor = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue>(RendszerBeallitasTipusEnum.Tavollet_Jogosult_Szerepkor); var error = true; if ((ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.alkalmazott && tavolletJogosultSzerepkor.Contains((int)TavolletJogosultSzerepkorEnum.Alkalmazott)) || (ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.Naplo && tavolletJogosultSzerepkor.Contains((int)TavolletJogosultSzerepkorEnum.Pedagogus)) || ClaimData.IsAdministrator || HRModulHelper.IsLeader()) { error = false; } if (error) { ModelState.AddModelError("JogosultsagError", HRModulResource.NincsJogosultsagaTavolletetRogziteni); } else { if ((DateTime.Now.Hour >= 16 && model.TavolletKezdet.HasValue && model.TavolletKezdet.Value.Day - 1 == DateTime.Now.Day) && (!ClaimData.IsAdministrator || !HRModulHelper.IsLeader())) { ModelState.AddModelError("RogzitesiIdoError", HRModulResource.MaMarNemRogzithetTavolletetHolnapra); } } if (model.TavolletKezdet.Value > model.TavolletVeg.Value) { ModelState.AddModelError("DatumError", HRModulResource.KezdetNemLehetNagyobbAVegenel); } if (model.TavolletAlkalmazottIdArray.Length <= 0) { ModelState.AddModelError("AlkalmazottListError", HRModulResource.LegalabbEgyAlkalmazott); } } public TavolletjelentoModel ConvertCoToModel(TavolletjelentoCO co) { var model = new TavolletjelentoModel() { ID = co.ID ?? default(int), AlkalmazottFilterId = co.AlkalmazottId, StatuszId = co.StatuszId, RogzitoId = co.RogzitoId, TavolletOka = co.TavolletOkaId, AlkalmazottList = co.AlkalmazottList, AlkalmazottNeve = co.AlkalmazottNeve, TavolletKezdet = co.TavolletKezdet, TavolletVeg = co.TavolletVeg, TavolletIdotartamNap = co.TavolletIdotartamNap, StatuszNeve = co.StatuszNeve, RogzitoNeve = co.RogzitoNeve, Megjegyzes = co.Megjegyzes, HianypotlasSzoveg = co.HianypotlasSzoveg, KozpontiHianypotlasSzoveg = co.KozpontiHianypotlasSzoveg }; return model; } /// /// A model-ben az IsLeaderCall és az IsAdminCall frissítése szerveroldali értékkel! /// public TavolletjelentoModel UpdateModelAuthorizationData(TavolletjelentoModel model) { var helper = new HRModulHelper(ConnectionTypeExtensions.GetSessionConnectionType()); model.IsLeaderCall = helper.IsLeader(); if ((ClaimData.FelhasznaloSzerepkor == SzerepkorTipusEnum.Adminisztrator) || helper.IsHrKezelo()) model.IsAdminCall = true; return model; } public TavolletjelentoCO ConvertModelToCo(TavolletjelentoModel model) { var co = new TavolletjelentoCO() { ID = model.ID ?? default(int), RogzitoId = ClaimData.FelhasznaloId, StatuszId = model.StatuszId, TavolletOkaId = model.TavolletOka.Value, AlkalmazottList = model.AlkalmazottList, TavolletKezdet = model.TavolletKezdet.Value, TavolletVeg = model.TavolletVeg.Value, TavolletIdotartamNap = model.TavolletIdotartamNap.Value, Megjegyzes = model.MegjegyzesMezo, }; if (model.Muvelet == WorkflowMuveletEnum.Hianypotlas && (model.StatuszId == (int)TavolletStatuszEnum.Fuggo || model.StatuszId == (int)TavolletStatuszEnum.Tankerulet_altal_hianypotlasra_visszakuldve) && (model.IsLeaderCall || model.IsAdminCall)) { co.StatuszId = (int)TavolletStatuszEnum.HianypotlasraVisszakuldve; } if (model.Muvelet == WorkflowMuveletEnum.CsakModositas && ((model.StatuszId == (int)TavolletStatuszEnum.HianypotlasraVisszakuldve && (model.IsLeaderCall || model.IsAdminCall || model.AlkalmazottList.First() == ClaimData.FelhasznaloId.ToString() || model.RogzitoId == ClaimData.FelhasznaloId)) || model.StatuszId == (int)TavolletStatuszEnum.Tankerulet_altal_hianypotlasra_visszakuldve && model.IsLeaderCall)) { co.StatuszId = (int)TavolletStatuszEnum.Fuggo; } if (model.FilesArray?.Count > 0) { co.FilesArray = new List(); foreach (var item in model.FilesArray) { var index = item.ContentAsBase64EncodedString.IndexOf(','); co.FilesArray.Add(new CsatolmanyCO() { Name = item.Name, ContentAsBase64EncodedString = item.ContentAsBase64EncodedString.Substring(index + 1) }); } } return co; } public void SendEmail(TavolletjelentoCO co, Guid? eredetiRogzitoGuid = null) { var dateString = " - " + co.TavolletKezdet.ToShortDateString(); if (co.TavolletKezdet.Date != co.TavolletVeg.Date) dateString += " - " + co.TavolletVeg.ToShortDateString(); var alkHelper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var hrHelper = new HRModulHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var intezmenyVezetoData = alkHelper.GetAlkalmazottNeveEsEmailCime((int)EmailTipusEnum.Hivatalos, new List { (int)VezetoiOraszamokTipusEnum.Intezmenyvezeto, (int)VezetoiOraszamokTipusEnum.igazgato }, null); if (intezmenyVezetoData.Tables[0].Rows.Count > 0) { var vezetoNev = intezmenyVezetoData.Tables[0].Rows[0].Field("Nev"); var vezetoEmailCim = intezmenyVezetoData.Tables[0].Rows[0].Field("EmailCim"); var vezetoEmailGuid = SDAConvert.ToNullableGuid(intezmenyVezetoData.Tables[0].Rows[0]["EmailGuid"]); foreach (var item in co.AlkalmazottList) { var alkalmazottData = alkHelper.GetAlkalmazottNeveEsEmailCime((int)EmailTipusEnum.Hivatalos, null, int.Parse(item)); var alkalmazottNev = alkalmazottData.Tables[0].Rows[0].Field("Nev"); var alkalmazottEmail = alkalmazottData.Tables[0].Rows[0].Field("EmailCim"); var alkalmazottEmailGuid = SDAConvert.ToNullableGuid(alkalmazottData.Tables[0].Rows[0]["EmailGuid"]); var tavolletOka = hrHelper.GetTavolletOkaDictionaryItemName(co.TavolletOkaId); var helper = new UzenetekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); if (co.StatuszId == 0 && string.IsNullOrWhiteSpace(co.HianypotlasSzoveg) && !string.IsNullOrWhiteSpace(vezetoEmailCim)) { helper.EmailKuldes( string.Format(EmailResource.TavolletIgenylesFeladasContent, vezetoNev, alkalmazottNev, tavolletOka, dateString), EmailResource.TavolletIgenylesFeladasSubject + dateString, vezetoEmailCim, vezetoEmailGuid); } else if (co.StatuszId == (int)TavolletStatuszEnum.Fuggo && string.IsNullOrWhiteSpace(co.HianypotlasSzoveg) && !string.IsNullOrWhiteSpace(vezetoEmailCim)) { helper.EmailKuldes( string.Format(EmailResource.TavolletIgenylesModositasContent, vezetoNev, alkalmazottNev, tavolletOka, dateString), EmailResource.TavolletIgenylesModositasSubject + dateString, vezetoEmailCim, vezetoEmailGuid); } else if (co.StatuszId == (int)TavolletStatuszEnum.Fuggo && !string.IsNullOrWhiteSpace(co.HianypotlasSzoveg) && !string.IsNullOrWhiteSpace(vezetoEmailCim)) { helper.EmailKuldes( string.Format(EmailResource.TavolletIgenylesHPUjraKuldesContent, vezetoNev, alkalmazottNev, tavolletOka, dateString, co.HianypotlasSzoveg), EmailResource.TavolletIgenylesHPUjraKuldesSubject + dateString, vezetoEmailCim, vezetoEmailGuid); } else if (co.StatuszId == (int)TavolletStatuszEnum.HianypotlasraVisszakuldve) { if (!string.IsNullOrWhiteSpace(alkalmazottEmail)) { helper.EmailKuldes( string.Format(EmailResource.TavolletIgenylesHPKuldesContent, alkalmazottNev, alkalmazottNev, tavolletOka, dateString, co.HianypotlasSzoveg), EmailResource.TavolletIgenylesHPKuldesSubject + dateString, alkalmazottEmail, alkalmazottEmailGuid); } if (!string.IsNullOrWhiteSpace(vezetoEmailCim) && (vezetoEmailCim != alkalmazottEmail)) { helper.EmailKuldes( string.Format(EmailResource.TavolletIgenylesHPKuldesContent, vezetoNev, alkalmazottNev, tavolletOka, dateString, co.HianypotlasSzoveg), EmailResource.TavolletIgenylesHPKuldesSubject + dateString, vezetoEmailCim, vezetoEmailGuid); } if (eredetiRogzitoGuid != null) { var rogzitoData = hrHelper.GetAlkalmazottEmailDataByGuid(eredetiRogzitoGuid.Value); if (rogzitoData != null && !string.IsNullOrWhiteSpace(rogzitoData.EmailCim) && (rogzitoData.EmailCim != alkalmazottEmail) && (rogzitoData.EmailCim != vezetoEmailCim)) { helper.EmailKuldes(string.Format(EmailResource.TavolletIgenylesHPKuldesContent, rogzitoData.AlkalmazottNev, alkalmazottNev, tavolletOka, dateString), EmailResource.TavolletIgenylesHPKuldesSubject + dateString, rogzitoData.EmailCim, rogzitoData.EmailGuid); } } } } } } public void SendEmail(TavolletAlkalmazottResponseData tavolletAlkalmazottData, int statuszId, Guid? rogzitoGuid = null) { var hrHelper = new HRModulHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var helper = new UzenetekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var emailData = hrHelper.GetAlkalmazottEmailDataByGuid(tavolletAlkalmazottData.AlkalmazottGuid); var alkalmazottEmailCim = emailData?.EmailCim; var alkalmazottEmailGuid = emailData?.EmailGuid; var alkalmazottNeve = tavolletAlkalmazottData.AlkalmazottNev; var tipus = tavolletAlkalmazottData.TavolletTipusId.GetDisplayName(ClaimData.SelectedTanevID.Value); var idoszak = string.Format("{0} - {1}", tavolletAlkalmazottData.TavolletKezdete.ToString("yyyy-MM-dd"), tavolletAlkalmazottData.TavolletVege.ToString("yyyy-MM-dd")); List elfogadasStatuszok = new List { TavolletStatuszEnum.Elfogadva_atadva_tankeruletnek.AsInt(), TavolletStatuszEnum.Engedelyezve_atadva_tankeruletnek.AsInt(), TavolletStatuszEnum.Tudomasul_veve_atadva_tankeruletnek.AsInt() }; if (elfogadasStatuszok.Contains(statuszId) && !string.IsNullOrWhiteSpace(alkalmazottEmailCim)) { helper.EmailKuldes(string.Format( @"Tisztelt {0}!

A KRÉTA rendszerben az alábbi távollét igény került elfogadásra:

Távollétet igénylő alkalmazott: {0}
Távollét jogcíme: {1}
Távollét időtartama: {2}

", alkalmazottNeve, tipus, idoszak), "Elfogadott távollét igénylés - " + idoszak, alkalmazottEmailCim, alkalmazottEmailGuid); } else if (statuszId == (int)TavolletStatuszEnum.Elutasitva) { if (!string.IsNullOrWhiteSpace(alkalmazottEmailCim)) { helper.EmailKuldes(string.Format(EmailResource.TavolletIgenylesElutasitasContent, alkalmazottNeve, alkalmazottNeve, tipus, idoszak), string.Format(EmailResource.TavolletIgenylesElutasitasSubject, idoszak), alkalmazottEmailCim, alkalmazottEmailGuid); } var alkHelper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var intezmenyVezetoData = alkHelper.GetAlkalmazottNeveEsEmailCime((int)EmailTipusEnum.Hivatalos, new List { (int)VezetoiOraszamokTipusEnum.Intezmenyvezeto, (int)VezetoiOraszamokTipusEnum.igazgato }, null); string vezetoEmailCim = null; if (intezmenyVezetoData.Tables[0].Rows.Count > 0) { var vezetoNev = intezmenyVezetoData.Tables[0].Rows[0].Field("Nev"); vezetoEmailCim = intezmenyVezetoData.Tables[0].Rows[0].Field("EmailCim"); var vezetoEmailGuid = SDAConvert.ToNullableGuid(intezmenyVezetoData.Tables[0].Rows[0]["EmailGuid"]); if (!string.IsNullOrWhiteSpace(vezetoEmailCim) && (vezetoEmailCim != alkalmazottEmailCim)) { helper.EmailKuldes(string.Format(EmailResource.TavolletIgenylesElutasitasContent, vezetoNev, alkalmazottNeve, tipus, idoszak), string.Format(EmailResource.TavolletIgenylesElutasitasSubject, idoszak), vezetoEmailCim, vezetoEmailGuid); } } if (rogzitoGuid != null) { var rogzitoData = hrHelper.GetAlkalmazottEmailDataByGuid(rogzitoGuid.Value); if (rogzitoData != null && !string.IsNullOrWhiteSpace(rogzitoData.EmailCim) && (rogzitoData.EmailCim != alkalmazottEmailCim) && (rogzitoData.EmailCim != vezetoEmailCim)) { helper.EmailKuldes(string.Format(EmailResource.TavolletIgenylesElutasitasContent, rogzitoData.AlkalmazottNev, alkalmazottNeve, tipus, idoszak), string.Format(EmailResource.TavolletIgenylesElutasitasSubject, idoszak), rogzitoData.EmailCim, rogzitoData.EmailGuid); } } } } public bool HasSZTSZKOD(int userId) { return new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()).HasSZTSZKOD(userId); } public string GetSZTSZKOD(int felhasznaloId) { return new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSZTSZKOD(felhasznaloId); } public bool HasValidMunkaviszony(int userId) { return new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()).HasValidMunkaviszony(userId); } public TavolletjelentoListaResponseModel GetTavolletjelentoLista(TavolletjelentoSearchModel model, HRModulHelper helper) { var isLeader = helper.IsLeader(); if (!model.SrcKezeles || (!isLeader && ClaimData.FelhasznaloSzerepkor != SzerepkorTipusEnum.Adminisztrator && !helper.IsHrKezelo())) { model.SrcAlkalmazott = new int[] { ClaimData.FelhasznaloId }; } var tanev = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var tanevCo = tanev.GetTanevInfo(); var kozpontiKreta = (KozpontiKretaConfiguration)ConfigurationManager.GetSection("KozpontiKretaConfig"); var client = new TavolletClient(kozpontiKreta.KgrUrl, kozpontiKreta.ApiKey); return client.GetTavolletek(model.ConvertToTavolletjelentoListaRequestModel(tanevCo.Sorszam)); } } public class TavolletjelentoMegjegyzesItem { public string CommentContent { get; set; } public string CommentTypeClass { get; set; } public TavolletjelentoMegjegyzesItem(string megjegyzes, string type) { CommentContent = megjegyzes; CommentTypeClass = type; } } public static class DateTimeExtensions { public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek) { int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7; return dt.AddDays(-1 * diff).Date; } } }