kreta/KretaWeb/Areas/Intezmeny/Logic/TeremLogic.cs
2024-03-13 00:33:46 +01:00

203 lines
8.9 KiB
C#

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<string, string> routeParameters)
=> new TabStripItemModel
{
ItemId = itemId,
ItemName = itemName,
Area = area,
Controller = controller,
Action = action,
RouteParameters = routeParameters
};
private static TabStripItemModel BuildTabStripModel<Model>(string itemId, string itemName, Model model, string partialViewName, bool isActive = false, Dictionary<string, string> 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<TeremModModel> 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<TabStripItemModel> GetDetailTabs(string teremId, bool isLetesitmenyBerbeadasEnabled, bool isFromSzervezet, string controllerName)
{
var tabStripItemModelList = new List<TabStripItemModel>()
{
BuildTabStripModel("1", IntezmenyResource.Alapadatok, Constants.Areas.Intezmeny, controllerName, nameof(BaseTeremController.OpenTeremBaseProperties), new Dictionary<string, string>() { { nameof(teremId), teremId } }),
BuildTabStripModel("3", IntezmenyResource.OrarendiOrak, Constants.Areas.Intezmeny, controllerName, nameof(BaseTeremController.OpenTeremOrarendiOrai), new Dictionary<string, string>() { { nameof(teremId), teremId } }),
};
if (!isFromSzervezet)
{
BuildTabStripModel("4", IntezmenyResource.TeremhezTartozoEszkozok, Constants.Areas.Intezmeny, Constants.Controllers.Terem, nameof(TeremController.OpenTeremEszkozok), new Dictionary<string, string>() { { nameof(teremId), teremId } });
}
if (isLetesitmenyBerbeadasEnabled && !isFromSzervezet)
{
tabStripItemModelList.Add(BuildTabStripModel("2", IntezmenyResource.Berbeadas, Constants.Areas.Intezmeny, Constants.Controllers.Terem, nameof(TeremController.OpenTeremBerbeadasProperties), new Dictionary<string, string>() { { nameof(teremId), teremId } }));
}
return tabStripItemModelList;
}
public static List<TabStripItemModel> GetNewTabs(TeremModel teremModel, bool isLetesitmenyBerbeadasEnabled)
{
var tabStripItemModelList = new List<TabStripItemModel>
{
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<UploadedFile> 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<UploadedFile>
{
new UploadedFile
{
ContentAsBase64EncodedString = fileService.ReadAndResizeImage(teremCO.KepUtvonal, 350, 350)
}
};
}
}
}
catch (Exception)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlLetolteseKozben);
}
return new List<UploadedFile> { 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<string>();
foreach (DataRow dataRow in berbeadhatoTermekMukodesiHelyeinekVarosaiDataSet.Tables[0].Rows)
{
teremBerbeadhatoStatuszValtozasModel.Varosok.Add(dataRow.Field<string>("Varos"));
}
var jsonData = JsonConvert.SerializeObject(teremBerbeadhatoStatuszValtozasModel);
BackgroundJob.Enqueue<IEugyintezesJob>((a) => a.TeremBerbeadhatoStatuszValtozas(null, config.BaseUrl, config.ApiKey, ClaimData.IntezmenyAzonosito, jsonData));
}
}
}