using Diligent.WebAPI.Contracts.DTOs.Pattern; namespace Diligent.WebAPI.Host.Controllers.V1 { [ApiVersion("1.0")] [Route("v{version:apiVersion}/patterns")] [ApiController] public class PatternsController : ControllerBase { private readonly IPatternService _patternService; public PatternsController(IPatternService patternService) { _patternService = patternService; } [Authorize] [HttpGet] public async Task GetAll() => Ok(await _patternService.GetAllAsync()); [Authorize] [HttpGet("{id}")] public async Task GetById([FromRoute] int id) => Ok(await _patternService.GetByIdAsync(id)); [Authorize] [HttpGet("filter")] public async Task GetFilteredPatterns([FromQuery] FilterPatternDto request) => Ok(await _patternService.GetFilteredPatternsAsync(request)); [Authorize] [HttpGet("corresponding-pattern-applicants/{id}")] public async Task GetCorrespondingPatternApplicants([FromRoute] int id) => Ok(await _patternService.GetCorrespondingPatternApplicants(id)); [Authorize] [HttpPost] public async Task Create([FromBody] PatternCreateDto request) { await _patternService.CreateAsync(request); return StatusCode((int)HttpStatusCode.Created); } [Authorize] [HttpPost("schedule-interview")] public async Task ScheduleInterview([FromBody] ScheduleInterviewDto request) { var result = await _patternService.ScheduleIntrviewAsync(request); return Ok(result); } [Authorize] [HttpPut("{id}")] public async Task Update([FromBody]PatternUpdateDto request, [FromRoute]int id) { await _patternService.UpdateAsync(request, id); return Ok(); } [Authorize] [HttpDelete("{id}")] public async Task DeletePattern([FromRoute] int id) { await _patternService.DeleteAsync(id); return NoContent(); } } }