using System; using System.Collections.Generic; using System.Net; using System.Web.Http; using Kreta.Core.FeatureToggle; using Kreta.Ellenorzo.BL.VN.Ertekeles; using Kreta.Ellenorzo.BL.VN.Ertekeles.Atlag.OsztalyAtlag; using Kreta.Ellenorzo.BL.VN.Ertekeles.Atlag.TantargyiAtlag; using Kreta.Ellenorzo.Domain.VN.Ertekeles; using Kreta.Ellenorzo.Domain.VN.Ertekeles.Atlag.OsztalyAtlag; using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier; using Kreta.Ellenorzo.Dto.VN.Ertekeles; using Kreta.Ellenorzo.Dto.VN.Ertekeles.Atlag.OsztalyAtlag; using Kreta.Ellenorzo.Dto.VN.Ertekeles.Atlag.TantargyiAtlag; using Kreta.Ellenorzo.Dto.VN.Exception; using Kreta.Ellenorzo.Enums; using Kreta.Ellenorzo.Enums.VN; 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 ErtekelesController : ApiController { private IFeatureContext FeatureContext { get; } public ErtekelesController(IFeatureContext featureContext) { FeatureContext = featureContext ?? throw new ArgumentNullException(nameof(featureContext)); } /// /// Tanuló egy értékelése /// /// Uid filter [HttpGet, Route("Sajat/Ertekelesek/{uid}")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.ErtekelesResponseLeiras + DescriptionOneNote.Ertekelesek, typeof(ErtekelesListResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyExampleProviderWithDependencyInjection))] [SwaggerResponse(HttpStatusCode.NotFound, DescriptionLookUp.NemLetezoEntitasResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.NotFound, typeof(NemLetezoEntitasExample))] public ErtekelesListResponseDto GetErtekeles(string uid) { return ((ErtekelesFacade)Activator.CreateInstance(typeof(ErtekelesFacade), FelhasznaloLogic.GetFelhasznalo())).GetErtekeles(uid); } /// /// Tanuló értékelései /// [HttpGet, Route("Sajat/Ertekelesek")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.ListaUidVagyUidsFilterResponseLeiras + DescriptionOneNote.Ertekelesek, typeof(ErtekelesListResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyListExampleProviderWithDependencyInjection))] [SwaggerResponse(HttpStatusCode.BadRequest, DescriptionLookUp.ValidaciosHibaTortentResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.BadRequest, typeof(ValidaciosHibaExample))] public HashSet ListErtekeles([FromUri] ErtekelesListRequestDto request) { return ModelToDto(((ErtekelesFacade)Activator.CreateInstance(typeof(ErtekelesFacade), FelhasznaloLogic.GetFelhasznalo())).ListTanuloErtekeles(request)); } /// /// Tanuló bizonyítvány értékelései /// [HttpGet, Route("Sajat/Ertekelesek/Bizonyitvany")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.ListaUidVagyUidsFilterResponseLeiras + DescriptionOneNote.Ertekelesek, typeof(ErtekelesListResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyListExampleProviderWithDependencyInjection))] [SwaggerResponse(HttpStatusCode.BadRequest, DescriptionLookUp.ValidaciosHibaTortentResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.BadRequest, typeof(ValidaciosHibaExample))] public HashSet ListBizonyitvany([FromUri] ErtekelesListRequestDto request) { return ModelToDto(((ErtekelesFacade)Activator.CreateInstance(typeof(ErtekelesFacade), FelhasznaloLogic.GetFelhasznalo())).ListTanuloErtekeles(request, ErtekelesekTipusEnum.BizonyitvanyErtekelesTipus)); } /// /// Tanuló évközi + egyéb (modulzáró vizsga, pótvizsga...) értékelései /// [HttpGet, Route("Sajat/Ertekelesek/NemBizonyitvany")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.ListaUidVagyUidsFilterResponseLeiras + DescriptionOneNote.Ertekelesek, typeof(ErtekelesListResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyListExampleProviderWithDependencyInjection))] [SwaggerResponse(HttpStatusCode.BadRequest, DescriptionLookUp.ValidaciosHibaTortentResponseLeiras, typeof(EllenorzoExceptionResponseDto))] [SwaggerResponseExample(HttpStatusCode.BadRequest, typeof(ValidaciosHibaExample))] public HashSet ListNemBizonyitvanyok([FromUri] ErtekelesListRequestDto request) { return ModelToDto(((ErtekelesFacade)Activator.CreateInstance(typeof(ErtekelesFacade), FelhasznaloLogic.GetFelhasznalo())).ListTanuloErtekeles(request, ErtekelesekTipusEnum.NemBizonyitvanyErtekelesTipus)); } /// /// Tanuló összes tanult tantárgyának átlaga /// [HttpGet, Route("Sajat/Ertekelesek/Atlagok/TantargyiAtlagok")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.TantargyiAtlagResponseLeiras + DescriptionOneNote.TantargyiAtlagok, typeof(SajatTantargyiAtlagListResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyListExampleProviderWithDependencyInjection))] public List ListAktualisTanuloTantargyiAtlag([FromUri] SajatTantargyiAtlagListRequestDto request) { return ModelToDto(((TantargyiAtlagFacade)Activator.CreateInstance(typeof(TantargyiAtlagFacade), FelhasznaloLogic.GetFelhasznalo(), FeatureContext)).ListAktualisTanuloTantargyiAtlag(request)); } /// /// Tanuló összes tanult tantárgyának átlaga és osztályátlaga /// [HttpGet, Route("Sajat/Ertekelesek/Atlagok/OsztalyAtlagok")] [SwaggerResponse(HttpStatusCode.OK, DescriptionLookUp.OsztalyatlagResponseLeiras + DescriptionOneNote.OsztalyAtlagok, typeof(TanuloOsztalyCsoporthozViszonyitottTantargyiAtlagResponseDto))] [SwaggerResponseExample(HttpStatusCode.OK, typeof(DummyListExampleProviderWithDependencyInjection))] public HashSet ListOsztalyAtlag([FromUri] SajatOsztalyAtlagListRequestDto request) { return ModelToDto(((OsztalyAtlagFacade)Activator.CreateInstance(typeof(OsztalyAtlagFacade), FelhasznaloLogic.GetFelhasznalo())) .ListAktualisTanuloOsztalyAtlag(new OsztalyAtlagListRequest(request.TantargyUid) { OktatasiNevelesiFeladatUid = new OktatasiNevelesiFeladatUid(request.OktatasiNevelesiFeladatUid), IsAtlagNeeded = true })); } } }