using System; using System.Net; using System.Net.Http; using System.Web.Http; using Kreta.BusinessLogic.Interfaces; using Kreta.Client.CoreApi; using Kreta.Naplo.BusinessLogic.V3.HaziFeladat; using Kreta.Naplo.Domain.V3.Enum; using Kreta.Naplo.Dto.V3.Exception; using Kreta.Naplo.Dto.V3.HaziFeladat; using Kreta.Naplo.WebApi.FilterAttributes; using Kreta.Naplo.WebApi.V3.Common.Logic; using Kreta.Naplo.WebApi.V3.Documentation; using Swashbuckle.Examples; using Swashbuckle.Swagger.Annotations; namespace Kreta.Naplo.WebApi.V3.Controllers { [ApiKeyAuthorization] [IdpAuthorize(FelhasznaloSzerepkor.Tanar)] [RoutePrefix(Constants.RoutePrefix)] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras, typeof(NaploExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] [SwaggerResponse(HttpStatusCode.InternalServerError, DescriptionLookUp.IsmeretlenHibaTortentResponseLeiras, typeof(NaploExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.InternalServerError, typeof(IsmeretlenHibaExample))] [SwaggerResponse(HttpStatusCode.Unauthorized, DescriptionLookUp.JogosulatlanTokenLejartResponseLeiras, typeof(string))] [SwaggerResponseExample(HttpStatusCode.Unauthorized, typeof(LejartTokenExample))] [SwaggerResponse(HttpStatusCode.Forbidden, DescriptionLookUp.HozzaferesMegtagadvaResponseLeiras, typeof(string))] [SwaggerResponseExample(HttpStatusCode.Forbidden, typeof(PermissionDeniedExample))] [SwaggerResponse(HttpStatusCode.RequestTimeout, DescriptionLookUp.KeresTullepteMaxFutasiIdot, typeof(NaploExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.RequestTimeout, typeof(TimeOutExample))] [SwaggerResponse(HttpStatusCode.Conflict, DescriptionLookUp.TanevetValtottAzIntezmeny, typeof(NaploExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.Conflict, typeof(IntezmenyMarTanevetValtottExample))] public class HaziFeladatController : ApiController { private readonly IFileServiceHelper _fileServiceHelper; private readonly ICoreApiClient _coreApiClient; public HaziFeladatController(IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient) { _fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper)); _coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient)); } [HttpGet, Route("HaziFeladat/{id}")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.ListaUidVagyUidsFilterResponseLeiras, typeof(HaziFeladatResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyExampleProviderWithDependencyInjection))] public HaziFeladatResponseDto GetHaziFeladat(int id) { return ((HaziFeladatFacade)Activator.CreateInstance(typeof(HaziFeladatFacade), FelhasznaloLogic.GetFelhasznalo())).GetHaziFeladat(id); } /// /// Házi feladat rögzítése /// [HttpPost, Route("HaziFeladat")] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras + DescriptionLookUp.HaziFeladatRogziteseSikertelenAzOraMarNemLetezikAKivalasztottNapon, typeof(NaploExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.HaziFeladatMenteseSikeres, typeof(int))] public int SaveHaziFeladat(HaziFeladatCreateRequestDto request) { return ((HaziFeladatFacade)Activator.CreateInstance(typeof(HaziFeladatFacade), FelhasznaloLogic.GetFelhasznalo(), _fileServiceHelper, _coreApiClient)).SaveHaziFeladat(request); } /// /// Házi feladat módosítása /// [HttpPut, Route("HaziFeladat/{id}")] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras + DescriptionLookUp.HaziFeladatModositasaSikertelenAHaziFeladatNemLetezik, typeof(NaploExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.HaziFeladatMenteseSikeres, typeof(void))] public void UpdateHaziFeladat([FromUri] int id, [FromBody] HaziFeladatUpdateRequestDto request) { ((HaziFeladatFacade)Activator.CreateInstance(typeof(HaziFeladatFacade), FelhasznaloLogic.GetFelhasznalo(), _fileServiceHelper, _coreApiClient)).UpdateHaziFeladat(id, request); } /// /// Házi feladat törlése /// [HttpDelete, Route("HaziFeladat/{id}")] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras + DescriptionLookUp.HaziFeladatTorleseSikertelenAHaziFeladatNemLetezik, typeof(NaploExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.HaziFeladatTorleseSikeres, typeof(void))] public void DeleteHaziFeladat([FromUri] int id) { ((HaziFeladatFacade)Activator.CreateInstance(typeof(HaziFeladatFacade), FelhasznaloLogic.GetFelhasznalo(), _coreApiClient)).DeleteHaziFeladat(id); } /// /// Házi feladat csatolmány törlése /// [HttpDelete, Route("HaziFeladat/Csatolmany/{id}")] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras, typeof(NaploExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] [SwaggerResponse(HttpStatusCode.NoContent, DescriptionLookUp.HaziFeladatCsatolmanyTorlesSikeres, typeof(void))] public void HaziFeladatCsatolmanyTorles(int id) { ((HaziFeladatFacade)Activator.CreateInstance(typeof(HaziFeladatFacade), FelhasznaloLogic.GetFelhasznalo(), _fileServiceHelper)).HaziFeladatCsatolmanyTorles(id); } } }