namespace Diligent.WebAPI.Host.Controllers.V1 { [ApiVersion("1.0")] [Route("v{version:apiVersion}/ads")] [ApiController] public class AdsController : ControllerBase { private readonly IAdService _adService; public AdsController(IAdService adService) { _adService = adService; } [Authorize] [HttpGet] public async Task GetAll() => Ok(await _adService.GetAllAsync()); [Authorize] [HttpGet("{id}")] public async Task GetById([FromRoute] int id) => Ok(await _adService.GetByIdAsync(id)); [Authorize] [HttpGet("details/{id}")] public async Task GetAdDetailsById([FromRoute] int id) => Ok(await _adService.GetAdDetailsByIdAsync(id)); [Authorize] [HttpGet("archive")] public async Task GetArchiveAds() => Ok(await _adService.GetArchiveAds()); [Authorize] [HttpGet("filtered")] public async Task GetFilteredAds([FromQuery] AdFilterDto request) => Ok(await _adService.GetFilteredAdsAsync(request)); [Authorize] [HttpPost] public async Task Create([FromBody]AdCreateDto request) { await _adService.CreateAsync(request); return StatusCode((int)HttpStatusCode.Created); } [Authorize] [HttpPut("{id}")] public async Task Update([FromBody] AdUpdateDto request, [FromRoute]int id) { await _adService.UpdateAsync(id, request); return Ok(); } [Authorize] [HttpPut("archive-active-ad/{id}")] public async Task ArchiveActiveAd([FromRoute] int id) { await _adService.ArchiveAdAsync(id); return Ok(); } [Authorize] [HttpDelete("{id}")] public async Task DeleteAd([FromRoute]int id) { await _adService.DeleteAsync(id); return NoContent(); } } }