Пример #1
0
        public MessageModel UpdateSingleEntity(ProductBaseModel model)
        {
            Func <IEntityContext, string> operation = delegate(IEntityContext context)
            {
                var data = context.ProductBase.FirstOrDefault(m => m.ProductID == model.ProductID);
                if (data == null)
                {
                    return("当前数据不存在或被更新,请刷新后再次操作!");
                }
                data.ProductName   = model.ProductName;
                data.ClassID       = model.ClassID;
                data.ClassName     = model.ClassName;
                data.ProductCode   = model.ProductCode;
                data.ProductSpcID  = model.ProductSpcID;
                data.ProductTypeID = model.ProductTypeID;
                data.Weight        = model.Weight;
                data.PinYinCode    = model.PinYinCode;
                data.Price         = model.Price;
                data.Remark        = model.Remark;
                data.IsLocked      = model.IsLocked;
                data.IsShow        = model.IsShow;
                data.ModifyID      = 1;
                data.ModifyName    = "Admin";
                data.ModifyTime    = DateTime.Now;

                context.SaveChanges();
                return(string.Empty);
            };

            return(base.DbOperation(operation));
        }
Пример #2
0
        public int AddNew(string code, int seed, decimal price = decimal.Zero)
        {
            using (var context = new StoreDbContext(DbContextOptions))
            {
                var controller = CreateController(context);

                var addProductModel = new ProductBaseModel()
                {
                    Code          = code,
                    Description   = $"{code} DESC1",
                    UnitId        = 1,
                    ProductTypeId = 1,
                    Price         = price != decimal.Zero ? price : Convert.ToDecimal(new Random(seed).Next(20, 100)),
                    NextDelivery  = DateTime.UtcNow.AddDays(new Random(seed).Next(0, 31)),
                    Categories    = new List <int>(new[] { 4 })
                };

                var result = controller.Add(addProductModel).GetAwaiter().GetResult();

                var createdAtResult = result.Should().BeOfType <CreatedAtActionResult>().Subject;
                var product         = createdAtResult.Value.Should().BeAssignableTo <ProductModel>().Subject;

                Assert.True(product.Id > 0);
                return(product.Id);
            }
        }
Пример #3
0
        public ProductViewModel UpdateProduct(string code, ProductBaseModel model)
        {
            var product = _unitOfWork.Repository <ProductEntity>()
                          .Set
                          .FirstOrDefault(x => x.Code == code);

            if (product == null)
            {
                throw null;
            }

            product.Name        = model.Name;
            product.Description = model.Description;
            product.Category    = model.Category;
            product.Price       = model.Price;
            _unitOfWork.SaveChanges();

            return(new ProductViewModel()
            {
                Code = product.Code,
                Name = product.Name,
                Description = product.Description,
                Category = product.Category,
                Price = product.Price
            });
        }
Пример #4
0
        public void Edit_OK()
        {
            int addeddId = AddNew("EDIT_TEST_OK", 4321);

            using (var context = new StoreDbContext(DbContextOptions))
            {
                var controller = CreateController(context);

                var editProductModel = new ProductBaseModel()
                {
                    Code          = "TEST_EDIT_OK",
                    Description   = "New description",
                    UnitId        = 2,
                    ProductTypeId = 1,
                    Price         = 20,
                    NextDelivery  = DateTime.UtcNow.AddDays(14),
                    Categories    = new List <int>(new[] { 1, 2, 3 })
                };


                var editResult = controller.Update(addeddId, editProductModel).GetAwaiter().GetResult();

                var editedAtResult = editResult.Should().BeOfType <CreatedAtActionResult>().Subject;
                var updatedProduct = editedAtResult.Value.Should().BeAssignableTo <ProductModel>().Subject;

                Assert.Equal("New description", updatedProduct.Description);
                Assert.Equal(2, updatedProduct.UnitId);

                Assert.True(updatedProduct.Categories.All(c => c == 1 || c == 2 || c == 3));
            }
        }
