From 0dfead8388e6ca7742b062ad3fcafee42f35577c Mon Sep 17 00:00:00 2001 From: surtur Date: Tue, 16 Feb 2021 16:30:45 +0100 Subject: [PATCH] deprecate Product in favour of SimilarProduct --- Areas/Admin/Controllers/ProductController.cs | 46 ++++++++++++------- .../Views/Product/edit-create_part.cshtml | 5 +- Models/Product.cs | 2 +- Models/Similar.cs | 7 ++- Models/SimilarViewModel.cs | 9 ++++ 5 files changed, 48 insertions(+), 21 deletions(-) create mode 100644 Models/SimilarViewModel.cs diff --git a/Areas/Admin/Controllers/ProductController.cs b/Areas/Admin/Controllers/ProductController.cs index 6771209..1f3c32a 100644 --- a/Areas/Admin/Controllers/ProductController.cs +++ b/Areas/Admin/Controllers/ProductController.cs @@ -65,7 +65,13 @@ namespace pwt_0x01_ng.Areas.Admin.Controllers if (item != null) { IList s = await dbctx.Similar.Where(p_item => p_item.prod_id == id).ToListAsync(); - IList similar = product.Products; + IList similar = new List(); + foreach (var prod in product.Products) { + SimilarProduct sp = new SimilarProduct(); + sp.id = prod.id; + sp.Selected = prod.Selected; + similar.Add(sp); + } foreach (var s_item in s) { var prodpls = await dbctx.Product.Where(p_item => p_item.id == s_item.prod_id).FirstOrDefaultAsync(); @@ -78,9 +84,7 @@ namespace pwt_0x01_ng.Areas.Admin.Controllers } } } - if(similar != null){ - item.Similar = similar; - } + item.Similar = similar; ViewData["ImageSrc"] = new SelectList(dbctx.Product, "ImageSrc", item.ImageSrc); return View(item); } @@ -109,18 +113,28 @@ namespace pwt_0x01_ng.Areas.Admin.Controllers item.ImageSrc = product.ImageSrc; } - IList p = product.Similar; - if(p != null){ - foreach (var prod in p) - { - if(prod.Selected){ - Similar s = new Similar(); - s.prod_id = item.id; - s.similar_prod_id = prod.id; - var res = dbctx.Similar.Add(s); - } else { - Similar s = dbctx.Similar.Where(p_item => p_item.prod_id == item.id && p_item.similar_prod_id != prod.id).FirstOrDefault(); - var res = dbctx.Similar.Remove(s); + if (product.Similar != null) { + IList similar = new List(); + foreach (var prod in product.Similar) { + SimilarProduct sp = new SimilarProduct(); + sp.id = prod.id; + sp.Selected = prod.Selected; + similar.Add(sp); + } + if(similar.Count > 0){ + foreach (var prod in similar) + { + if(prod.Selected){ + Similar s = new Similar(); + s.prod_id = item.id; + s.similar_prod_id = prod.id; + var res = dbctx.Similar.Add(s); + } else { + Similar s = dbctx.Similar.Where(p_item => p_item.prod_id == item.id && p_item.similar_prod_id != prod.id).FirstOrDefault(); + if (s != null) { + dbctx.Similar.Remove(s); + } + } } } } diff --git a/Areas/Admin/Views/Product/edit-create_part.cshtml b/Areas/Admin/Views/Product/edit-create_part.cshtml index 856c774..ecaeffb 100644 --- a/Areas/Admin/Views/Product/edit-create_part.cshtml +++ b/Areas/Admin/Views/Product/edit-create_part.cshtml @@ -1,9 +1,10 @@ @using pwt_0x01_ng.Areas.Admin.Controllers; @model Product @{ - IList similar,products; - similar = new List(); + IList products; + IList similar; products = (IList)ViewData["prods"]; + similar = new List(); if((!String.IsNullOrEmpty(ViewBag.Action))||(!String.IsNullOrWhiteSpace(ViewBag.Action))) {
diff --git a/Models/Product.cs b/Models/Product.cs index 1549cde..8db4649 100644 --- a/Models/Product.cs +++ b/Models/Product.cs @@ -24,7 +24,7 @@ namespace pwt_0x01_ng.Models [StringLength(50, ErrorMessage = "{0} length must be between {2} and {1}.", MinimumLength = 1)] public string ImageAlt { get; set; } [NotMapped] - public IList Similar { get; set; } + public IList Similar { get; set; } [NotMapped] public bool Selected { get; set; } } diff --git a/Models/Similar.cs b/Models/Similar.cs index ad71a39..6062921 100644 --- a/Models/Similar.cs +++ b/Models/Similar.cs @@ -4,12 +4,15 @@ using System.ComponentModel.DataAnnotations.Schema; namespace pwt_0x01_ng.Models { [Table(nameof(Similar))] - public class Similar : Entity + public class Similar { + [Required] + [Key] + public int id { get; set; } [Required] public int prod_id { get; set; } [ForeignKey(nameof(Product))] [Required] public int similar_prod_id { get; set; } } -} \ No newline at end of file +} diff --git a/Models/SimilarViewModel.cs b/Models/SimilarViewModel.cs new file mode 100644 index 0000000..5b4482f --- /dev/null +++ b/Models/SimilarViewModel.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace pwt_0x01_ng.Models +{ + public class SimilarViewModel + { + public IList Similar { get; set; } + } +} \ No newline at end of file