using Microsoft.AspNetCore.Mvc; using PetCompanion.Models; using PetCompanion.Services; namespace PetCompanion.Controllers { [ApiController] [Route("api/v1/[controller]")] public class PetController : ControllerBase { private readonly PetService petService; private readonly PetClassService petClassService; private readonly ILogger logger; private Guid userId = Guid.Parse("f5f4b3b3-3b7b-4b7b-8b7b-7b7b7b7b7b7b"); public PetController( ILogger logger, PetService petService, PetClassService petClassService) { this.logger = logger; this.petService = petService; this.petClassService = petClassService; } [HttpGet("")] public IActionResult GetAllPets() { return Ok(petService.GetAllPets(userId)); } [HttpPost("")] public IActionResult CreatePet([FromBody] PetCreationRequest petRequest) { var createdPet = petService.CreatePet(userId, petRequest); return CreatedAtAction(nameof(GetAllPets), new { id = createdPet.Id }, createdPet); } [HttpPut("{petId}/action")] public IActionResult UpdatePetActionGather(string petId, [FromBody] PetUpdateActionRequest actionRequest) { try { var updatedPet = petService.UpdatePetAction(petId, userId.ToString(), actionRequest); return Ok(updatedPet); } catch (Exception ex) { return NotFound(ex.Message); } } [HttpGet("{petId}/resources/gathered")] public IActionResult GetGatheredResources(string petId) { try { var resources = petService.GetGatheredResources(petId, userId.ToString()); return Ok(resources); } catch (Exception ex) { return NotFound(ex.Message); } } [HttpPut("{petId}/resources/collect")] public IActionResult CollectGatheredResources(string petId) { try { var updatedPet = petService.UpdatePetResources(petId, userId.ToString()); return Ok(updatedPet); } catch (Exception ex) { return NotFound(ex.Message); } } [HttpGet("classes")] public IActionResult GetAllPetClasses() { return Ok(petClassService.GetAllPetClasses()); } } }