using System.Collections.Generic;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Description;
using Kreta.Naplo.Domain.V2.Model;
using Kreta.Naplo.Domain.V2.Model.CustomEnum;
using Kreta.Naplo.Domain.V2.Model.Get.Enum;
using Kreta.Naplo.Domain.V2.Model.Get.OpenBoard;
using Kreta.Naplo.Domain.V2.Model.Get.Ora.JavasoltJelenletTemplate;
using Kreta.Naplo.Domain.V2.Model.Get.Orarend;
using Kreta.Naplo.Domain.V2.Model.Get.Tanar;
using Kreta.Naplo.Domain.V2.Model.Get.Tanmenet;
using Kreta.Naplo.Domain.V2.Model.Get.Tanulo;
using Kreta.Naplo.Domain.V2.Model.Post.Ertekeles;
using Kreta.Naplo.Domain.V2.Model.Post.Naplozas;
using Kreta.Naplo.Domain.V2.Model.Post.OpenBoard;
using Kreta.Naplo.Domain.V2.Service;
using Kreta.Naplo.Domain.V3.Enum;
using Kreta.Naplo.Infrastructure;
using Kreta.Naplo.WebApi.FilterAttributes;
using OrarendiOra = Kreta.Naplo.Domain.V2.Model.Get.Ora.OrarendiOra.JavasoltJelenlet;
using TanitasiOra = Kreta.Naplo.Domain.V2.Model.Get.Ora.TanitasiOra.JavasoltJelenlet;
namespace Kreta.Naplo.WebApi.V2.Controllers
{
[ApiKeyAuthorization]
[IdpAuthorize(FelhasznaloSzerepkor.Tanar)]
public partial class TestV2Controller : ApiController
{
///
/// Tanár profil
///
///
///
[Route(VersionedRouteInfo.RoutePrefix + "/Tanar/Profil")]
[ResponseType(typeof(ResponseWrapper))]
[HttpGet]
public async Task> ProfilAsync([FromUri(Name = Constants.EmptyString)] ProfilRequest request)
=> await DependencyContainer.Instance.GetInstance().GetProfilAsync(request);
///
/// Iskolaőr profil
///
///
///
[Route(VersionedRouteInfo.RoutePrefix + "/Iskolaor")]
[ResponseType(typeof(ResponseWrapper>))]
[HttpGet]
public async Task>> IskolaorAsync([FromUri(Name = Constants.EmptyString)] IskolaorRequest request)
=> await DependencyContainer.Instance.GetInstance().GetIskolaorAsync(request);
///
/// Óra lista
///
///
///
[Route(VersionedRouteInfo.RoutePrefix + "/Orarend/OraLista")]
[ResponseType(typeof(ResponseWrapper>))]
[HttpGet]
public async Task>> OraListaAsync([FromUri(Name = Constants.EmptyString)] OraGetRequest request)
=> await DependencyContainer.Instance.GetInstance().GetOraListaAsync(request);
///
/// Naplózás
///
///
///
[Route(VersionedRouteInfo.RoutePrefix + "/Orarend/OraNaplozas")]
[ResponseType(typeof(List))]
[HttpPost]
public async Task> OraNaplozasAsync(List request)
=> await DependencyContainer.Instance.GetInstance().OraNaplozasAsync(request);
///
/// Osztály tanuló lista
///
///
///
[Route(VersionedRouteInfo.RoutePrefix + "/Ora/OsztalyTanuloi")]
[ResponseType(typeof(ResponseWrapper))]
[HttpGet]
public async Task> OsztalyTanuloiAsync([FromUri(Name = Constants.EmptyString)] OsztalyTanuloiRequest request)
=> await DependencyContainer.Instance.GetInstance().GetOsztalyTanuloiAsync(request);
///
/// Tanuló mulasztás lista
///
///
///
[Route(VersionedRouteInfo.RoutePrefix + "/Ora/Mulasztas")]
[ResponseType(typeof(ResponseWrapper>))]
[HttpGet]
public async Task>> MulasztasAsync([FromUri(Name = Constants.EmptyString)] MulasztasRequest request)
=> await DependencyContainer.Instance.GetInstance().GetMulasztasAsync(request);
///
/// Tanuló feljegyzés lista
///
///
///
[Route(VersionedRouteInfo.RoutePrefix + "/Ora/Feljegyzes")]
[ResponseType(typeof(ResponseWrapper>))]
[HttpGet]
public async Task>> FeljegyzesAsync([FromUri(Name = Constants.EmptyString)] FeljegyzesRequest request)
=> await DependencyContainer.Instance.GetInstance().GetFeljegyzesAsync(request);
///
/// Naplo Enum
///
///
///
[Route(VersionedRouteInfo.RoutePrefix + "/Enum/NaploEnum")]
[ResponseType(typeof(ResponseWrapper>))]
[HttpGet]
public async Task>> NaploEnumAsync([FromUri(Name = Constants.EmptyString)] Domain.V2.Model.Get.Enum.EnumRequest request)
=> await DependencyContainer.Instance.GetInstance().GetNaploEnumAsync(request);
[Route(VersionedRouteInfo.RoutePrefix + "/Ertekeles/OsztalyCsoportErtekeles")]
[ResponseType(typeof(List))]
[HttpPost]
public async Task> OsztalyCsoportErtekelesAsync(List request)
=> await DependencyContainer.Instance.GetInstance().PostOsztalyCsoportErtekelesAsync(request);
[HttpGet, Route(VersionedRouteInfo.RoutePrefix + "/Tanmenet")]
public async Task> TanmenetListaAsync([FromUri] TanmenetGetRequest request)
=> await DependencyContainer.Instance.GetInstance().ListTanmenetAsync(request);
[HttpGet, Route(VersionedRouteInfo.RoutePrefix + "/Ora/OrarendiOra/JavasoltJelenlet")]
public async Task> ListJavasoltJelenletAsync([FromUri] OrarendiOra.JavasoltJelenletGetRequest request)
=> await DependencyContainer.Instance.GetInstance().ListJavasoltJelenletAsync(request);
[HttpGet, Route(VersionedRouteInfo.RoutePrefix + "/Ora/TanitasiOra/JavasoltJelenlet")]
public async Task> ListJavasoltJelenletAsync([FromUri] TanitasiOra.JavasoltJelenletGetRequest request)
=> await DependencyContainer.Instance.GetInstance().ListJavasoltJelenletAsync(request);
[HttpGet, Route(VersionedRouteInfo.RoutePrefix + "/Ora/JavasoltJelenletTemplate")]
public async Task>> ListJavasoltJelenletTemplateAsync([FromUri] JavasoltJelenletTemplateGetRequest request)
=> await DependencyContainer.Instance.GetInstance().ListJavasoltJelenletTemplateAsync(request);
[Route(VersionedRouteInfo.RoutePrefix + "/OpenBoard/FajlFeltoltes")]
[ResponseType(typeof(FeltoltottFajlResponse))]
[HttpPost]
public async Task FajlFeltoltesAsync(FeltoltottFajlRequest request)
=> await DependencyContainer.Instance.GetInstance().PostFajlFeltoltesAsync(request);
[HttpGet, Route(VersionedRouteInfo.RoutePrefix + "/OpenBoard/FeltolthetoFajlokSzama")]
public async Task FeltolthetoFajlokSzamaAsync([FromUri] FeltolthetoFajlokSzamaRequest request)
=> await DependencyContainer.Instance.GetInstance().GetFeltolthetoFajlokSzamaAsync(request);
[HttpGet, Route(VersionedRouteInfo.RoutePrefix + "/Tanulo/Ertekeles")]
public async Task> GetTanuloErtekeleseiAsync([FromUri] ErtekelesGetRequest request)
=> await DependencyContainer.Instance.GetInstance().GetTanuloErtekeleseiAsync(request);
}
}