API zum verleihen von Medien
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

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
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
public ActionResult<IEnumerable<Lend>> LendsGet()
return Ok(_repository.GetAllLends());
//POST api/leihvorgang
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}
public ActionResult<Lend> LendById(int id)
var lend = _repository.GetLendById(id);
return Ok(lend);
//PATCH api/leihvorgang/{id}
public ActionResult LendPatchById(int id, JsonPatchDocument<Lend> patchDocument)
var lend = _repository.GetLendById(id);
if (lend == null)
return NotFound();
return Ok();