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 1/2] 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 From 0461823408dcd1883e1d4a61bcc1b7d889d1ff60 Mon Sep 17 00:00:00 2001 From: Victor Turgeon <76506447+Medenos@users.noreply.github.com> Date: Mon, 17 Oct 2022 23:22:05 -0700 Subject: [PATCH 2/2] Ajout des filtres et image de chargement. --- .../public/images/cat-yarn.gif | Bin 0 -> 66022 bytes .../src/components/ItemList.js | 1 + .../src/components/Sorting.js | 64 ++++++++++ .../grosses-mitaines-ui/src/pages/Morceaux.js | 113 ++++++------------ .../src/stylesheets/site.css | 66 +++++++++- 5 files changed, 167 insertions(+), 77 deletions(-) create mode 100644 GrossesMitaines/grosses-mitaines-ui/public/images/cat-yarn.gif create mode 100644 GrossesMitaines/grosses-mitaines-ui/src/components/Sorting.js diff --git a/GrossesMitaines/grosses-mitaines-ui/public/images/cat-yarn.gif b/GrossesMitaines/grosses-mitaines-ui/public/images/cat-yarn.gif new file mode 100644 index 0000000000000000000000000000000000000000..d167683eac3b8832d39195293ff5661e00e18d02 GIT binary patch literal 66022 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 literal 0 HcmV?d00001 diff --git a/GrossesMitaines/grosses-mitaines-ui/src/components/ItemList.js b/GrossesMitaines/grosses-mitaines-ui/src/components/ItemList.js index 44544e5..2417667 100644 --- a/GrossesMitaines/grosses-mitaines-ui/src/components/ItemList.js +++ b/GrossesMitaines/grosses-mitaines-ui/src/components/ItemList.js @@ -6,6 +6,7 @@ const ItemList = ({ items }) => { return ( <>
+ {items.length <= 0 &&

Aucun morceaux à montrer...

} {items.map((item) => { + + const [currentSort, setSort] = useState("..."); + + return ( + <> + + + {currentSort} + + + + { + setSort("Prix ascendants"); // Mets le nom afficher quand le dropdown est fermé + onChange("Price"); // Trigger le handler pour trier + }}> + Prix ascendants {/*Le nom de l'option*/} + + { + setSort(" Prix déscendants"); + onChange("PriceDesc"); + }}> + Prix déscendants + + { + setSort("Titre a -> z"); + onChange("Title"); + }}> + Titre a -{'>'} z + + { + setSort("Titre z -> a"); + onChange("TitleDesc"); + }}> + Titre z -{'>'} a + + { + setSort("Catégorie a -> z"); + onChange("Category"); + }}> + Catégorie a -{'>'} z + + { + setSort("Catégorie z -> a"); + onChange("CategoryDesc"); + }}> + Catégorie z -{'>'} a + + { + setSort("..."); + onChange(""); + }}> + ... + + + + + ); +} + +export default Sorting; \ No newline at end of file diff --git a/GrossesMitaines/grosses-mitaines-ui/src/pages/Morceaux.js b/GrossesMitaines/grosses-mitaines-ui/src/pages/Morceaux.js index 0352c3f..4efb083 100644 --- a/GrossesMitaines/grosses-mitaines-ui/src/pages/Morceaux.js +++ b/GrossesMitaines/grosses-mitaines-ui/src/pages/Morceaux.js @@ -2,113 +2,76 @@ import { Button } from 'react-bootstrap'; import { useEffect } from "react"; import ItemList from "../components/ItemList"; import { useState } from 'react'; +import Sorting from "../components/Sorting" const Morceaux = (startingProducts) => { - // public enum States { - // Available, - // BackOrder, - // Unavailable, - // Clearance, - // Promotion, - // Discontinued - // } - - // const products = [ - // { - // "id":0, - // "name": "Ceinture flèchée", - // "status": 0, - // "price": 85.86, - // "newPrice": -1, - // "imageUrl": "/images/ceintureflechee.jpg" - // }, - // { - // "id":1, - // "name": "Chandail de nowel", - // "status": 2, - // "price": 69.50, - // "newPrice": -1, - // "imageUrl": "/images/chandailquetaine.jpg" - // }, - // { - // "id":2, - // "name": "Pantoufles du Canadien en Phentex", - // "status": 5, - // "price": 15.64, - // "newPrice": -1, - // "imageUrl": "/images/pantouflesCH.jpg" - // }, - // { - // "id":3, - // "name": "Jean-Luc Mongrain", - // "status": 1, - // "price": 1453.12, - // "newPrice": -1, - // "imageUrl": "/images/jeanlucmongrain.jpg" - // }, - // { - // "id":4, - // "name": "Mitaines de laine", - // "status": 4, - // "price": 24.99, - // "newPrice": 19.99, - // "imageUrl": "/images/mitaines.jpg" - // }, - // { - // "id":5, - // "name": "Sous-vêtements coquins", - // "status": 3, - // "price": 19.99, - // "newPrice": 14.99, - // "imageUrl": "/images/kokin.jpg" - // }, - // { - // "id":6, - // "name": "Doudou douce et grise", - // "status": 3, - // "price": 99.99, - // "newPrice": 89.99, - // "imageUrl": "/images/doudou.jpg" - // } - // ]; - useEffect(() => { document.title = 'Morceaux'; }); const [products, setProducts] = useState([]); + const [isLoading, setIsLoading] = useState(false); - + var order = ""; + var filterPrice = ""; + var filterState = ""; const handleNextItems = async () => { var url; if (products.length > 0) - url = `https://localhost:7292/api/Inventory?lastId=${products[products.length - 1].id}`; + url = `https://localhost:7292/api/Inventory?lastId=${products[products.length - 1].id}&order=${order}&filterPrice=${filterPrice}&filterState=${filterState}`; else - url = 'https://localhost:7292/api/Inventory' + url = `https://localhost:7292/api/Inventory?order=${order}&filterPrice=${filterPrice}&filterState=${filterState}` + setIsLoading(true); + const response = await fetch(url); + const json = await response.json(); + + //TODO: regler bug qui permet d'avoir des duplicats (trouver une façon de skipper les duplicats) + if (json.length > 0) + setProducts([...products, ...json]); + + setIsLoading(false); + + } + + const handleOrder = async (sortBy) => { + + order = sortBy; + var url = `https://localhost:7292/api/Inventory?order=${order}&filterPrice=${filterPrice}&filterState=${filterState}`; + setIsLoading(true); const response = await fetch(url); const json = await response.json(); if (json.length > 0) - setProducts([...products, ...json]); + setProducts([...json]); + setIsLoading(false); + } + const handleFilterPrice = async () => { + + } + const handleFilterState = async () => { } return ( - <> +
+
+ +
- {/* faire un spinner qui tourne quand ça load */} +
+
- +
); } diff --git a/GrossesMitaines/grosses-mitaines-ui/src/stylesheets/site.css b/GrossesMitaines/grosses-mitaines-ui/src/stylesheets/site.css index 52acbdc..ca4ff54 100644 --- a/GrossesMitaines/grosses-mitaines-ui/src/stylesheets/site.css +++ b/GrossesMitaines/grosses-mitaines-ui/src/stylesheets/site.css @@ -353,7 +353,7 @@ html { .btn-primary{ background-color: purple; - color:beige; + color:white; border-color: darkslateblue; } @@ -369,10 +369,36 @@ html { margin-right: auto; margin-top:10px; margin-bottom: 10px; - width:85%; + width:30%; } +.sorting-dropdown{ + width:fit-content; + margin:auto; + float:right; +} +.sorting-container{ + width:100%; + float:right; + margin-right:5%; + margin-left:5%; + margin-top:15px; + margin-bottom:15px; +} + +.cat-load{ + display:block; + margin:auto; + width:auto; + background-image: url("/public/images/cat-yarn.gif"); + background-repeat: no-repeat; + background-color: white; + background-size: contain; + background-position: center; + mix-blend-mode: multiply; + height:200px; +} /* -------------------------------------------------------- */ /* specification pour les moyennes écrans /* -------------------------------------------------------- */ @@ -380,6 +406,38 @@ html { .item{ width:45%; } + + .btn-load-more{ + width:45%; + } + + .sorting-dropdown{ + + width:100%; + float:none; + } + + .sorting-dropdown button{ + height:60px !important; + width: 100% !important; + font-size: larger; + } + + .sorting-container{ + width: 90%; + float:none; + } + + .sorting-menu{ + width: 100%; + } + + .sorting-menu a { + font-size: larger; + height: 50px; + background-color: beige; + border: 2px white solid; + } } @@ -393,6 +451,10 @@ html { width:85%; } + .btn-load-more{ + width:85%; + } + .featured-img { border: 5px purple double; width: 100%;