/
HiddenLogic
/
Motion-ERP
Обзор
Документация
Войти
/
HiddenLogic
/
Motion-ERP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Motion-ERP.API/Controllers/ChargesController.cs
74 строки
2 KB
adnet
Initial commit: Motion-ERP solution structure
30 июл 2026, 17:01
30 июл 2026, 17:01
bf32c92
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Motion_ERP_Application.DTOs; using Motion_ERP_Application.Interfaces; using Motion_ERP_Domain.Exceptions; namespace Motion_ERP_API.Controllers; [ApiController] [Route("api/[controller]")] [Authorize(Roles = "Admin,Accountant")] public class ChargesController : ControllerBase { private readonly IChargesService _chargesService; public ChargesController(IChargesService chargesService) { _chargesService = chargesService; } [HttpGet] [ProducesResponseType(typeof(IEnumerable<RentalChargeDto>), StatusCodes.Status200OK)] public async Task<ActionResult<IEnumerable<RentalChargeDto>>> GetAll([FromQuery] Guid? contractId, [FromQuery] string? status, CancellationToken ct) { var charges = await _chargesService.GetAllAsync(contractId, status, ct); return Ok(charges); } [HttpGet("{id}")] [ProducesResponseType(typeof(RentalChargeDto), StatusCodes.Status200OK)] public async Task<ActionResult<RentalChargeDto>> GetById(Guid id, CancellationToken ct) { try { var charge = await _chargesService.GetByIdAsync(id, ct); return Ok(charge); } catch (DomainException ex) { return NotFound(ex.Message); } } [HttpPut("{id}/pay")] [ProducesResponseType(typeof(RentalChargeDto), StatusCodes.Status200OK)] public async Task<ActionResult<RentalChargeDto>> MarkAsPaid(Guid id, CancellationToken ct) { try { var charge = await _chargesService.MarkAsPaidAsync(id, ct); return Ok(charge); } catch (DomainException ex) { return BadRequest(ex.Message); } } [HttpGet("outstanding/total")] [ProducesResponseType(typeof(decimal), StatusCodes.Status200OK)] public async Task<ActionResult<decimal>> GetTotalOutstanding(CancellationToken ct) { var total = await _chargesService.GetTotalOutstandingAsync(ct); return Ok(total); } [HttpGet("outstanding/contractor/{contractorId}")] [ProducesResponseType(typeof(decimal), StatusCodes.Status200OK)] public async Task<ActionResult<decimal>> GetOutstandingByContractor(Guid contractorId, CancellationToken ct) { var total = await _chargesService.GetOutstandingByContractorAsync(contractorId, ct); return Ok(total); } }