You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.7 KiB
84 lines
2.7 KiB
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 IRepository _repository; |
|
private readonly IMapper _mapper; |
|
|
|
public LendController(IRepository repository, IMapper mapper) |
|
{ |
|
_repository = repository; |
|
_mapper = mapper; |
|
} |
|
|
|
//GET api/leihvorgang |
|
[HttpGet] |
|
public ActionResult<IEnumerable<Lend>> LendsGet() |
|
{ |
|
return Ok(_repository.GetAllLends()); |
|
} |
|
|
|
//POST api/leihvorgang |
|
[HttpPost] |
|
public ActionResult<LendReadDTO> 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<LendReadDTO>(item)); |
|
} |
|
|
|
//GET api/leihvorgang/{id} |
|
[HttpGet("{id}")] |
|
public ActionResult<Lend> LendById(int id) |
|
{ |
|
var lend = _repository.GetLendById(id); |
|
return Ok(lend); |
|
} |
|
|
|
//PATCH api/leihvorgang/{id} |
|
[HttpPatch("{id}")] |
|
public ActionResult LendPatchById(int id, JsonPatchDocument<Lend> patchDocument) |
|
{ |
|
var lend = _repository.GetLendById(id); |
|
if (lend == null) |
|
{ |
|
return NotFound(); |
|
} |
|
return Ok(); |
|
} |
|
} |
|
}
|
|
|