/
HiddenLogic
/
Motion-ERP
Обзор
Документация
Войти
/
HiddenLogic
/
Motion-ERP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Motion-ERP.API/Controllers/ContractsController.cs
103 строки
3 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] public class ContractsController : ControllerBase { private readonly IContractService _contractService; public ContractsController(IContractService contractService) { _contractService = contractService; } [HttpGet] [ProducesResponseType(typeof(IEnumerable<ContractDto>), StatusCodes.Status200OK)] public async Task<ActionResult<IEnumerable<ContractDto>>> GetAll([FromQuery] Guid? contractorId, [FromQuery] string? status, CancellationToken ct) { var contracts = await _contractService.GetAllAsync(contractorId, status, ct); return Ok(contracts); } [HttpGet("{id}")] [ProducesResponseType(typeof(ContractDto), StatusCodes.Status200OK)] public async Task<ActionResult<ContractDto>> GetById(Guid id, CancellationToken ct) { try { var contract = await _contractService.GetByIdAsync(id, ct); return Ok(contract); } catch (DomainException ex) { return NotFound(ex.Message); } } [HttpPost] [ProducesResponseType(typeof(ContractDto), StatusCodes.Status201Created)] public async Task<ActionResult<ContractDto>> Create(CreateContractDto dto, CancellationToken ct) { try { var contract = await _contractService.CreateAsync(dto, ct); return CreatedAtAction(nameof(GetById), new { id = contract.ContractId }, contract); } catch (DomainException ex) { return BadRequest(ex.Message); } } [HttpPut("{id}")] [ProducesResponseType(typeof(ContractDto), StatusCodes.Status200OK)] public async Task<ActionResult<ContractDto>> Update(Guid id, UpdateContractDto dto, CancellationToken ct) { try { var contract = await _contractService.UpdateAsync(id, dto, ct); return Ok(contract); } catch (DomainException ex) { return NotFound(ex.Message); } } [HttpDelete("{id}")] [ProducesResponseType(StatusCodes.Status204NoContent)] public async Task<IActionResult> Delete(Guid id, CancellationToken ct) { try { await _contractService.DeleteAsync(id, ct); return NoContent(); } catch (DomainException ex) { return BadRequest(ex.Message); } } [HttpPost("{id}/activate")] [ProducesResponseType(typeof(ContractDto), StatusCodes.Status200OK)] public async Task<ActionResult<ContractDto>> Activate(Guid id, CancellationToken ct) { try { var contract = await _contractService.ActivateAsync(id, ct); return Ok(contract); } catch (DomainException ex) { return BadRequest(ex.Message); } } }