using HanyadikHetVan.Data.Entities; using HanyadikHetVan.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using System; using System.Security.Claims; using System.Threading.Tasks; namespace HanyadikHetVan.Controllers.V2 { [ApiController] [ApiVersion("2.0")] [Route("api/v{version:apiVersion}/[controller]")] public class HanyadikHetVanController : Controller { private readonly HanyadikHetVanEntityService _hanyadikHetVanEntityService; private readonly UserManager _userManager; public HanyadikHetVanController(HanyadikHetVanEntityService hanyadikHetVanEntityService, UserManager userManager) { _hanyadikHetVanEntityService = hanyadikHetVanEntityService ?? throw new ArgumentNullException(nameof(hanyadikHetVanEntityService)); _userManager = userManager ?? throw new ArgumentNullException(nameof(userManager)); } [HttpGet("{weeklytimespanId}")] [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(int))] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task GetWeekById(int weeklytimespanId) { try { var wts = await _hanyadikHetVanEntityService.GetWeekById(weeklytimespanId); return Ok(wts); } catch (Exception) { return BadRequest(); } } [HttpGet] [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(int))] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task GetDefaultWeek() { try { var wts = await _hanyadikHetVanEntityService.GetDefaultWeek(); return Ok(wts); } catch (Exception) { return BadRequest(); } } [HttpGet("my")] [Authorize] [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(int))] [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] public async Task GetUserDefaultWeek() { try { var wts = await _hanyadikHetVanEntityService.GetUserDefaultWeek(this.User.FindFirst(ClaimTypes.NameIdentifier).Value); return Ok(wts); } catch (Exception) { return NotFound(); } } } }