using Microsoft.AspNetCore.Mvc; using PetWash.Api.Models; using PetWash.Api.Services; namespace PetWash.Api.Controllers; [ApiController] [Route("api/[controller]")] public class OrdersController : ControllerBase { private readonly OrderService _orderService; public OrdersController(OrderService orderService) { _orderService = orderService; } [HttpPost] public async Task CreateOrder([FromBody] CreateOrderRequest request) { try { var order = await _orderService.CreateOrderAsync(request.PackageId); return Ok(order); } catch (ArgumentException ex) { return BadRequest(ex.Message); } } [HttpPost("{id}/payment")] public async Task ConfirmPayment(int id) { var order = await _orderService.ConfirmPaymentAsync(id); if (order == null) return NotFound(); return Ok(order); } [HttpGet("{id}")] public async Task GetOrder(int id) { var order = await _orderService.GetOrderAsync(id); if (order == null) return NotFound(); return Ok(order); } [HttpPut("{id}/status")] public async Task UpdateStatus(int id, [FromBody] UpdateStatusRequest request) { var order = await _orderService.UpdateOrderStatusAsync(id, request.Status); if (order == null) return NotFound(); return Ok(order); } } public record CreateOrderRequest(int PackageId); public record UpdateStatusRequest(OrderStatus Status);