Files
ShopSolution-backend/Webshop.Api/Controllers/Admin/AdminSuppliersController.cs
Tizian.Breuch 9e298a0458 aufrüumen
2025-07-25 15:46:31 +02:00

71 lines
2.7 KiB
C#

// src/Webshop.Api/Controllers/Admin/AdminSuppliersController.cs
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Webshop.Application.DTOs.Suppliers;
using Webshop.Application.Services.Admin.Interfaces;
namespace Webshop.Api.Controllers.Admin
{
[ApiController]
[Route("api/v1/admin/[controller]")]
[Authorize(Roles = "Admin")]
public class AdminSuppliersController : ControllerBase
{
// Der Controller hängt vom Interface ab, nicht von der konkreten Klasse
private readonly IAdminSupplierService _adminSupplierService;
public AdminSuppliersController(IAdminSupplierService adminSupplierService)
{
_adminSupplierService = adminSupplierService;
}
[HttpGet]
public async Task<ActionResult<IEnumerable<SupplierDto>>> GetAllSuppliers()
{
var suppliers = await _adminSupplierService.GetAllSuppliersAsync();
return Ok(suppliers);
}
[HttpGet("{id:guid}")]
public async Task<ActionResult<SupplierDto>> GetSupplierById(Guid id)
{
var supplier = await _adminSupplierService.GetSupplierByIdAsync(id);
if (supplier == null) return NotFound();
return Ok(supplier);
}
[HttpPost]
public async Task<ActionResult<SupplierDto>> CreateSupplier([FromBody] SupplierDto supplierDto)
{
if (supplierDto == null) return BadRequest("Supplier data is required.");
if (!ModelState.IsValid) return BadRequest(ModelState);
var createdSupplier = await _adminSupplierService.CreateSupplierAsync(supplierDto);
return CreatedAtAction(nameof(GetSupplierById), new { id = createdSupplier.Id }, createdSupplier);
}
[HttpPut("{id:guid}")]
public async Task<IActionResult> UpdateSupplier(Guid id, [FromBody] SupplierDto supplierDto)
{
if (id != supplierDto.Id) return BadRequest("Mismatched ID in route and body.");
if (!ModelState.IsValid) return BadRequest(ModelState);
var success = await _adminSupplierService.UpdateSupplierAsync(id, supplierDto);
if (!success) return NotFound();
return NoContent(); // Standardantwort für erfolgreiches Update
}
[HttpDelete("{id:guid}")]
public async Task<IActionResult> DeleteSupplier(Guid id)
{
var success = await _adminSupplierService.DeleteSupplierAsync(id);
if (!success) return NotFound();
return NoContent(); // Standardantwort für erfolgreiches Löschen
}
}
}