using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Web.Mvc; using Hangfire; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.Client.Eugyintezes.Configuration; using Kreta.Core; using Kreta.Core.FileService; using Kreta.Enums; using Kreta.Job.Tasks.Core; using Kreta.Resources; using Kreta.Web.Areas.Intezmeny.Controllers; using Kreta.Web.Areas.Intezmeny.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Helpers.TabStrip; using Kreta.Web.Security; using Newtonsoft.Json; namespace Kreta.Web.Areas.Intezmeny.Logic { public static class TeremLogic { private static TabStripItemModel BuildTabStripModel(string itemId, string itemName, string area, string controller, string action, Dictionary routeParameters) => new TabStripItemModel { ItemId = itemId, ItemName = itemName, Area = area, Controller = controller, Action = action, RouteParameters = routeParameters }; private static TabStripItemModel BuildTabStripModel(string itemId, string itemName, Model model, string partialViewName, bool isActive = false, Dictionary routeParameters = null) where Model : class { var tabStripItemModel = new TabStripItemModel { ItemId = itemId, ItemName = itemName, RouteParameters = routeParameters, Model = model, PartialViewName = partialViewName, IsActive = isActive }; if (routeParameters != null) { tabStripItemModel.RouteParameters = routeParameters; } return tabStripItemModel; } public static TeremModel GetTeremBaseProperties(int? teremId) { var teremModel = new TeremModel(); if (teremId > 0) { TeremCO teremCO = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTeremCo(teremId.Value); teremModel = TeremModel.ConvertCoToModel(teremCO); } else { teremModel.TeremAlapadatokModel.Jelleg = (int)TeremTipusEnum.Osztalyterem; teremModel.TeremBerbeadasModel.TulajdonTipusaId = (int)TulajdonTipusEnum.allami_tulajdonban_levo_ingatlan; } return teremModel; } public static TeremModModel GetTeremModelForModPopup(List teremModelList, int? szervezetId, bool isFromSzervezet) { var teremModModel = new TeremModModel() { IsFromSzervezet = isFromSzervezet, }; foreach (var item in teremModelList) { teremModModel.TeremIDArray += item.TeremId.ToString() + ","; teremModModel.TeremNevArray += item.Nev.ToString() + ", "; } teremModModel.TeremIDArray = teremModModel.TeremIDArray.Remove(teremModModel.TeremIDArray.Count() - 1); teremModModel.TeremNevArray = teremModModel.TeremNevArray.Remove(teremModModel.TeremNevArray.Count() - 2); teremModModel.ModSzervezetId = szervezetId.IsEntityId() ? szervezetId : null; return teremModModel; } public static List GetDetailTabs(string teremId, bool isLetesitmenyBerbeadasEnabled, bool isFromSzervezet, string controllerName) { var tabStripItemModelList = new List() { BuildTabStripModel("1", IntezmenyResource.Alapadatok, Constants.Areas.Intezmeny, controllerName, nameof(BaseTeremController.OpenTeremBaseProperties), new Dictionary() { { nameof(teremId), teremId } }), BuildTabStripModel("3", IntezmenyResource.OrarendiOrak, Constants.Areas.Intezmeny, controllerName, nameof(BaseTeremController.OpenTeremOrarendiOrai), new Dictionary() { { nameof(teremId), teremId } }), }; if (!isFromSzervezet) { BuildTabStripModel("4", IntezmenyResource.TeremhezTartozoEszkozok, Constants.Areas.Intezmeny, Constants.Controllers.Terem, nameof(TeremController.OpenTeremEszkozok), new Dictionary() { { nameof(teremId), teremId } }); } if (isLetesitmenyBerbeadasEnabled && !isFromSzervezet) { tabStripItemModelList.Add(BuildTabStripModel("2", IntezmenyResource.Berbeadas, Constants.Areas.Intezmeny, Constants.Controllers.Terem, nameof(TeremController.OpenTeremBerbeadasProperties), new Dictionary() { { nameof(teremId), teremId } })); } return tabStripItemModelList; } public static List GetNewTabs(TeremModel teremModel, bool isLetesitmenyBerbeadasEnabled) { var tabStripItemModelList = new List { BuildTabStripModel("1", IntezmenyResource.Alapadatok, teremModel, Constants.ViewNames.Terem.Edit_TeremBasicProperties_Tab, true) }; if (isLetesitmenyBerbeadasEnabled) { tabStripItemModelList.Add(BuildTabStripModel("2", IntezmenyResource.Berbeadas, teremModel, Constants.ViewNames.Terem.Edit_TeremBerbeadas_Tab)); } return tabStripItemModelList; } public static ActionResult ExportTermekAdatai(TeremSearchModel model, bool isSelectedTanev21_22OrLater) { MemoryStream stream = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTermekAdataiExcelExport(TeremSearchModel.ConvertModelSearchToCO(model), isSelectedTanev21_22OrLater); var result = new FileStreamResult(stream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = $"{IntezmenyResource.TermekAdatai}.xlsx" }; return result; } public static List GetPicture(IFileService fileService, int? teremId) { try { if (teremId > 0) { TeremCO teremCO = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTeremCo(teremId.Value); if (!string.IsNullOrWhiteSpace(teremCO.KepUtvonal) && !string.IsNullOrWhiteSpace(teremCO.KepKiterjesztes)) { return new List { new UploadedFile { ContentAsBase64EncodedString = fileService.ReadAndResizeImage(teremCO.KepUtvonal, 350, 350) } }; } } } catch (Exception) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlLetolteseKozben); } return new List { new UploadedFile() }; } public static (string FajNev, byte[] Content) GetDocument(IFileService fileService, int? teremId) { if (teremId > 0) { TeremCO teremCO = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTeremCo(teremId.Value); if (!string.IsNullOrWhiteSpace(teremCO.DokumentumUtvonal) && !string.IsNullOrWhiteSpace(teremCO.DokumentumKiterjesztes)) { return (FajNev: $"{teremCO.DokumentumNev}.{teremCO.DokumentumKiterjesztes}", Content: fileService.ReadFromFile(teremCO.DokumentumUtvonal)); } } throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlLetolteseKozben); } public static void EugyErtesitesTeremBerbeadhatoStatuszValtozasrol(IEugyintezesClientConfiguration config) { TeremBerbeadhatoStatuszValtozasModel teremBerbeadhatoStatuszValtozasModel = new TeremBerbeadhatoStatuszValtozasModel(); TeremHelper teremHelper = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType()); DataSet berbeadhatoTermekMukodesiHelyeinekVarosaiDataSet = teremHelper.GetBerbeadhatoTermekMukodesiHelyeinekVarosai(); teremBerbeadhatoStatuszValtozasModel.Varosok = new List(); foreach (DataRow dataRow in berbeadhatoTermekMukodesiHelyeinekVarosaiDataSet.Tables[0].Rows) { teremBerbeadhatoStatuszValtozasModel.Varosok.Add(dataRow.Field("Varos")); } var jsonData = JsonConvert.SerializeObject(teremBerbeadhatoStatuszValtozasModel); BackgroundJob.Enqueue((a) => a.TeremBerbeadhatoStatuszValtozas(null, config.BaseUrl, config.ApiKey, ClaimData.IntezmenyAzonosito, jsonData)); } } }