Jonas Schönbach
d64c4fed67
commitd155f8fb5b
Author: Jonas Schönbach <jonas.schoenbach@yahoo.de> Date: Wed May 27 15:47:14 2020 +0200 LendController um DTO ergänzt commit4afdb44e92
Author: Jonas Schönbach <jonas.schoenbach@yahoo.de> Date: Wed May 27 14:31:46 2020 +0200 LendController um weitere Methoden ergänzt commit1c8ec4b517
Author: Jonas Schönbach <jonas.schoenbach@yahoo.de> Date: Wed May 27 11:22:29 2020 +0200 flexiblere Umsetzung des LendControllers durch Depedency-Injection commitd07c82f749
Author: Jonas Schönbach <jonas.schoenbach@yahoo.de> Date: Wed May 27 10:42:15 2020 +0200 Überflüssige Dateien entfernt commite22296617c
Author: Jonas Schönbach <jonas.schoenbach@yahoo.de> Date: Wed May 27 10:38:00 2020 +0200 Überflüssige Dateien entfernt commit774c7be7a9
Author: Jonas Schönbach <jonas.schoenbach@yahoo.de> Date: Wed May 27 10:33:53 2020 +0200 .gitignore-Datei berichtigt commitf00ecd5034
Author: Jonas Schönbach <jonas.schoenbach@yahoo.de> Date: Wed May 27 10:30:19 2020 +0200 .gitignore-Datei hinzugefügt commitfbe1e58a47
Author: Jonas Schönbach <jonas.schoenbach@yahoo.de> Date: Wed May 27 10:08:52 2020 +0200 Erster Zwischenstand für die Ausleihe-Schnittstelle (mit Mock-Data) api/leihvorgang -- gibt Liste aller Leihvorgänge zurück api/leihvorgang/{id} -- gibt bestimmten Leihvorgang zurück
84 lines
2.7 KiB
C#
84 lines
2.7 KiB
C#
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<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();
|
|
}
|
|
}
|
|
}
|