using Microsoft.AspNetCore.Mvc; using PetCompanion.Models; using PetCompanion.Services; namespace PetCompanion.Controllers { [ApiController] [Route("api/v1/[controller]")] public class InventoryController : ControllerBase { private readonly PetInventoryService inventoryService; private readonly ILogger logger; private readonly Guid userId = Guid.Parse("f5f4b3b3-3b7b-4b7b-8b7b-7b7b7b7b7b7b"); public InventoryController( ILogger logger, PetInventoryService inventoryService) { this.logger = logger; this.inventoryService = inventoryService; } [HttpGet("{petId}")] public IActionResult GetInventory(string petId) { try { var inventory = inventoryService.GetInventory(petId, userId.ToString()); return Ok(inventory); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPut("{petId}/{itemId}/use")] public IActionResult UseItem(string petId, int itemId) { try { var updatedPet = inventoryService.UseItem(petId, userId.ToString(), itemId); return Ok(updatedPet); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPut("{petId}/{itemId}/equip")] public IActionResult EquipItem(string petId, int itemId) { try { var updatedPet = inventoryService.EquipItem(petId, userId.ToString(), itemId); return Ok(updatedPet); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPut("{petId}/{equipTarget}/unequip")] public IActionResult UnequipItem(string petId, ItemEquipTarget equipTarget) { try { var updatedPet = inventoryService.UnequipItem(petId, userId.ToString(), equipTarget); return Ok(updatedPet); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPut("{petId}/{itemId}/drop")] public IActionResult DropItem(string petId, int itemId) { try { var updatedPet = inventoryService.DropItem(petId, userId.ToString(), itemId); return Ok(updatedPet); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPost("{petId}/create")] public IActionResult AddItem(string petId, [FromBody] AddItemRequest request) { try { var updatedPet = inventoryService.AddItemToPet(petId, userId.ToString(), request.ItemId, request.Quantity); return Ok(updatedPet); } catch (Exception ex) { return BadRequest(ex.Message); } } } public class AddItemRequest { public int ItemId { get; set; } public int Quantity { get; set; } = 1; } }