Пример #5
0
        public IActionResult Create([FromBody] ProductBaseModel product)
        {
            if (product == null)
            {
                return(BadRequest("product is null"));
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var result = _productService.Create(product);

            if (result.IsSuccess)
            {
                var data = new
                {
                    ProductId = long.Parse(result.Message),
                    product.ProductName,
                    product.Description,
                    product.Price,
                    product.CategoryId
                };
                return(CreatedAtRoute("GetProduct", new { id = data.ProductId }, data));
            }
            return(BadRequest(result));
        }
        public ReturnViewModel Create(ProductBaseModel model)
        {
            var result = new ReturnViewModel();

            if (!model.CategoryId.HasValue)
            {
                result.Message = "CategoryId is null ?";
                return(result);
            }
            var entity = new Product
            {
                Name        = model.ProductName,
                Description = model.Description,
                Price       = model.Price,
                Seq         = model.Seq,
                CategoryId  = model.CategoryId.Value,
                AddedOn     = DateTime.Now.Date,
            };

            try
            {
                _repository.Create(entity);
            }
            catch (Exception ex)
            {
                result.Message = ex.Message;
                return(result);
            }
            result.Message   = entity.Id.ToString();
            result.IsSuccess = true;
            return(result);
        }
Пример #7
0
        public ICollection <ProductToCategory> Resolve(ProductBaseModel source, Product destination, ICollection <ProductToCategory> destMember, ResolutionContext context)
        {
            var result = new List <ProductToCategory>(source.Categories.Select(c => new ProductToCategory(destination, c)));

            destination.Categories.Clear();
            result.ForEach(x => destination.Categories.Add(x));
            return(result);
        }
Пример #8
0
        public ActionResult Create(ProductBaseModel productBaseModel)
        {
            var result = productBaseService.InsertSingleProductBase(productBaseModel);
            var flag   = result.Status == MessageStatus.Success ? true : false;
            var msg    = result.Message;

            return(Json(new { flag = flag, msg = msg }));
        }
Пример #9
0
        public int Save(ProductBaseModel model)
        {
            foreach (var productModel in model.Products)
            {
                productModel.Prices = productModel.Prices.Where(p => p.UnitPrice != 0).ToList();
            }

            var productBase = (model.IsNew ? Add(model) : Update(model));

            return(productBase.ProductBaseId);
        }
Пример #10
0
        public IActionResult OnPost()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            Product = _marketService.CreateProduct(Product);

            return(RedirectToPage("./Index"));
        }
Пример #11
0
        public void ProcessOrder(ProductBaseModel productModel = null)
        {
            Console.WriteLine("Payment recieved for Video");

            if (productModel.Name == "Learning to ski")
            {
                _packageable.GeneratePackagingSlip("Learning to Ski Video and First aid");
            }
            else
            {
                _packageable.GeneratePackagingSlip("Video");
            }
        }
Пример #12
0
        private ProductBase Add(ProductBaseModel model)
        {
            using (var context = _contextFactory.CreateContext())
            {
                var productBase = model.MapTo <ProductBase>();
                productBase.CreatedOn = DateTime.Now;

                context.Add(productBase);
                context.SaveChanges();

                return(productBase);
            }
        }
Пример #13
0
        public MessageModel InsertSingleEntity(ProductBaseModel model)
        {
            Func <IEntityContext, string> operation = delegate(IEntityContext context)
            {
                model.ModifyID   = UserManagement.CurrentUser.UserID;
                model.ModifyName = UserManagement.CurrentUser.UserName;
                model.ModifyTime = DateTime.Now;
                context.ProductBase.Add(model);
                context.SaveChanges();
                return(string.Empty);
            };

            return(base.DbOperation(operation));
        }
