using Application.Features.TodoManager.Commands; using Application.Features.TodoManager.Queries; using ASPNET.BackEnd.Common.Base; using ASPNET.BackEnd.Common.Models; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace ASPNET.BackEnd.Controllers; [Route("api/[controller]")] public class TodoController : BaseApiController { public TodoController(ISender sender) : base(sender) { } [Authorize] [HttpPost("CreateTodo")] public async Task>> CreateTodoAsync(CreateTodoRequest request, CancellationToken cancellationToken) { var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(CreateTodoAsync)}", Content = response }); } [Authorize] [HttpPost("UpdateTodo")] public async Task>> UpdateTodoAsync(UpdateTodoRequest request, CancellationToken cancellationToken) { var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(UpdateTodoAsync)}", Content = response }); } [Authorize] [HttpPost("DeleteTodo")] public async Task>> DeleteTodoAsync(DeleteTodoRequest request, CancellationToken cancellationToken) { var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(DeleteTodoAsync)}", Content = response }); } [Authorize] [HttpGet("GetTodoSingle")] public async Task>> GetTodoSingleAsync( CancellationToken cancellationToken, [FromQuery] string id ) { var request = new GetTodoSingleRequest { Id = id }; var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(GetTodoSingleAsync)}", Content = response }); } [Authorize] [HttpGet("GetTodoList")] public async Task>> GetTodoListAsync( CancellationToken cancellationToken, [FromQuery] bool isDeleted = false ) { var request = new GetTodoListRequest { IsDeleted = isDeleted }; var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(GetTodoListAsync)}", Content = response }); } }