diff --git a/Controllers/LendController.cs b/Controllers/LendController.cs new file mode 100644 index 0000000..136b429 --- /dev/null +++ b/Controllers/LendController.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using AutoMapper; +using BuecherwurmAPI.Data; +using BuecherwurmAPI.DTOs; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.JsonPatch; +using Microsoft.Extensions.Logging; +using BuecherwurmAPI.Models; + +namespace BuecherwurmAPI.Controllers +{ + [Route("api/leihvorgang")] + [ApiController] + public class LendController : ControllerBase + { + private readonly ILendRepo _repository; + private readonly IMapper _mapper; + + public LendController(ILendRepo repository, IMapper mapper) + { + _repository = repository; + _mapper = mapper; + } + + //GET api/leihvorgang + [HttpGet] + public ActionResult> LendsGet() + { + return Ok(_repository.GetAllLends()); + } + + //POST api/leihvorgang + [HttpPost] + public ActionResult LendsPost(Lend lend) + { + /* + Internally a lend is stored with an id + but the client shouldn't be allowed to set or change it + therefore the package 'AutoMapper' is used to prevent errors + that could happen when doing this task manually. + It takes the information from the client and maps it to the + corresponding internal object which then will be returned. + Furthermore it could be used to keep some attributes secret. + Another nice effect of this is that the implementation could be changed + while the interface could be retained by some minor changes in the code. + + DTO stands for Data Transfer Object + */ + var item = new Lend + { + Id = 256, + Customer = lend.Customer, + Returned = lend.Returned, + ItemId = lend.ItemId, + ReturnDate = lend.ReturnDate + }; + return Ok(item); + //return Ok(_mapper.Map(item)); + } + + //GET api/leihvorgang/{id} + [HttpGet("{id}")] + public ActionResult LendById(int id) + { + var lend = _repository.GetLendById(id); + return Ok(lend); + } + + //PATCH api/leihvorgang/{id} + [HttpPatch("{id}")] + public ActionResult LendPatchById(int id, JsonPatchDocument patchDocument) + { + var lend = _repository.GetLendById(id); + if (lend == null) + { + return NotFound(); + } + return Ok(); + } + } +}