Skip to content

Commit

Permalink
Develop into master (#32)
Browse files Browse the repository at this point in the history
* Merge master in develop (#27)

* Develop into master (#26)

* Task/#257 controller skeleton

* Task/#263 koppeling pakket service

* cors (#5)

* dockerfile added local file

* Add license (#6)

* Update README.md

* Create LICENSE

* Update README.md

Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>

* Build (#11)

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* Hardcoded values to appsettings (#12)

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* Update README.md (#13)

* Develop (#7)

* Task/#257 controller skeleton

* Task/#263 koppeling pakket service

* cors (#5)

* dockerfile added local file

* Add license (#6)

* Update README.md

* Create LICENSE

* Update README.md

Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Update README.md

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Update README.md

* Gateway fix (#16)

* Changes

* gateway fix, same request model as package service

* created at action bug fixed

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Task/#264 koppeling locatieservice (#18)

* added locationservice url

* added models

* location controller

* fixed room requestmodel

* fix endpoints and constants

* more model fixes

* getpackage conversion fix

* Story/#333 pakketgegevens (#20)

* personeel-service toegevoegd

* start error handling. persoon toegevoegd aan GetPackage(id)

* sender is receiverid bugfix

* collectionpoint ophalen bij GetPackage{id}

* 400 - 404 errors allowed. getpackages haalt nu ook locatie en ontvanger op

* merge fix

* Story/#16 edit locations (#23)

* Docker Local Appsettings

* README update

* Update methods finished

* Changed name

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* #358 delete endpoints (#24)

* all calls make use of flurl extension and return ObjectResults

* Delete endpoints toegevoegd aan locatiecontroller

* Error handling voor delete endpoints

* conflict httpstatus added

* Small formatting fix in locatiecontroller

Co-authored-by: JaapvanderMeer <43168682+JeapfromtheLake@users.noreply.github.com>

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>
Co-authored-by: Shady^ <36726909+ShadyDL@users.noreply.github.com>
Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>
Co-authored-by: Sverre <43172180+Sverrevg@users.noreply.github.com>

* Update docker-publish.yml

* Update appsettings.json

* Update appsettings.json

* Rename appsettings.Docker.json to tmp

* Rename tmp to appsettings.Docker.json

* Add kestral

* gethealth call

Co-authored-by: Jaap van der Meer <43168682+JeapfromtheLake@users.noreply.github.com>
Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>
Co-authored-by: Shady^ <36726909+ShadyDL@users.noreply.github.com>
Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* #433 api call url refactor (#29)

* Develop into master (#26)

* Task/#257 controller skeleton

* Task/#263 koppeling pakket service

* cors (#5)

* dockerfile added local file

* Add license (#6)

* Update README.md

* Create LICENSE

* Update README.md

Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>

* Build (#11)

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* Hardcoded values to appsettings (#12)

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* Update README.md (#13)

* Develop (#7)

* Task/#257 controller skeleton

* Task/#263 koppeling pakket service

* cors (#5)

* dockerfile added local file

* Add license (#6)

* Update README.md

* Create LICENSE

* Update README.md

Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Update README.md

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Update README.md

* Gateway fix (#16)

* Changes

* gateway fix, same request model as package service

* created at action bug fixed

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Task/#264 koppeling locatieservice (#18)

* added locationservice url

* added models

* location controller

* fixed room requestmodel

* fix endpoints and constants

* more model fixes

* getpackage conversion fix

* Story/#333 pakketgegevens (#20)

* personeel-service toegevoegd

* start error handling. persoon toegevoegd aan GetPackage(id)

* sender is receiverid bugfix

* collectionpoint ophalen bij GetPackage{id}

* 400 - 404 errors allowed. getpackages haalt nu ook locatie en ontvanger op

* merge fix

* Story/#16 edit locations (#23)

* Docker Local Appsettings

* README update

* Update methods finished

* Changed name

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* #358 delete endpoints (#24)

* all calls make use of flurl extension and return ObjectResults

* Delete endpoints toegevoegd aan locatiecontroller

* Error handling voor delete endpoints

* conflict httpstatus added

* Small formatting fix in locatiecontroller

Co-authored-by: JaapvanderMeer <43168682+JeapfromtheLake@users.noreply.github.com>

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>
Co-authored-by: Shady^ <36726909+ShadyDL@users.noreply.github.com>
Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>
Co-authored-by: Sverre <43172180+Sverrevg@users.noreply.github.com>

* Update docker-publish.yml

* Update appsettings.json

* Update appsettings.json

* Rename appsettings.Docker.json to tmp

* Rename tmp to appsettings.Docker.json

* Add kestral

* gethealth call

* Updated urls in location controller and refactored a little but for clarity

* Refactored packagecontroller and fixed urls

Co-authored-by: Jaap van der Meer <43168682+JeapfromtheLake@users.noreply.github.com>
Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>
Co-authored-by: Shady^ <36726909+ShadyDL@users.noreply.github.com>
Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* merge fix

* #436 sonarcloud integration (#30)

* Develop into master (#26)

* Task/#257 controller skeleton

* Task/#263 koppeling pakket service

* cors (#5)

* dockerfile added local file

* Add license (#6)

* Update README.md

* Create LICENSE

* Update README.md

Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>

* Build (#11)

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* Hardcoded values to appsettings (#12)

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* Update README.md (#13)

* Develop (#7)

* Task/#257 controller skeleton

* Task/#263 koppeling pakket service

* cors (#5)

* dockerfile added local file

* Add license (#6)

* Update README.md

* Create LICENSE

* Update README.md

Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Update README.md

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Update README.md

* Gateway fix (#16)

* Changes

* gateway fix, same request model as package service

* created at action bug fixed

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>

* Task/#264 koppeling locatieservice (#18)

* added locationservice url

* added models

* location controller

* fixed room requestmodel

* fix endpoints and constants

* more model fixes

* getpackage conversion fix

* Story/#333 pakketgegevens (#20)

* personeel-service toegevoegd

* start error handling. persoon toegevoegd aan GetPackage(id)

* sender is receiverid bugfix

* collectionpoint ophalen bij GetPackage{id}

* 400 - 404 errors allowed. getpackages haalt nu ook locatie en ontvanger op

* merge fix

* Story/#16 edit locations (#23)

* Docker Local Appsettings

* README update

* Update methods finished

* Changed name

Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>

* #358 delete endpoints (#24)

* all calls make use of flurl extension and return ObjectResults

* Delete endpoints toegevoegd aan locatiecontroller

* Error handling voor delete endpoints

* conflict httpstatus added

* Small formatting fix in locatiecontroller

Co-authored-by: JaapvanderMeer <43168682+JeapfromtheLake@users.noreply.github.com>

Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>
Co-authored-by: Shady^ <36726909+ShadyDL@users.noreply.github.com>
Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>
Co-authored-by: Sverre <43172180+Sverrevg@users.noreply.github.com>

* Update docker-publish.yml

* Update appsettings.json

* Update appsettings.json

* Rename appsettings.Docker.json to tmp

* Rename tmp to appsettings.Docker.json

* Add kestral

* gethealth call

* Create sonarcloud.yml

* Updated name of workflow

* Fixed indentation

* Updated pull request triggers

Co-authored-by: Jaap van der Meer <43168682+JeapfromtheLake@users.noreply.github.com>
Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>
Co-authored-by: Shady^ <36726909+ShadyDL@users.noreply.github.com>
Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>
Co-authored-by: Sverre <43172180+Sverrevg@users.noreply.github.com>
Co-authored-by: Sverre van Gompel <sverrevangompel@hotmail.com>

* #20 pakket levering (#31)

* package/ticket response and requests updated. added to converter and changed controller logic

* postticket added and ticketresponse update

* ticketmodel now has complete location model

* duplicate code fix

Co-authored-by: Sverre <43172180+Sverrevg@users.noreply.github.com>
Co-authored-by: Wieling,Kevin C.F.J <k.wieling@student.fontys.nl>
Co-authored-by: Gompel,Sverre S. van <sverre.vangompel@student.fontys.nl>
Co-authored-by: Heesakkers,Aron A.P.H.M <aron.heesakkers@student.fontys.nl>
Co-authored-by: EGKangaroo <EGKangaroo@yahoo.com>
Co-authored-by: Shady^ <36726909+ShadyDL@users.noreply.github.com>
Co-authored-by: Aron Heesakkers <aron.heesakkers@via.nl>
Co-authored-by: FIPostAdmin <82575254+FIPostAdmin@users.noreply.github.com>
Co-authored-by: Sverre van Gompel <sverrevangompel@hotmail.com>
  • Loading branch information
10 people authored Jun 3, 2021
1 parent d8f06e7 commit 23daed0
Show file tree
Hide file tree
Showing 12 changed files with 302 additions and 277 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
types: [opened, synchronize, reopened]

jobs:
build:
Expand Down
47 changes: 47 additions & 0 deletions .github/workflows/sonarcloud.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: SonarCloud
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
name: Build
runs-on: windows-latest
steps:
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11
- uses: actions/checkout@v2
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Cache SonarCloud packages
uses: actions/cache@v1
with:
path: ~\sonar\cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache SonarCloud scanner
id: cache-sonar-scanner
uses: actions/cache@v1
with:
path: .\.sonar\scanner
key: ${{ runner.os }}-sonar-scanner
restore-keys: ${{ runner.os }}-sonar-scanner
- name: Install SonarCloud scanner
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
shell: powershell
run: |
New-Item -Path .\.sonar\scanner -ItemType Directory
dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
shell: powershell
run: |
.\.sonar\scanner\dotnet-sonarscanner begin /k:"FIPost_api-gateway" /o:"fipost" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io"
dotnet build
.\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
180 changes: 84 additions & 96 deletions Controllers/LocationController.cs

Large diffs are not rendered by default.

188 changes: 81 additions & 107 deletions Controllers/PackageController.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using api_gateway.Models.ResponseModels;
using api_gateway.Models.ServiceModels;
Expand All @@ -10,16 +9,13 @@
using api_gateway.Models.RequestModels;
using Microsoft.AspNetCore.Http;
using api_gateway.Helper;
using Newtonsoft.Json;
using System.Net;
using api_gateway.Models.ServiceModels.Location;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace api_gateway.Controllers
{
/// TODO: error handling, HTTP code responses for created, not found, failed etc.
///
/// <summary>
/// The package controller handles all of the web-friendly endpoints that consume the package resource.
/// Controller documentation should be handled automatically via swagger.
Expand All @@ -31,13 +27,7 @@ namespace api_gateway.Controllers
public class PackageController : ControllerBase
{

/// <summary>
/// Gets a list of all the available packages from the package service
/// </summary>
/// <returns>List of packages</returns>
/// <response code="200">returns the list of packages</response>
/// <response code="400">bad request, something went wrong on the client-side</response>
/// <response code="500">processing error, something went wrong on the server-side</response>
#region Get methods.
[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
Expand All @@ -52,41 +42,13 @@ public async Task<ActionResult<ICollection<PackageResponseModel>>> Get()
return new ObjectResult(errPackageResponse.Message) { StatusCode = (int)errPackageResponse.StatusCode };
}

IFlurlResponse locationResponse = await $"{Constants.LocationApiUrl}/api/room".GetAsync();
var errLocationResponse = locationResponse.GetResponse();
ICollection<Room> allRooms = null;

if (errLocationResponse.StatusCode == HttpStatusCode.OK)
{
allRooms = await locationResponse.GetJsonAsync<ICollection<Room>>();
}

IFlurlResponse personResponse = await $"{Constants.PersonApiUrl}/api/persons".GetAsync();
var errPersonResponse = personResponse.GetResponse();
ICollection<PersonServiceModel> allPersonServiceModels = null;

if (errPersonResponse.StatusCode == HttpStatusCode.OK)
{
allPersonServiceModels = await personResponse.GetJsonAsync<ICollection<PersonServiceModel>>();
}

ICollection<PackageServiceModel> allPackageServiceModels = await packageResponse.GetJsonAsync<ICollection<PackageServiceModel>>();
ICollection<PackageResponseModel> allPackages = ServiceToResponseModelConverter.ConvertPackages(allPackageServiceModels, allPersonServiceModels, allRooms);
ICollection<PackageResponseModel> allPackages = ServiceToResponseModelConverter.ConvertPackages(allPackageServiceModels, await GetAllPersons(), await GetAllRooms());

return Ok(allPackages);

}


/// <summary>
/// Gets a specific package by id
/// </summary>
/// <param name="id">the id of the package</param>
/// <returns>package with matching id</returns>
/// <response code="200">Returns the package with the specified id</response>
/// <response code="404">No package found with the matching id</response>
/// <response code="400">bad request, something went wrong on the client-side</response>
/// <response code="500">processing error, something went wrong on the server-side</response>
[HttpGet("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
Expand All @@ -104,44 +66,21 @@ public async Task<ActionResult<PackageResponseModel>> GetById(Guid id)
}
PackageServiceModel packageModel = await packageResponse.GetJsonAsync<PackageServiceModel>();

IFlurlResponse personResponse = await $"{ Constants.PersonApiUrl }/api/persons/{packageModel.ReceiverId}".GetAsync();
var errPersonResponse = personResponse.GetResponse();
PersonServiceModel personModel = null;

if (errPersonResponse.StatusCode == HttpStatusCode.OK)
{
personModel = await personResponse.GetJsonAsync<PersonServiceModel>();
}

IFlurlResponse locationResponse = await $"{ Constants.LocationApiUrl }/api/room/{packageModel.CollectionPointId}".GetAsync();
var errLocationResponse = locationResponse.GetResponse();
Room room = null;

if (errLocationResponse.StatusCode == HttpStatusCode.OK)
{
room = await locationResponse.GetJsonAsync<Room>();
}

PackageResponseModel responseModel = ServiceToResponseModelConverter.ConvertPackage(packageModel, personModel, room);
PackageResponseModel responseModel = ServiceToResponseModelConverter.ConvertPackage(packageModel, await GetAllPersons(), await GetAllRooms());
return Ok(responseModel);

}
#endregion

/// <summary>
/// Creates a new package
/// </summary>
/// <param name="request">Package request model</param>
/// <returns>the newly created package</returns>
/// <response code="201">A new package has been created</response>
/// <response code="400">bad request, something went wrong on the client-side</response>
/// <response code="500">processing error, something went wrong on the server-side</response>
#region Post methods.
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<PackageResponseModel>> Post(PackageRequestModel request)
public async Task<ActionResult<PackageResponseModel>> PostPackage(PackageRequestModel request)
{
ObjectResult personResponse = await PersonExists(request.ReceiverId);
ObjectResult personResponse = await PersonExists(request.ReceiverId);
if (personResponse.StatusCode != 200)
{
return personResponse;
Expand All @@ -164,26 +103,48 @@ public async Task<ActionResult<PackageResponseModel>> Post(PackageRequestModel r

PackageServiceModel model = await flurlPostResponse.GetJsonAsync<PackageServiceModel>();
PackageResponseModel responseModel = ServiceToResponseModelConverter.ConvertPackage(model);
return CreatedAtAction("Post", responseModel);
return CreatedAtAction("PostPackage", responseModel);
}

[HttpPost("tickets")]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<TicketResponseModel>> PostTicket(TicketRequestModel request)
{
ObjectResult personResponse = await PersonExists(request.CompletedByPersonId);
if (personResponse.StatusCode != 200)
{
return personResponse;
}

ObjectResult collectionPointResponse = await CollectionPointExists(request.LocationId);
if (collectionPointResponse.StatusCode != 200)
{
return collectionPointResponse;
}

//Post ticket
IFlurlResponse flurlPostResponse = await $"{ Constants.PackageApiUrl }/api/tickets".PostJsonAsync(request);
var postResponse = flurlPostResponse.GetResponse();

if (postResponse.StatusCode != HttpStatusCode.OK)
{
return new ObjectResult(postResponse.Message) { StatusCode = (int)postResponse.StatusCode };
}

TicketServiceModel model = await flurlPostResponse.GetJsonAsync<TicketServiceModel>();
TicketResponseModel responseModel = ServiceToResponseModelConverter.ConvertTicket(model);
return CreatedAtAction("PostTicket", responseModel);
}

/// <summary>
/// Update a package with a specified id
/// </summary>
/// <param name="id">the id of the package to be updated</param>
/// <param name="request">the data that the package should be updated with</param>
/// <returns>Status code of update request</returns>
/// <response code="204">The update is successful (no content)</response>
/// <response code="404">No package found with the matching id</response>
/// <response code="400">bad request, something went wrong on the client-side</response>
/// <response code="500">processing error, something went wrong on the server-side</response>
// PUT api/packages/5
[HttpPut("{id}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult> Put(Guid id, PackageRequestModel request)
public async Task<ActionResult<PackageResponseModel>> PutPackage(Guid id, PackageRequestModel request)
{
ObjectResult personResponse = await PersonExists(request.ReceiverId);
if (personResponse.StatusCode != 200)
Expand All @@ -207,46 +168,31 @@ public async Task<ActionResult> Put(Guid id, PackageRequestModel request)

PackageServiceModel model = await flurlPutResponse.GetJsonAsync<PackageServiceModel>();
PackageResponseModel responseModel = ServiceToResponseModelConverter.ConvertPackage(model);
return StatusCode(204);
return CreatedAtAction("PutPackage", responseModel);
}
#endregion

/// <summary>
/// deletes a package with a specific id
/// </summary>
/// <param name="id">the id of the package to be deleted</param>
/// <returns>Status code of delete request</returns>
/// <response code="200">The package is successfully deleted</response>
/// <response code="404">No package found with the matching id</response>
/// <response code="400">bad request, something went wrong on the client-side</response>
/// <response code="500">processing error, something went wrong on the server-side</response>
#region Delete methods.
// DELETE api/packages/5
[HttpDelete("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult> Delete(Guid id)
{
IFlurlResponse response = await $"{ Constants.PackageApiUrl }/api/packages/{id}".DeleteAsync();
var deleteResponse = response.GetResponse("Het meegegeven pakket bestaat niet");

if (response.StatusCode == 404)
{
return NotFound();
}
else if (response.StatusCode >= 400)
{
return StatusCode(400);
}
else if (response.StatusCode >= 500)
{
return StatusCode(500);
}
else
if (deleteResponse.StatusCode != HttpStatusCode.NoContent) // Service returns 204 on delete.
{
return Ok();
return new ObjectResult(deleteResponse.Message) { StatusCode = (int)deleteResponse.StatusCode };
}

return new ObjectResult(deleteResponse.Message) { StatusCode = (int)deleteResponse.StatusCode };
}
#endregion

#region Helper methods.
private async Task<ObjectResult> PersonExists(string id)
{
IFlurlResponse flurlPersonResponse = await $"{ Constants.PersonApiUrl }/api/persons/{id}".GetAsync();
Expand All @@ -262,7 +208,7 @@ private async Task<ObjectResult> PersonExists(string id)

private async Task<ObjectResult> CollectionPointExists(Guid id)
{
IFlurlResponse flurlCollectionPointResponse = await $"{ Constants.LocationApiUrl }/api/Room/{id}".GetAsync();
IFlurlResponse flurlCollectionPointResponse = await $"{ Constants.LocationApiUrl }/api/rooms/{id}".GetAsync();
var collectionPointResponse = flurlCollectionPointResponse.GetResponse("De meegegeven ruimte bestaat niet");

if (collectionPointResponse.StatusCode != HttpStatusCode.OK)
Expand All @@ -272,5 +218,33 @@ private async Task<ObjectResult> CollectionPointExists(Guid id)

return new ObjectResult(collectionPointResponse.Message) { StatusCode = (int)collectionPointResponse.StatusCode };
}

private async Task<ICollection<Room>> GetAllRooms()
{
IFlurlResponse locationResponse = await $"{Constants.LocationApiUrl}/api/rooms".GetAsync();
var errLocationResponse = locationResponse.GetResponse();
ICollection<Room> allRooms = null;

if (errLocationResponse.StatusCode == HttpStatusCode.OK)
{
allRooms = await locationResponse.GetJsonAsync<ICollection<Room>>();
}
return allRooms;
}

private async Task<ICollection<PersonServiceModel>> GetAllPersons()
{
IFlurlResponse personResponse = await $"{Constants.PersonApiUrl}/api/persons".GetAsync();
var errPersonResponse = personResponse.GetResponse();
ICollection<PersonServiceModel> allPersonServiceModels = null;

if (errPersonResponse.StatusCode == HttpStatusCode.OK)
{
allPersonServiceModels = await personResponse.GetJsonAsync<ICollection<PersonServiceModel>>();
}

return allPersonServiceModels;
}
#endregion
}
}
20 changes: 3 additions & 17 deletions Controllers/PersonController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,7 @@ namespace api_gateway.Controllers
[ApiController]
public class PersonController : ControllerBase
{
/// <summary>
/// Gets a list of all persons
/// </summary>
/// <returns>List of rooms</returns>
/// <response code="200">returns the list of persons</response>
/// <response code="400">bad request, something went wrong on the client-side</response>
/// <response code="500">processing error, something went wrong on the server-side</response>
#region Get methods.
[HttpGet("persons")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
Expand All @@ -42,15 +36,6 @@ public async Task<ActionResult<ICollection<PersonServiceModel>>> GetPersons()
return Ok(responseModels);
}

/// <summary>
/// Gets a specific person by id
/// </summary>
/// <param name="id">the id of the person</param>
/// <returns>person with matching id</returns>
/// <response code="200">Returns the person with the specified id</response>
/// <response code="404">No person found with the matching id</response>
/// <response code="400">bad request, something went wrong on the client-side</response>
/// <response code="500">processing error, something went wrong on the server-side</response>
[HttpGet("persons/{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
Expand All @@ -70,7 +55,8 @@ public async Task<ActionResult<PersonServiceModel>> GetPersonById(string id)
PersonServiceModel responseModel = await flurlResponse.GetJsonAsync<PersonServiceModel>();
return Ok(responseModel);
}

#endregion

[HttpGet("health")]
public ActionResult Health()
{
Expand Down
Loading

0 comments on commit 23daed0

Please sign in to comment.