Пример #14
0
        static void Main(string[] args)
        {
            string repeat;

            do
            {
                string input;  string subInput;
                DisplayClientUI(out input, out subInput);
                ProductBaseModel model = ProcessUserInput(input, subInput);
                product?.ProcessOrder(model);
                Console.WriteLine("If you want to repeat, press Y");
                repeat = Console.ReadLine();
            } while (repeat.ToLower().Equals("y"));
        }
Пример #15
0
 public void ProcessOrder(ProductBaseModel productModel = null)
 {
     if (productModel is MembershipModel)
     {
         MembershipModel membershipModel = productModel as MembershipModel;
         if (membershipModel.IsUpgrade)
         {
             Console.WriteLine("Payment recieved to Upgrade Membership");
             _notification.SendEmail("Email membership upgraded");
         }
         else if (membershipModel.IsActivation)
         {
             Console.WriteLine("Payment recieved to Activate Membership");
             _notification.SendEmail("Email membership activated");
         }
     }
 }
        public void Populatelookups(ProductBaseModel model)
        {
            //Fill CategoryList
            var categoryList = _repository.AllCategories();
            var cList        = categoryList.Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.CategoryId.ToString()
            }).ToArray();

            //Fill SubCategoryList
            var subcategoryList = _repository.AllSubcateCategories();
            var scList          = subcategoryList.Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.SubCategoryId.ToString()
            }).ToArray();

            model.CategoryList    = cList;
            model.SubcategoryList = scList;
        }
Пример #17
0
        public OrderProductsModel ConvertToOrderHeaderModel(OrderProduct m)
        {
            var product = new ProductBaseModel();

            if (m.Product != null)
            {
                product = ConvertToProductBaseModel(m.Product);
            }
            return(new OrderProductsModel
            {
                Amount = m.Amount,
                ProductId = m.ProductId,
                Price = m.Price,
                IsDelete = m.IsDelete,
                OrderId = m.OrderId,
                Quantity = m.Quantity,
                Id = m.Id,
                Discount = m.Discount,
                Product = product
            });
        }
Пример #18
0
        public ProductViewModel CreateProduct(ProductBaseModel model)
        {
            var newProduct = new ProductEntity()
            {
                Code        = Guid.NewGuid().ToString("N"),
                Name        = model.Name,
                Description = model.Description,
                Category    = model.Category,
                Price       = model.Price
            };

            _unitOfWork.Repository <ProductEntity>().Insert(newProduct);
            _unitOfWork.SaveChanges();

            return(new ProductViewModel()
            {
                Code = newProduct.Code,
                Name = newProduct.Name,
                Description = newProduct.Description,
                Category = newProduct.Category,
                Price = newProduct.Price
            });
        }
Пример #19
0
 public void ProcessOrder(ProductBaseModel productModel = null)
 {
     Console.WriteLine("Payment recieved for Book");
     _packageable.GeneratePackagingSlip("Book", 2);
     _agentCommission.GenerateCommissionPaymentToAgent();
 }
Пример #20
0
 /// <summary>
 /// 新增单条ProductBase
 /// </summary>
 /// <param name="model">地块信息实体</param>
 /// <returns></returns>
 public MessageModel InsertSingleProductBase(ProductBaseModel model)
 {
     return(productBaseAccess.InsertSingleEntity(model));
 }
 public void Init([NotNull] ModelContainer modelContainer)
 {
     Platform = modelContainer.Get <PlatformBase>(_platformId);
     Product  = modelContainer.Get <ProductBaseModel>(_productId);
 }
Пример #22
0
 /// <summary>
 /// 编辑单条ProductBase
 /// </summary>
 /// <param name="model">地块信息实体</param>
 /// <returns></returns>
 public MessageModel UpdateSingleProductBase(ProductBaseModel model)
 {
     return(productBaseAccess.UpdateSingleEntity(model));
 }
