using Application.Features.BudgetManager.Commands; using Application.Features.BudgetManager.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 BudgetController : BaseApiController { public BudgetController(ISender sender) : base(sender) { } [Authorize] [HttpPost("CreateBudget")] public async Task>> CreateBudgetAsync(CreateBudgetRequest request, CancellationToken cancellationToken) { var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(CreateBudgetAsync)}", Content = response }); } [Authorize] [HttpPost("UpdateBudget")] public async Task>> UpdateBudgetAsync(UpdateBudgetRequest request, CancellationToken cancellationToken) { var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(UpdateBudgetAsync)}", Content = response }); } [Authorize] [HttpPost("DeleteBudget")] public async Task>> DeleteBudgetAsync(DeleteBudgetRequest request, CancellationToken cancellationToken) { var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(DeleteBudgetAsync)}", Content = response }); } [Authorize] [HttpGet("GetBudgetList")] public async Task>> GetBudgetListAsync( CancellationToken cancellationToken, [FromQuery] bool isDeleted = false ) { var request = new GetBudgetListRequest { IsDeleted = isDeleted }; var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(GetBudgetListAsync)}", Content = response }); } [Authorize] [HttpGet("GetBudgetStatusList")] public async Task>> GetBudgetStatusListAsync( CancellationToken cancellationToken ) { var request = new GetBudgetStatusListRequest { }; var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(GetBudgetStatusListAsync)}", Content = response }); } [Authorize] [HttpGet("GetBudgetSingle")] public async Task>> GetBudgetSingleAsync( CancellationToken cancellationToken, [FromQuery] string id ) { var request = new GetBudgetSingleRequest { Id = id }; var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(GetBudgetSingleAsync)}", Content = response }); } [Authorize] [HttpGet("GetBudgetByCampaignIdList")] public async Task>> GetBudgetByCampaignIdListAsync( CancellationToken cancellationToken, [FromQuery] string campaignId ) { var request = new GetBudgetByCampaignIdListRequest { CampaignId = campaignId }; var response = await _sender.Send(request, cancellationToken); return Ok(new ApiSuccessResult { Code = StatusCodes.Status200OK, Message = $"Success executing {nameof(GetBudgetByCampaignIdListAsync)}", Content = response }); } }