using AB.Contracts; using AB.Services.Abstractions; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace AB.API.Controllers.BusinessPartner; [ApiController] [Route("api/suppliers")] [Produces("application/json")] public class SupplierController : ControllerBase { public readonly ISupplierService _supplierService; public SupplierController(ISupplierService supplierService) { _supplierService = supplierService; } /// /// Abrufen aller Lieferanten /// /// /// [HttpGet] public async Task>> GetSupplieres(CancellationToken cancellationToken) { var suppliers = await _supplierService.GetAllAsync(cancellationToken); return Ok(suppliers); } /// /// Abrufen eines Lieferanten anhand seiner Id /// /// /// /// /// Lieferant wurde nicht gefunden [HttpGet("{supplierId:guid}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task> GetSupplierById(Guid supplierId, CancellationToken cancellationToken) { var supplierDto = await _supplierService.GetSupplierByIdAsync(supplierId, cancellationToken); return Ok(supplierDto); } /// /// Anlegen eines neuen Lieferanten /// /// /// /// Einen neu erstellen Kunden /// Lieferant wurde erstellt [HttpPost] [ProducesResponseType(StatusCodes.Status201Created)] public async Task CreateSupplier([FromBody] SupplierForCreationDto supplierForCreation, CancellationToken cancellationToken) { var supplierDto = await _supplierService.CreateAsync(supplierForCreation, cancellationToken); return CreatedAtAction(nameof(CreateSupplier), new { id = supplierDto.Id }, supplierDto); } /// /// Löschen eines vorhanden Lieferanten /// /// /// /// /// Lieferant wurde gelöscht /// Lieferant wurde nicht gefunden [HttpDelete("{supplierId:guid}")] [ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task DeleteSupplier(Guid supplierId, CancellationToken cancellationToken) { await _supplierService.DeleteAsync(supplierId, cancellationToken); return NoContent(); } }