From db3c94b36ee1eb8fd243346030640a052fea2186 Mon Sep 17 00:00:00 2001 From: Don Oerkfitz Date: Mon, 17 May 2021 00:40:48 -0500 Subject: [PATCH] working on base class and implementation --- .vscode/launch.json | 3 +- OSI-API.Business/OSI-API.Business.csproj | 13 +++++++ .../Objects/InvoiceRequestResponse.cs | 9 +++++ OSI-API/Controllers/InvoicesController.cs | 34 +++++++++---------- OSI-API/Controllers/_EndpointBase.cs | 28 +++++++++++++++ OSI-API/OSI-API.csproj | 4 +++ OSI-API/Program.cs | 2 +- OSI-API/Startup.cs | 4 +-- 8 files changed, 75 insertions(+), 22 deletions(-) create mode 100644 OSI-API.Business/OSI-API.Business.csproj create mode 100644 OSI-API.Business/Objects/InvoiceRequestResponse.cs create mode 100644 OSI-API/Controllers/_EndpointBase.cs diff --git a/.vscode/launch.json b/.vscode/launch.json index 20569db..5d77af8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -24,7 +24,8 @@ }, "sourceFileMap": { "/Views": "${workspaceFolder}/Views" - } + }, + "enableStepFiltering": false }, { "name": ".NET Core Attach", diff --git a/OSI-API.Business/OSI-API.Business.csproj b/OSI-API.Business/OSI-API.Business.csproj new file mode 100644 index 0000000..0943e83 --- /dev/null +++ b/OSI-API.Business/OSI-API.Business.csproj @@ -0,0 +1,13 @@ + + + + net5.0 + OSI_API.Business + + + + + + + + diff --git a/OSI-API.Business/Objects/InvoiceRequestResponse.cs b/OSI-API.Business/Objects/InvoiceRequestResponse.cs new file mode 100644 index 0000000..3c96618 --- /dev/null +++ b/OSI-API.Business/Objects/InvoiceRequestResponse.cs @@ -0,0 +1,9 @@ +namespace OSI.API.Business.Objects +{ + public class InvoiceObject + { + public int InvoiceNumber { get; set; } + public float InvoiceAmount { get; set; } + public float Discount { get; set; } + } +} \ No newline at end of file diff --git a/OSI-API/Controllers/InvoicesController.cs b/OSI-API/Controllers/InvoicesController.cs index 4d4e46e..f6b8239 100644 --- a/OSI-API/Controllers/InvoicesController.cs +++ b/OSI-API/Controllers/InvoicesController.cs @@ -4,43 +4,41 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using OSI.API.Business.Objects; namespace OSI.API.Controllers { [Route("api/v{version:apiVersion}/[controller]")] [ApiController] - public class InvoicesController : ControllerBase + public class InvoicesController : EndpointBase { - // GET: api/Invoices - [HttpGet] - public IEnumerable Get() + public override IActionResult Delete(int id) { - return new string[] { "value1", "value2" }; + return NotFound(); } - // GET: api/Invoices/5 - [HttpGet("{id}")] - public string Get(int id) + public override IActionResult Get() { - return "value"; + throw new NotImplementedException(); } - // POST: api/Invoices - [HttpPost] - public void Post([FromBody] string value) + public override IActionResult Get(int id) { + return new JsonResult(id); } - // PUT: api/Invoices/5 - [HttpPut("{id}")] - public void Put(int id, [FromBody] string value) + public override IActionResult Post([FromBody] InvoiceObject input) { + throw new NotImplementedException(); } - // DELETE: api/Invoices/5 - [HttpDelete("{id}")] - public void Delete(int id) + public override IActionResult Put(int id, [FromBody] InvoiceObject input) { + return CreatedAtAction( + "Get", + routeValues: new { id = input.InvoiceAmount }, + value: Get(id) + ); } } } diff --git a/OSI-API/Controllers/_EndpointBase.cs b/OSI-API/Controllers/_EndpointBase.cs new file mode 100644 index 0000000..64d8270 --- /dev/null +++ b/OSI-API/Controllers/_EndpointBase.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; + +namespace OSI.API.Controllers +{ + public abstract class EndpointBase : ControllerBase + { + [HttpGet] + public abstract IActionResult Get(); + + // GET: api/Clients/5 + [HttpGet("{id}")] + public abstract IActionResult Get(int id); + + // POST: api/Clients + [HttpPost] + public abstract IActionResult Post([FromBody] A input); + + // PUT: api/Clients/5 + [HttpPut("{id}")] + public abstract IActionResult Put(int id, [FromBody] A input); + + // DELETE: api/Clients/5 + [HttpDelete("{id}")] + public abstract IActionResult Delete(int id); + } +} \ No newline at end of file diff --git a/OSI-API/OSI-API.csproj b/OSI-API/OSI-API.csproj index 3d0c0e1..601b417 100644 --- a/OSI-API/OSI-API.csproj +++ b/OSI-API/OSI-API.csproj @@ -11,4 +11,8 @@ + + + + diff --git a/OSI-API/Program.cs b/OSI-API/Program.cs index 83c815c..a601377 100644 --- a/OSI-API/Program.cs +++ b/OSI-API/Program.cs @@ -7,7 +7,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -namespace OSI_API +namespace OSI.API { public class Program { diff --git a/OSI-API/Startup.cs b/OSI-API/Startup.cs index e898e20..d122abf 100644 --- a/OSI-API/Startup.cs +++ b/OSI-API/Startup.cs @@ -12,7 +12,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.OpenApi.Models; -namespace OSI_API +namespace OSI.API { public class Startup { @@ -56,7 +56,7 @@ namespace OSI_API }); } - app.UseHttpsRedirection(); + // app.UseHttpsRedirection(); app.UseRouting();