Squashed commit of the following:
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
This commit is contained in:
parent
09bb449838
commit
d64c4fed67
12 changed files with 180 additions and 56 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -586,6 +586,7 @@ fabric.properties
|
||||||
# Android studio 3.1+ serialized cache file
|
# Android studio 3.1+ serialized cache file
|
||||||
.idea/caches/build_file_checksums.ser
|
.idea/caches/build_file_checksums.ser
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
### VisualStudioCode ###
|
### VisualStudioCode ###
|
||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/settings.json
|
!.vscode/settings.json
|
||||||
|
@ -780,4 +781,7 @@ $RECYCLE.BIN/
|
||||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
|
||||||
# End of https://www.gitignore.io/api/git,rider,linux,csharp,windows,dotnetcore,aspnetcore,visualstudio,visualstudiocode
|
# End of https://www.gitignore.io/api/git,rider,linux,csharp,windows,dotnetcore,aspnetcore,visualstudio,visualstudiocode
|
||||||
|
=======
|
||||||
|
# End of https://www.gitignore.io/api/git,rider,linux,csharp,aspnetcore
|
||||||
|
>>>>>>> ControllerJonas
|
||||||
|
|
||||||
|
|
|
@ -4,5 +4,10 @@
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.4" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
84
Controllers/LendController.cs
Normal file
84
Controllers/LendController.cs
Normal file
|
@ -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<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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,39 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace BuecherwurmAPI.Controllers
|
|
||||||
{
|
|
||||||
[ApiController]
|
|
||||||
[Route("[controller]")]
|
|
||||||
public class WeatherForecastController : ControllerBase
|
|
||||||
{
|
|
||||||
private static readonly string[] Summaries = new[]
|
|
||||||
{
|
|
||||||
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
|
|
||||||
};
|
|
||||||
|
|
||||||
private readonly ILogger<WeatherForecastController> _logger;
|
|
||||||
|
|
||||||
public WeatherForecastController(ILogger<WeatherForecastController> logger)
|
|
||||||
{
|
|
||||||
_logger = logger;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
public IEnumerable<WeatherForecast> Get()
|
|
||||||
{
|
|
||||||
var rng = new Random();
|
|
||||||
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
|
||||||
{
|
|
||||||
Date = DateTime.Now.AddDays(index),
|
|
||||||
TemperatureC = rng.Next(-20, 55),
|
|
||||||
Summary = Summaries[rng.Next(Summaries.Length)]
|
|
||||||
})
|
|
||||||
.ToArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
12
DTOs/LendRead.cs
Normal file
12
DTOs/LendRead.cs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace BuecherwurmAPI.DTOs
|
||||||
|
{
|
||||||
|
public class LendReadDTO
|
||||||
|
{
|
||||||
|
public int ItemId { get; set;}
|
||||||
|
public DateTime ReturnDate { get; set; }
|
||||||
|
public string Customer { get; set; }
|
||||||
|
public bool Returned { get; set; }
|
||||||
|
}
|
||||||
|
}
|
11
Data/ILendRepo.cs
Normal file
11
Data/ILendRepo.cs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using BuecherwurmAPI.Models;
|
||||||
|
|
||||||
|
namespace BuecherwurmAPI.Data
|
||||||
|
{
|
||||||
|
public interface ILendRepo
|
||||||
|
{
|
||||||
|
IEnumerable<Lend> GetAllLends();
|
||||||
|
Lend GetLendById(int id);
|
||||||
|
}
|
||||||
|
}
|
26
Data/MockLendRepo.cs
Normal file
26
Data/MockLendRepo.cs
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using BuecherwurmAPI.Models;
|
||||||
|
|
||||||
|
namespace BuecherwurmAPI.Data
|
||||||
|
{
|
||||||
|
public class MockLendRepo : ILendRepo
|
||||||
|
{
|
||||||
|
public IEnumerable<Lend> GetAllLends()
|
||||||
|
{
|
||||||
|
var lends = new List<Lend>
|
||||||
|
{
|
||||||
|
new Lend{Id = 1, Customer = "Nek0", ItemId = 1337, Returned = false, ReturnDate = DateTime.Now},
|
||||||
|
new Lend{Id = 2, Customer = "Shrubbery", ItemId = 1975, Returned = false, ReturnDate = DateTime.Now},
|
||||||
|
new Lend{Id = 3, Customer = "Felix", ItemId = 42, Returned = true, ReturnDate = DateTime.Now}
|
||||||
|
};
|
||||||
|
|
||||||
|
return lends;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Lend GetLendById(int id)
|
||||||
|
{
|
||||||
|
return new Lend{Id = 1, Customer = "Nek0", ItemId = 1337, Returned = false, ReturnDate = DateTime.Now};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
Models/Lend.cs
Normal file
13
Models/Lend.cs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace BuecherwurmAPI.Models
|
||||||
|
{
|
||||||
|
public class Lend
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public int ItemId { get; set;}
|
||||||
|
public DateTime ReturnDate { get; set; }
|
||||||
|
public string Customer { get; set; }
|
||||||
|
public bool Returned { get; set; }
|
||||||
|
}
|
||||||
|
}
|
14
Profiles/LendProfile.cs
Normal file
14
Profiles/LendProfile.cs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
using AutoMapper;
|
||||||
|
using BuecherwurmAPI.DTOs;
|
||||||
|
using BuecherwurmAPI.Models;
|
||||||
|
|
||||||
|
namespace BuecherwurmAPI.Profiles
|
||||||
|
{
|
||||||
|
public class LendProfile : Profile
|
||||||
|
{
|
||||||
|
public LendProfile()
|
||||||
|
{
|
||||||
|
CreateMap<Lend, LendReadDTO>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,7 +12,7 @@
|
||||||
"IIS Express": {
|
"IIS Express": {
|
||||||
"commandName": "IISExpress",
|
"commandName": "IISExpress",
|
||||||
"launchBrowser": true,
|
"launchBrowser": true,
|
||||||
"launchUrl": "weatherforecast",
|
"launchUrl": "api",
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
"BuecherwurmAPI": {
|
"BuecherwurmAPI": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"launchBrowser": true,
|
"launchBrowser": true,
|
||||||
"launchUrl": "weatherforecast",
|
"launchUrl": "api",
|
||||||
"applicationUrl": "https://localhost:5001;http://localhost:5000",
|
"applicationUrl": "https://localhost:5001;http://localhost:5000",
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
|
|
@ -2,6 +2,8 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using AutoMapper;
|
||||||
|
using BuecherwurmAPI.Data;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.HttpsPolicy;
|
using Microsoft.AspNetCore.HttpsPolicy;
|
||||||
|
@ -26,6 +28,13 @@ namespace BuecherwurmAPI
|
||||||
public void ConfigureServices(IServiceCollection services)
|
public void ConfigureServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
services.AddControllers();
|
services.AddControllers();
|
||||||
|
|
||||||
|
// Adds a service that is created once per connection.
|
||||||
|
// It takes an interface and a specific implementation.
|
||||||
|
// That allows to swap the implementation easily.
|
||||||
|
services.AddScoped<ILendRepo, MockLendRepo>();
|
||||||
|
|
||||||
|
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace BuecherwurmAPI
|
|
||||||
{
|
|
||||||
public class WeatherForecast
|
|
||||||
{
|
|
||||||
public DateTime Date { get; set; }
|
|
||||||
|
|
||||||
public int TemperatureC { get; set; }
|
|
||||||
|
|
||||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
|
||||||
|
|
||||||
public string Summary { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue