using System; using System.Collections.Generic; using System.Net; using System.Web.Http; using Kreta.Ellenorzo.BL.VN.Felhasznalo; using Kreta.Ellenorzo.BL.VN.Felhasznalo.Alkalmazott.Tanar.Osztalyfonok; using Kreta.Ellenorzo.Dto.VN.Exception; using Kreta.Ellenorzo.Dto.VN.Felhasznalo; using Kreta.Ellenorzo.Dto.VN.Felhasznalo.Alkalmazott.Tanar.OsztalyFonok; using Kreta.Ellenorzo.Dto.VN.Felhasznalo.Gondviselo; using Kreta.Ellenorzo.Dto.VN.Felhasznalo.Tanulo; 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.Tanulo, FelhasznaloSzerepkor.Gondviselo)] [RoutePrefix(Constants.RoutePrefix)] [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))] [SwaggerResponse(HttpStatusCode.Conflict, DescriptionLookUp.TanevetValtottAzIntezmeny, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.Conflict, typeof(IntezmenyMarTanevetValtottExample))] public class FelhasznaloController : ApiController { /// /// Tanulóval, gondviselőivel és intézményével kapcsolatos információk és elérhetőségek /// [HttpGet, Route("Sajat/TanuloAdatlap")] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras + DescriptionLookUp.TanuloTorolveLett, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyExampleProvider))] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.TanuloAdataiResponseLeiras + DescriptionOneNote.Felhasznalo, typeof(TanuloGetResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] public TanuloGetResponseDto GetTanuloAdatlap() { return ((FelhasznaloFacade)Activator.CreateInstance(typeof(FelhasznaloFacade), FelhasznaloLogic.GetFelhasznalo())).GetTanuloAdatlap(); } /// /// Osztályfőnökök lekérése /// [HttpGet, Route("Felhasznalok/Alkalmazottak/Tanarok/Osztalyfonokok")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.ListaUidVagyUidsFilterResponseLeiras + DescriptionOneNote.Felhasznalo, typeof(OsztalyfonokListResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyListExampleProvider))] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] public HashSet GetOsztalyfonokok([FromUri] OsztalyfonokListRequestDto request) { return ModelToDto(((OsztalyfonokFacade)Activator.CreateInstance(typeof(OsztalyfonokFacade), FelhasznaloLogic.GetFelhasznalo())).ListOsztalyfonokForTanuloAndGondviselo(request)); } /// /// Bankszámlaszám rögzítése a tanulóhoz. /// [HttpPost, Route("Sajat/Bankszamla")] [IdpAuthorize(FelhasznaloSzerepkor.Tanulo, FelhasznaloSzerepkor.Gondviselo)] [SwaggerResponse(HttpStatusCode.NoContent, DescriptionLookUp.BankszamlaRogzitesSikeres)] [SwaggerRequestExample(typeof(BankszamlaRequestDto), typeof(BankszamlaRequestDto))] public void PostBankszamla(BankszamlaRequestDto request) { ((FelhasznaloFacade)Activator.CreateInstance(typeof(FelhasznaloFacade), FelhasznaloLogic.GetFelhasznalo())).SaveBankszamla(request); } /// /// Tanuló bankszámlaszámának törlése. /// [HttpDelete, Route("Sajat/Bankszamla")] [IdpAuthorize(FelhasznaloSzerepkor.Tanulo, FelhasznaloSzerepkor.Gondviselo)] [SwaggerResponse(HttpStatusCode.NoContent, DescriptionLookUp.BankszamlaTorlesSikeres)] public void DeleteBankszamla() { ((FelhasznaloFacade)Activator.CreateInstance(typeof(FelhasznaloFacade), FelhasznaloLogic.GetFelhasznalo())).DeleteBankszamla(); } /// /// Elérhetőség rögzítése tanulóhoz vagy gondviselőhöz. /// [HttpPost, Route("Sajat/Elerhetoseg")] [IdpAuthorize(FelhasznaloSzerepkor.Tanulo, FelhasznaloSzerepkor.Gondviselo)] [SwaggerResponse(HttpStatusCode.NoContent, DescriptionLookUp.ElerhetosegRogzitesSikeres)] [SwaggerRequestExample(typeof(ElerhetosegRequestDto), typeof(ElerhetosegRequestDto))] public void PostElerhetoseg(ElerhetosegRequestDto request) { ((FelhasznaloFacade)Activator.CreateInstance(typeof(FelhasznaloFacade), FelhasznaloLogic.GetFelhasznalo())).SaveElerhetoseg(request); } /// /// A gondviselő "Törvényes képviselő" tulajdonságának lekérdezése. /// [HttpGet, Route("Gondviselo/IsTorvenyesKepviselo")] [IdpAuthorize(FelhasznaloSzerepkor.Gondviselo)] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.IsTorvenyesKepviseloResponseLeiras + DescriptionOneNote.Felhasznalo)] //[SwaggerResponseExample(HttpStatusCode.OK, typeof(bool))] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras + DescriptionLookUp.GonviseloTorolveLett, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] public bool IsTorvenyesKepviselo() { return ((FelhasznaloFacade)Activator.CreateInstance(typeof(FelhasznaloFacade), FelhasznaloLogic.GetFelhasznalo())).IsTorvenyesKepviselo(); } /// /// Gondviselő 4T adatainak lekérdezése /// [HttpGet, Route("Sajat/GondviseloAdatlap")] [IdpAuthorize(FelhasznaloSzerepkor.Gondviselo)] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras + DescriptionLookUp.GonviseloTorolveLett, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyExampleProvider))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.GondviseloAdataiResponseLeiras + DescriptionOneNote.Felhasznalo, typeof(GondviseloAdatokResponseDto))] public GondviseloAdatokResponseDto GetGondviseloAdatlap() { return ((FelhasznaloFacade)Activator.CreateInstance(typeof(FelhasznaloFacade), FelhasznaloLogic.GetFelhasznalo())).GetGondviseloAdatlap(); } /// /// Gondviselő 4T adatainak módosítása /// [HttpPut, Route("Sajat/GondviseloAdatlap")] [IdpAuthorize(FelhasznaloSzerepkor.Gondviselo)] [SwaggerResponse(HttpStatusCode.NoContent, DescriptionLookUp.GondviseloAdatokRogziteseSikeres)] [SwaggerRequestExample(typeof(GondviseloBaseAdatlapRequestDto), typeof(GondviseloBaseAdatlapRequestDto))] public void PutGondviseloAdatlap(GondviseloBaseAdatlapRequestDto request) { ((FelhasznaloFacade)Activator.CreateInstance(typeof(FelhasznaloFacade), FelhasznaloLogic.GetFelhasznalo())).UpdateGondviseloAdatlap(request); } /// /// Gondviselő eszköz igényléshez szükséges adatainak elküldése /// [HttpPost, Route("Sajat/GondviseloEszkozIgenyles")] [IdpAuthorize(FelhasznaloSzerepkor.Gondviselo)] [SwaggerResponse(HttpStatusCode.NoContent, DescriptionLookUp.GondviseloEszkozIgenylesAdatokRogziteseSikeres)] [SwaggerRequestExample(typeof(RegisztracioRequestDto), typeof(RegisztracioRequestDto))] public void PostGondviseloEszkozIgenyles(RegisztracioRequestDto request) { ((TargyiEszkozFacade)Activator.CreateInstance(typeof(TargyiEszkozFacade), FelhasznaloLogic.GetFelhasznalo())).SaveGondviseloEszkozIgenyles(request); } /// /// Napi értesítés összefoglaló lekérdezése /// [HttpGet, Route("Sajat/NapiErtesitesOsszefoglalo")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.NapiErtesitesOsszefoglaloResponseLeiras + DescriptionOneNote.Felhasznalo, typeof(NapiErtesitesOsszefoglaloResponseDto))] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] public NapiErtesitesOsszefoglaloResponseDto GetNapiErtesitesOsszefoglalo() { return ((FelhasznaloFacade)Activator.CreateInstance(typeof(FelhasznaloFacade), FelhasznaloLogic.GetFelhasznalo())).GetNapiErtesitesOsszefoglalo(); } } }