using Diligent.WebAPI.Contracts.DTOs.Applicant; namespace Diligent.WebAPI.Host.Controllers.V1 { [ApiVersion("1.0")] [Route("v{version:apiVersion}/applicants")] [ApiController] public class ApplicantsController : ControllerBase { private readonly IApplicantService _applicantService; private readonly IFileService _fileService; public ApplicantsController(IApplicantService applicantService,IFileService fileService) { _applicantService = applicantService; _fileService = fileService; } [Authorize] [HttpGet] public async Task GetFilteredApplicants([FromQuery] ApplicantFilterDto applicantFilterDto) => Ok(await _applicantService.GetFilteredApplicants(applicantFilterDto)); [Authorize] [HttpGet("{id}")] public async Task GetById(int id) => Ok(await _applicantService.GetById(id)); [Authorize] [HttpGet("adsApplicants")] public async Task GetAllAdsApplicants([FromQuery]ApplicantFilterDto applicantFilterDto) => Ok(await _applicantService.GetAllAdsApplicants(applicantFilterDto)); [Authorize] [HttpDelete] public async Task DeleteApplicant(int id) { await _applicantService.DeleteApplicant(id); return Ok(); } [Authorize] [HttpGet("processes/{id}")] public async Task GetProcesses(int id) => Ok(await _applicantService.GetApplicantWithSelectionProcessesById(id)); [Authorize] [HttpGet("options")] public async Task GetOptions() => Ok(await _applicantService.GetOptions()); [Authorize] [HttpPost("selection-init")] public async Task InitSelection(ApplicantProcessRequestDTO model) => Ok(await _applicantService.InitializeProcess(model)); [Authorize] [HttpPost("apply-for-ad")] public async Task ApplyForAd([FromForm]ApplyForAdRequestDto request) { await _applicantService.ApplyForAd(request); return Ok(); } [HttpGet("get-CV")] public async Task GetApplicantCV(string fileName) => Ok(await _fileService.GetCV(fileName)); } }