using System; using System.Collections.Generic; using System.Net; using System.Web.Http; using Kreta.Ellenorzo.BL.VN.Fogadoora; using Kreta.Ellenorzo.Domain.VN.Fogadoora; using Kreta.Ellenorzo.Dto.VN.Exception; using Kreta.Ellenorzo.Dto.VN.Fogadoora; using Kreta.Ellenorzo.Dto.VN.Fogadoora.Idopont; using Kreta.Ellenorzo.Enums; using Kreta.Ellenorzo.Web.FilterAttributes; using Kreta.Ellenorzo.WebApi.FilterAttributes; using Kreta.Ellenorzo.WebApi.VN.Documentation; using Kreta.Ellenorzo.WebApi.VN.Logic; using Swashbuckle.Examples; using Swashbuckle.Swagger.Annotations; using static Kreta.Ellenorzo.Dto.VN.Converter.ResponseModelConverter; namespace Kreta.Ellenorzo.WebApi.VN.Controllers { [ApiKeyAuthorization] [IdpAuthorize(FelhasznaloSzerepkor.Gondviselo)] [RoutePrefix(Constants.RoutePrefix + "/Sajat/Fogadoorak")] [SwaggerResponse(HttpStatusCode.InternalServerError, DescriptionLookUp.IsmeretlenHibaTortentResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [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))] public class FogadooraController : ApiController { /// /// Fogadóórák időpontjainak lekérdezése gondviselők számára /// [HttpGet, Route] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.ListaUidVagyUidsFilterResponseLeiras + DescriptionOneNote.Fogadoorak, typeof(FogadooraListResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyListExampleProvider))] [SwaggerResponse(HttpStatusCode.BadRequest, DescriptionLookUp.ValidaciosHibaTortentResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.BadRequest, typeof(ValidaciosHibaExample))] public HashSet ListFogadoorak([FromUri] FogadooraListRequestDto request) { return ModelToDto(((FogadooraFacade)Activator.CreateInstance(typeof(FogadooraFacade), FelhasznaloLogic.GetFelhasznalo())).ListFogadoora(request)); } /// /// Fogadóóra lekérdezése gondviselők számára /// [IdpAuthorize(FelhasznaloSzerepkor.Gondviselo)] [HttpGet, Route("{uid}")] [SwaggerResponse(HttpStatusCode.BadRequest, DescriptionLookUp.ValidaciosHibaTortentResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.BadRequest, typeof(AMuveletNemVegezhetoElTobbszorExample))] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] public FogadooraResponseDto GetFogadoora(string uid) { return ((FogadooraFacade)Activator.CreateInstance(typeof(FogadooraFacade), FelhasznaloLogic.GetFelhasznalo())).GetFogadoora(uid); } /// /// Jelentkezett fogadóóra időpont lemondás /// /// Fogadóóra időpont uid-ja [IdpAuthorize(FelhasznaloSzerepkor.Gondviselo)] [HttpDelete, Route("Idopontok/Jelentkezesek/{uid}")] [SwaggerResponse(HttpStatusCode.NoContent, DescriptionLookUp.FogadooraIdopontDeleteResponseLeiras)] [SwaggerResponse(HttpStatusCode.BadRequest, DescriptionLookUp.ValidaciosHibaTortentResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.BadRequest, typeof(AMuveletNemVegezhetoElTobbszorExample))] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] public void DeleteFogadooraIdopontJelentkezes(string uid) { ((FogadooraFacade)Activator.CreateInstance(typeof(FogadooraFacade), FelhasznaloLogic.GetFelhasznalo())).DeleteFogadooraIdopontJelentkezes(new FogadooraIdopontJelentkezesDeleteRequestDto(uid)); } /// /// Gondviselő fogadóóra-időpont jelentkezés /// /// Fogadóóra időpont uid-ja [IdpAuthorize(FelhasznaloSzerepkor.Gondviselo)] [HttpPost, Route("Idopontok/Jelentkezesek/{uid}")] [SwaggerResponse(HttpStatusCode.NoContent, DescriptionLookUp.FogadooraIdopontCreateResponseLeiras)] public void CreateFogadooraIdopontJelentkezes(string uid) { ((FogadooraFacade)Activator.CreateInstance(typeof(FogadooraFacade), FelhasznaloLogic.GetFelhasznalo())).CreateFogadooraIdopontJelentkezes(new FogadooraIdopontJelentkezesCreateRequestDto(uid)); } } }