Пример #23
0
        /// <summary>
        /// Gets the prod list.
        /// </summary>
        /// <returns>The prod list.</returns>
        /// <param name="rq">Rq.</param>
        //1.取得商品列表
        public static SearchProductModel GetProdList(SearchRQModel rq)
        {
            SearchProductModel      prod = new SearchProductModel();
            List <ProductBaseModel> pLst = new List <ProductBaseModel>();

            try {
                JObject obj = SearchProxy.GetProdList(rq);

                Metadata md = new Metadata();

                DataModel.Discount.DiscountRuleModel disc = null;

                #region --1.取回傳資料是否成功的訊息、統計用資訊--

                md.result     = obj["metadata"]["status"].ToString();
                md.result_msg = obj["metadata"]["desc"].ToString();

                prod.metadata = md;
                #endregion

                //如果狀態為0000  表示搜尋沒問題  才繼續滿足商品欄位
                if (md.result == "0000")
                {
                    #region --2.從傑森物件取『商品列表』--
                    JArray jsonPlst = (JArray)obj["data"]["prods"];

                    int countBlackProd = 0;//計算黑名單筆數

                    for (int i = 0; i < jsonPlst.Count; i++)
                    {
                        var model = new ProductBaseModel();

                        string prod_no = jsonPlst[i]["id"].ToString();

                        //抓商品是否為黑名單
                        bool isBlack = DiscountRepository.GetProdBlackWhite(prod_no);

                        //表示該商品為白名單 需要綁入列表中 (黑名單的就不綁了)
                        if (isBlack != true)
                        {
                            model.prod_no           = Convert.ToInt32(prod_no);
                            model.prod_name         = jsonPlst[i]["name"].ToString();
                            model.b2d_price         = DiscountRepository.GetCompanyDiscPrice(Int64.Parse(rq.company_xid), (double)jsonPlst[i]["price"], prod_no, jsonPlst[i]["main_cat_key"].ToString(), ref disc); //分銷價
                            model.b2c_price         = (double)jsonPlst[i]["sale_price"];                                                                                                                            //直客價
                            model.display_ref_price = jsonPlst[i]["display_price"].ToString();

                            model.prod_currency   = jsonPlst[i]["currency"].ToString();
                            model.prod_img_url    = jsonPlst[i]["img_url"].ToString();
                            model.rating_count    = (int)jsonPlst[i]["rating_count"];
                            model.avg_rating_star = (double)jsonPlst[i]["rating_star"];
                            model.instant_booking = (bool)jsonPlst[i]["instant_booking"];
                            model.order_count     = (int)jsonPlst[i]["order_count"];
                            model.days            = (int)jsonPlst[i]["days"];
                            model.hours           = (int)jsonPlst[i]["hours"];
                            model.introduction    = jsonPlst[i]["introduction"].ToString();
                            model.duration        = (int)jsonPlst[i]["duration"];
                            //model.display_price_usd = jsonPlst[i]["display_price_usd"].ToString();
                            //model.price_usd = (double)jsonPlst[i]["price_usd"];
                            model.prod_type = jsonPlst[i]["main_cat_key"].ToString();
                            model.tag       = jsonPlst[i]["cat_key"].ToObject <string[]>();//把傑森物件轉成字串陣列


                            //取國家,城市
                            List <Country> country =
                                ((JArray)jsonPlst[i]["countries"])
                                .Select(x => new Country {
                                id     = (string)x["id"],
                                name   = (string)x["name"],
                                cities = x["cities"].ToObject <List <City> >()
                            }).ToList();

                            model.countries = country;

                            pLst.Add(model);
                        }
                        else
                        {
                            countBlackProd++;
                        }

                        //頁數、筆數統計
                        md.total_count = (int)obj["metadata"]["pagination"]["total_count"] - countBlackProd; //商品總筆數 扣掉黑名單筆數
                        md.start       = (int)obj["metadata"]["pagination"]["start"];                        //從第?筆開始
                        md.count       = (int)obj["metadata"]["pagination"]["count"];                        //一頁?筆商品

                        prod.metadata = md;

                        //stats 金額統計
                        if (rq.stats != null)
                        {
                            Stats s = new Stats();
                            s.price = new Price()
                            {
                                min      = (int)obj["data"]["stats"]["price"]["min"],
                                max      = (int)obj["data"]["stats"]["price"]["max"],
                                count    = (int)obj["data"]["stats"]["price"]["count"],
                                currency = obj["data"]["stats"]["price"]["currency"].ToString()
                            };
                            prod.stats = s;
                        }

                        //facets 大分類 小分類 ...的統計
                        if (rq.facets != null)
                        {
                            Facets f = new Facets();

                            //大分
                            if (rq.facets.Where(x => x.Equals("cat_main")).Count() == 1)
                            {
                                List <CatMain> cm =
                                    ((JArray)obj["data"]["facets"]["cat_main"])
                                    .Select(x => new CatMain {
                                    id    = (string)x["id"],
                                    name  = (string)x["name"],
                                    sort  = (string)x["sort"],
                                    count = (int)x["count"]
                                }).ToList();

                                f.cat_main = cm;
                            }

                            //小分
                            if (rq.facets.Where(x => x.Equals("cat")).Count() == 1)
                            {
                                List <Cat> ca =
                                    ((JArray)obj["data"]["facets"]["cat"])
                                    .Select(x => new Cat {
                                    id    = (string)x["id"],
                                    name  = (string)x["name"],
                                    sort  = (string)x["sort"],
                                    count = (int)x["count"]
                                }).ToList();

                                f.cat = ca;
                            }


                            if (rq.facets.Where(x => x.Equals("total_time")).Count() == 1)
                            {
                                List <TotalTime> tt =
                                    ((JArray)obj["data"]["facets"]["total_time"])
                                    .Select(x => new TotalTime {
                                    time  = (int)x["time"],
                                    count = (int)x["count"]
                                }).ToList();

                                f.total_time = tt;
                            }

                            if (rq.facets.Where(x => x.Equals("guide_lang")).Count() == 1)
                            {
                                List <GuideLang> gl =
                                    ((JArray)obj["data"]["facets"]["guide_lang"])
                                    .Select(x => new GuideLang {
                                    id    = (string)x["id"],
                                    name  = (string)x["name"],
                                    count = (int)x["count"]
                                }).ToList();

                                f.guide_lang = gl;
                            }

                            //可販售日期
                            if (rq.facets.Where(x => x.Equals("sale_dt")).Count() == 1)
                            {
                                List <SaleDt> sd =
                                    ((JArray)obj["data"]["facets"]["sale_dt"])
                                    .Select(x => new SaleDt {
                                    id    = (int)x["id"],
                                    count = (int)x["count"]
                                }).ToList();

                                f.sale_dt = sd;
                            }

                            prod.facets = f;
                        }
                    }

                    prod.prods = pLst;
                    #endregion
                }
            } catch (Exception ex) {
                Website.Instance.logger.FatalFormat($"getProdLst  Error :{ex.Message},{ex.StackTrace}");

                throw ex;
            }

            return(prod);
        }
