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();
}
}