using GerbilManagerWebAPI.Models; using GerbilManagerWebAPI.Repositories; using GerbilManagerWebAPI.Dtos; using GerbilManagerWebAPI.Converter; using Microsoft.AspNetCore.Mvc; using System.Xml; namespace GerbilManagerWebAPI.Controllers { [ApiController] [Route("breeders")] public class BreederController : ControllerBase { private readonly IGerbilRepository gerbilrepository; private readonly IBreederRepository repository; private readonly ILitterRepository litterRepository; public BreederController(IBreederRepository repo) { this.repository = repo; } //GET /gerbils [HttpGet] public IEnumerable GetBreeders() { var items = repository.GetBreeders().Select( breeder => breeder.AsDto()); return items; } //GET /gerbils [HttpGet("{id}")] public ActionResult GetBreeder(Guid id) { var item = repository.GetBreeder(id).AsDto(); if(item is null) { return NotFound(); } return item; } [HttpPost()] public ActionResult CreateBreeder(CreateBreederDto dto) { Breeder breeder = new Breeder{ Id = Guid.NewGuid(), Name = dto.Name, }; this.repository.CreateBreeder(breeder); return CreatedAtAction(nameof(GetBreeder), new { id = breeder.Id}, breeder.AsDto()); } [HttpPut("{id}")] public ActionResult UpdateBreeder(Guid id, UpdateBreederDto breederDto) { var existingItem = repository.GetBreeder(id); if(existingItem is null) { return NotFound(); } Breeder updatedBreeder = existingItem with{ Name = breederDto.Name }; repository.UpdateBreeder(updatedBreeder); return NoContent(); } [HttpDelete("{id}")] public ActionResult DeleteBreeder(Guid id) { var existingLitter = repository.GetBreeder(id); if(existingLitter is null) { return NotFound(); } repository.DeleteBreeder(existingLitter); return NoContent(); } } }