Пример #24
0
        private ProductBase Update(ProductBaseModel model)
        {
            using (var context = _contextFactory.CreateContext())
            {
                var existingProductBase = context.ProductBases
                                          .Include(pb => pb.ProductVariationsLink)
                                          .Include(pb => pb.Products).ThenInclude(p => p.ProductSource)
                                          .Include(pb => pb.Products).ThenInclude(p => p.ProductDestination)
                                          .Include(pb => pb.Products).ThenInclude(p => p.Prices)
                                          .FirstOrDefault(pb => pb.ProductBaseId == model.ProductBaseId);

                context.Entry(existingProductBase).CurrentValues.SetValues(model);

                //ProductVariationsLink
                foreach (var variationLink in existingProductBase.ProductVariationsLink)
                {
                    if (!model.ProductVariationsLink.Any(v => v.ProductBaseProductVariationId == variationLink.ProductBaseProductVariationId))
                    {
                        existingProductBase.ProductVariationsLink.Remove(variationLink);
                    }
                }

                foreach (var variationLinkModel in model.ProductVariationsLink)
                {
                    var variationLink = existingProductBase.ProductVariationsLink
                                        .FirstOrDefault(v => v.ProductBaseProductVariationId == variationLinkModel.ProductBaseProductVariationId);
                    if (variationLink == null)
                    {
                        existingProductBase.ProductVariationsLink.Add(variationLinkModel.MapTo <ProductBaseProductVariation>());
                    }
                    else
                    {
                        context.Entry(variationLink).CurrentValues.SetValues(variationLinkModel);
                    }
                }

                //Products
                foreach (var existingProduct in existingProductBase.Products)
                {
                    if (!model.Products.Any(p => p.ProductId == existingProduct.ProductId))
                    {
                        existingProductBase.Products.Remove(existingProduct);
                    }
                }

                foreach (var productModel in model.Products)
                {
                    var existingProduct = existingProductBase.Products.FirstOrDefault(p => p.ProductId == productModel.ProductId);

                    if (existingProduct != null)
                    {
                        context.Entry(existingProduct).CurrentValues.SetValues(productModel);

                        //ProductSource
                        if (existingProduct.ProductSource != null || productModel.ProductSource != null)
                        {
                            if (existingProduct.ProductSource != null && productModel.ProductSource != null)
                            {
                                if (productModel.ProductSource.ProductSourceId == 0)
                                {
                                    existingProduct.ProductSource = productModel.ProductSource.MapTo <ProductSource>();
                                }
                                else
                                {
                                    context.Entry(existingProduct.ProductSource).CurrentValues.SetValues(productModel.ProductSource);
                                }
                            }
                            else if (existingProduct.ProductSource == null)
                            {
                                existingProduct.ProductSource = productModel.ProductSource.MapTo <ProductSource>();
                            }
                            else
                            {
                                existingProduct.ProductSource = null;
                            }
                        }

                        //ProductDestination
                        if (existingProduct.ProductDestination != null || productModel.ProductDestination != null)
                        {
                            if (existingProduct.ProductDestination != null && productModel.ProductDestination != null)
                            {
                                if (productModel.ProductDestination.ProductDestinationId == 0)
                                {
                                    existingProduct.ProductDestination = productModel.ProductDestination.MapTo <ProductDestination>();
                                }
                                else
                                {
                                    context.Entry(existingProduct.ProductDestination).CurrentValues.SetValues(productModel.ProductDestination);
                                }
                            }
                            else if (existingProduct.ProductDestination == null)
                            {
                                existingProduct.ProductDestination = productModel.ProductDestination.MapTo <ProductDestination>();
                            }
                            else
                            {
                                existingProduct.ProductDestination = null;
                            }
                        }

                        //Prices
                        foreach (var price in existingProduct.Prices)
                        {
                            if (!productModel.Prices.Any(p => p.PriceId == price.PriceId))
                            {
                                existingProduct.Prices.Remove(price);
                            }
                        }

                        foreach (var priceModel in productModel.Prices)
                        {
                            var existingPrice = existingProduct.Prices.FirstOrDefault(p => p.PriceId == priceModel.PriceId);

                            if (existingPrice == null)
                            {
                                existingProduct.Prices.Add(priceModel.MapTo <Price>());
                            }
                            else
                            {
                                context.Entry(existingPrice).CurrentValues.SetValues(priceModel);
                            }
                        }
                    }
                    else
                    {
                        existingProductBase.Products.Add(productModel.MapTo <Product>());
                    }
                }

                context.Update(existingProductBase);

                context.SaveChanges();

                return(existingProductBase);
            }
        }