114 lines
3.3 KiB
C#
114 lines
3.3 KiB
C#
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<InventoryController> _logger;
|
|
private readonly Guid userId = Guid.Parse("f5f4b3b3-3b7b-4b7b-8b7b-7b7b7b7b7b7b");
|
|
|
|
public InventoryController(
|
|
ILogger<InventoryController> logger,
|
|
PetInventoryService inventoryService)
|
|
{
|
|
_logger = logger;
|
|
_inventoryService = inventoryService;
|
|
}
|
|
|
|
[HttpGet("{petId}")]
|
|
public async Task<IActionResult> GetInventory(string petId)
|
|
{
|
|
try
|
|
{
|
|
var inventory = await _inventoryService.GetInventory(petId, userId.ToString());
|
|
return Ok(inventory);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return BadRequest(ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpPut("{petId}/{itemId}/use")]
|
|
public async Task<IActionResult> UseItem(string petId, int itemId)
|
|
{
|
|
try
|
|
{
|
|
var updatedPet = await _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;
|
|
}
|
|
}
|