public ActionResult Put([FromBody] ShopCartRequest value)
        {
            ReturnMessage rm = new ReturnMessage();

            try
            {
                string type     = User.Claims.FirstOrDefault(p => p.Type == "type").Value;
                int    memberId = int.Parse(User.Claims.FirstOrDefault(p => p.Type == "jti").Value);
                string sepc     = value.sepc;
                Guid   tenantId = Guid.Parse(User.Claims.FirstOrDefault(p => p.Type == "tenantId").Value);
                Guid   itemId   = Guid.NewGuid();

                TenantPrd prd      = DataManager.tenantPrdDao.getTenandPrd(value.productId);
                PrdPrice  prdPrice = CTenantPrdManager.getPrdPrice(prd, type, memberId);

                if (!string.IsNullOrEmpty(sepc))
                {
                    sepc = (string)JObject.Parse(sepc).GetValue("code");
                }
                ShopCart shopCart = DataManager.shopCartDao.getShopCartPrd(tenantId, memberId, value.productId, sepc);

                if (shopCart == null)
                {
                    shopCart                = new ShopCart();
                    shopCart.id             = itemId;
                    shopCart.memberId       = memberId;
                    shopCart.productId      = value.productId;
                    shopCart.createTime     = DateTime.Now;
                    shopCart.count          = value.count;
                    shopCart.amount         = prdPrice.price * value.count;
                    shopCart.type           = prdPrice.type;
                    shopCart.tenantId       = tenantId;
                    shopCart.prdSepc        = value.sepc;
                    shopCart.prdCustPriceId = prdPrice.custPriceGradeId;
                    shopCart.priceGradeType = prdPrice.priceGradeType;
                    DataManager.shopCartDao.addItem(shopCart);
                }
                else
                {
                    itemId          = shopCart.id;
                    shopCart.count += value.count;
                    shopCart.amount = prdPrice.price * shopCart.count;
                    DataManager.shopCartDao.updateItem(shopCart);
                }
                rm.code = MessageCode.SUCCESS;
                rm.data = itemId;
            }
            catch (Exception e)
            {
                rm.code = MessageCode.ERROR;
                rm.data = e.Message;
            }
            return(Ok(rm));
        }
Example #2
0
        public async Task <JsonResult <string> > SaveShopCart(ShopCartRequest shopCartRequest)
        {
            var voucher = _mapper.Map <ShopCartRequest, Voucher>(shopCartRequest);
            var time    = DateTime.Now;

            voucher.CreateAt   = time;
            voucher.IsActive   = true;
            voucher.ModifiedAt = time;
            var result = await _unitOfWork.VoucherRepository.AddAsync(voucher, new CartValidator());

            if (!result.IsValid)
            {
                return(new JsonResult <string>(false, null, "Register Error", 4));
            }
            await _unitOfWork.SaveChangesAsync();

            foreach (var item in shopCartRequest.Detail)
            {
                var detail = _mapper.Map <DetailRequest, Detail>(item);
                detail.Discount  = 0;
                detail.VoucherId = voucher.Id;
                var inventory = await _unitOfWork.InventoryRepository.Find(x => x.Id == item.InventoryId).Include(x => x.Product).FirstOrDefaultAsync();

                var invetoryUpdate = await _unitOfWork.InventoryRepository.Find(x => x.Id == item.InventoryId).FirstOrDefaultAsync();

                if (item.Quantity > inventory.Quantity)
                {
                    var resutl = await _unitOfWork.VoucherRepository.DeleteAsync(voucher, new CartValidator());

                    await _unitOfWork.SaveChangesAsync();

                    return(new JsonResult <string>(false, inventory.Product.Name, "Register Error", 4));
                }
                invetoryUpdate.Quantity  -= detail.Quantity;
                invetoryUpdate.ModifiedAt = time;
                var resultUpdate = await _unitOfWork.InventoryRepository.UpdateAsync(invetoryUpdate, new InventoryValidator());

                var resultDetail = await _unitOfWork.DetailRepository.AddAsync(detail, new CartDetailValidator());

                if (!resultDetail.IsValid)
                {
                    return(new JsonResult <string>(false, null, "Register Error", 4));
                }
            }
            await _unitOfWork.SaveChangesAsync();

            return(new JsonResult <string>(true, "Success", "Success", 0));
        }
Example #3
0
        public async Task <IActionResult> AddShopCart([FromBody] ShopCartRequest shopCartRequest)
        {
            var result = await _shopService.SaveShopCart(shopCartRequest);

            return(new OkObjectResult(result));
        }