From 6d5c97a4e5ca0a62eaba10f178689fae43b1e22d Mon Sep 17 00:00:00 2001 From: MarcEricMartel <74071476+MarcEricMartel@users.noreply.github.com> Date: Mon, 17 Oct 2022 14:33:45 -0700 Subject: [PATCH] lolput --- .../Controllers/ProductController.cs | 151 ++++++++++-------- 1 file changed, 85 insertions(+), 66 deletions(-) diff --git a/GrossesMitaines/GrossesMitainesAPI/Controllers/ProductController.cs b/GrossesMitaines/GrossesMitainesAPI/Controllers/ProductController.cs index 5ceaefa..fc4acc2 100644 --- a/GrossesMitaines/GrossesMitainesAPI/Controllers/ProductController.cs +++ b/GrossesMitaines/GrossesMitainesAPI/Controllers/ProductController.cs @@ -4,6 +4,7 @@ using System.Linq; using GrossesMitainesAPI.Data; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Authorization; +using Microsoft.EntityFrameworkCore; namespace GrossesMitainesAPI.Controllers; @@ -30,17 +31,39 @@ public class ProductController : Controller { } [HttpPost(Name = "Product")] - public void Post(string title, string category, string description, decimal? price, decimal? promoprice, uint? quantity, bool? disc, string imagename) { - Product prod = new() { - Title = title, + public void Post(string title, string category, string description, decimal? price, decimal? promoprice, uint? quantity, string? status, string imagename) { + Product prod = new() { + Title = title, Category = category, Description = description, - Price = price.HasValue? (decimal)price: 0.01M, + Price = price.HasValue ? (decimal)price : 0.01M, PromoPrice = promoprice.HasValue ? (decimal)promoprice : 0.01M, Quantity = quantity.HasValue ? (uint)quantity : 0, ImageName = imagename }; + switch (status) { + case "isAvailable": + prod.Status = Product.States.Available; + break; + case "isUnavailable": + prod.Status = Product.States.Unavailable; + break; + case "isBackOrder": + prod.Status = Product.States.BackOrder; + break; ; + case "isClearance": + prod.Status = Product.States.Clearance; + break; + case "isPromotion": + prod.Status = Product.States.Promotion; + break; + case "isDiscontinued": + prod.Status = Product.States.Discontinued; + break; + default: break; + } + if (prod.Price <= prod.PromoPrice) prod.PromoPrice = prod.Price - 0.01M; @@ -54,6 +77,63 @@ public class ProductController : Controller { [HttpPut(Name = "Product")] public void Put(int id, string title, string category, string description, decimal? price, decimal? promoprice, uint? quantity, string? status, string imagename) { + Product prod = _context.Products.Where(x => x.Id == id).FirstOrDefault(); + + if (prod == new Product()) + Post(title, category, description, price, promoprice, quantity, status, imagename); + else try { + if (title != null || title != "") + prod.Title = title; + + if (category != null || category != "") + prod.Category = category; + + if (description != null || description != "") + prod.Description = description; + + if (price.HasValue || price > 0) + prod.Price = (decimal)price; + + if (promoprice.HasValue || promoprice > prod.Price) + prod.PromoPrice = (decimal)promoprice; + + if (quantity.HasValue) + prod.Quantity = (uint)quantity; + + switch (status) { + case "isAvailable": + prod.Status = Product.States.Available; + break; + case "isUnavailable": + prod.Status = Product.States.Unavailable; + break; + case "isBackOrder": + prod.Status = Product.States.BackOrder; + break; ; + case "isClearance": + prod.Status = Product.States.Clearance; + break; + case "isPromotion": + prod.Status = Product.States.Promotion; + break; + case "isDiscontinued": + prod.Status = Product.States.Discontinued; + break; + default: break; + } + + if (imagename != null || imagename != "") + prod.ImageName = imagename; + + _context.Products.Update(prod); + _context.SaveChanges(); + } catch (Exception e) { + _logger.LogError(8, e.Message); + } + } + + [HttpPatch(Name = "Product")] + public void Patch(int id, string title, string category, string description, decimal? price, decimal? promoprice, uint? quantity, string? status, string imagename) { try { Product prod = _context.Products.Where(x => x.Id == id).First(); @@ -106,65 +186,4 @@ public class ProductController : Controller { _logger.LogError(8, e.Message); } } - - [HttpPatch(Name = "Product")] - public void Patch(int id, string title, string category, string description, decimal? price, decimal? promoprice, uint? quantity, string? status, string imagename) { - try { - Product prod = _context.Products.Where(x => x.Id == id).First(); - - if (title != null) - prod.Title = title; - else prod.Title = ""; - - if (category != null) - prod.Category = category; - else prod.Category = ""; - - if (description != null) - prod.Description = description; - else prod.Description = ""; - - if (promoprice.HasValue || promoprice < prod.Price) - prod.PromoPrice = (decimal)promoprice; - else prod.PromoPrice = prod.Price - 0.01M; - - if (quantity.HasValue) - prod.Quantity = (uint)quantity; - else prod.Quantity = 0; - - switch (status) { - case "isAvailable": - prod.Status = Product.States.Available; - break; - case "isUnavailable": - prod.Status = Product.States.Unavailable; - break; - case "isBackOrder": - prod.Status = Product.States.BackOrder; - break; ; - case "isClearance": - prod.Status = Product.States.Clearance; - break; - case "isPromotion": - prod.Status = Product.States.Promotion; - break; - case "isDiscontinued": - prod.Status = Product.States.Discontinued; - break; - default: - prod.Status = prod.Quantity > 0 ? Product.States.Available : Product.States.Unavailable; - break; - } - - if (imagename != null) - prod.ImageName = imagename; - else prod.ImageName = ""; - - _context.Products.Update(prod); - _context.SaveChanges(); - } catch (Exception e) { - _logger.LogError(8, e.Message); - } - } -} - +} \ No newline at end of file