using System; using System.IO; using System.Web; using System.Web.Mvc; using Kreta.BusinessLogic.Helpers.ImportExport; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Core.Exceptions; using Kreta.Enums.ManualEnums; using Kreta.Resources; using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport; using Kreta.Web.Classes; using Kreta.Web.Controllers; using Kreta.Web.Helpers; using Kreta.Web.Security; namespace Kreta.Web.Areas.ImportExport.Controllers { [MvcRoleClaimsAuthorize(true)] [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)] [MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)] public class OrarendAscExcelConvertController : BaseOrarendImportExportController { #region Properties public static string ConrtollerName => "OrarendAscExcelConvert"; #endregion Properties #region Constructors public OrarendAscExcelConvertController(IUploadFileValidator uploadFileValidator) { UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator)); } #endregion Constructors public ActionResult Index() { OrarendImportExportModel model = GetImportExportModel(); return View(model); } public JsonResult UploadFile(HttpPostedFileBase importFile) { UploadFileValidator.ValidateFile(importFile, UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes, UploadFileValidator.Configuration.AscImportAllowedFileExtensions); try { string fileName = importFile.FileName.Substring(0, importFile.FileName.LastIndexOf('.')); MemoryStream memoryStream; try { memoryStream = new AscImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ConvertAscXmlToExcel(importFile.InputStream); } catch (BlException e) { return Json(new { ErrorString = e.Message }); } Guid guid = Cache.Add(memoryStream); string fileString = Url.Action(nameof(CacheController.DownloadFile), nameof(CacheController).Replace("Controller", ""), new { guid, fileName = $"{fileName}.xlsx", contentType = Core.Constants.ContentTypes.Xlsx, area = "" }); return Json(new { FileString = fileString }); } catch { return Json(new { ErrorString = ErrorResource.HibaTortentAFajlFeltolteseKozben }); } } } }