This commit is contained in:
Tizian.Breuch
2025-07-25 10:47:41 +02:00
parent fdaafa6889
commit a51be188d9
4 changed files with 150 additions and 38 deletions

View File

@@ -1,22 +1,23 @@
// src/Webshop.Api/Controllers/Admin/AdminSuppliersController.cs
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Webshop.Application.DTOs; // SupplierDto
using Webshop.Application.Services.Admin; // AdminSupplierService
using System.Collections.Generic; // F<>r IEnumerable
using System.Threading.Tasks; // F<>r Task
using Webshop.Application.DTOs;
using Webshop.Application.Services.Admin; // Wichtig f<>r IAdminSupplierService
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Webshop.Api.Controllers.Admin
{
[ApiController]
[Route("api/v1/admin/[controller]")] // z.B. /api/v1/admin/suppliers
[Authorize(Roles = "Admin")] // Nur Admins
[Route("api/v1/admin/[controller]")]
[Authorize(Roles = "Admin")]
public class AdminSuppliersController : ControllerBase
{
// HIER MUSS NUR EINE EINZIGE DEKLARATION STEHEN
private readonly AdminSupplierService _adminSupplierService;
// Der Controller h<>ngt vom Interface ab, nicht von der konkreten Klasse
private readonly IAdminSupplierService _adminSupplierService;
public AdminSuppliersController(AdminSupplierService adminSupplierService)
public AdminSuppliersController(IAdminSupplierService adminSupplierService)
{
_adminSupplierService = adminSupplierService;
}
@@ -28,20 +29,43 @@ namespace Webshop.Api.Controllers.Admin
return Ok(suppliers);
}
[HttpPost]
public async Task<ActionResult<SupplierDto>> CreateSupplier([FromBody] SupplierDto supplierDto)
{
if (!ModelState.IsValid) return BadRequest(ModelState);
var createdSupplier = await _adminSupplierService.CreateSupplierAsync(supplierDto);
return CreatedAtAction(nameof(GetSupplierById), new { id = createdSupplier.Id }, createdSupplier);
}
[HttpGet("{id}")]
[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
}
}
}