using System; using System.Net; using System.Net.Http; using System.Web.Http; using Kreta.BusinessLogic.Helpers; using Kreta.Core; using Kreta.Core.Iktato.Poszeidon.Factory.Interface; using Kreta.Resources; using Kreta.Web.Helpers; namespace Kreta.Web.Controllers { public class FileDownloadController : ApiController { private readonly IIktatoRepositoryFactory iktatoRepositoryFactory; private readonly IktatoServiceConfiguration iktatoServiceConfiguration; public FileDownloadController(IIktatoRepositoryFactory iktatoRepositoryFactory, IktatoServiceConfiguration iktatoServiceConfiguration) { this.iktatoRepositoryFactory = iktatoRepositoryFactory; this.iktatoServiceConfiguration = iktatoServiceConfiguration; } [HttpGet] [AllowAnonymous] public HttpResponseMessage GetAlapdokumentum(string tipusNev) { try { var dokumentumTipus = (Enums.DokumentumTipusEnum)Enum.Parse(typeof(Enums.DokumentumTipusEnum), tipusNev); switch (dokumentumTipus) { case Enums.DokumentumTipusEnum.AlapitoOkirat: case Enums.DokumentumTipusEnum.SzervezetiEsMukodesiSzabalyzat: case Enums.DokumentumTipusEnum.Munkaterv: case Enums.DokumentumTipusEnum.PedagogiaiProgram: case Enums.DokumentumTipusEnum.Hazirend: case Enums.DokumentumTipusEnum.mukodesi_engedely: break; default: ModelState.AddModelError("tipusNev", ErrorResource.NincsIlyenTipusuAlapdokumentum); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } var connectionType = ConnectionTypeExtensions.GetOrganizationConnectionType(); var pHelper = new PoszeidonHelper(connectionType, iktatoRepositoryFactory, iktatoServiceConfiguration); var tanevId = dokumentumTipus == Enums.DokumentumTipusEnum.Munkaterv ? connectionType.TanevId : (int?)null; var dokumentumCO = pHelper.IntezmenyiKotelezoDokumentumPublikus(tanevId, dokumentumTipus); var iktatottDokumentumId = dokumentumCO.IktatottDokumentumId; if (!iktatottDokumentumId.IsEntityId()) { ModelState.AddModelError("tipusNev", ErrorResource.NincsIlyenAlapDokumentumAzIntezmenynel); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } (string fajlnev, byte[] tartalom) = pHelper.Lekeres(iktatottDokumentumId.ToString()); return HttpResponseExtensions.GetFileHttpResponse(tartalom, fajlnev); } catch { ModelState.AddModelError("tipusNev", ErrorResource.NincsIlyenTipusuDokumentum); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } } } }