public async Task <IActionResult> Add([FromForm] CartItemChangeViewModel model)
        {
            model.ProductId = "ProductId";
            var response = await _cartAppService.Change(model);

            return(Json(response));
        }
Exemple #2
0
        public async Task <CartViewModel> Change(CartItemChangeViewModel item)
        {
            try
            {
                var customer = await _currentContext.GetCurrentCustomer();

                CartViewModel model = new CartViewModel(await InitAjax());
                RCart         cart  = await _cartService.GetFromCache(_currentContext.ClientId, EnumDefine.CartStatusEnum.New);

                if (cart == null)
                {
                    //int shardId= _commonService.get

                    var  command        = item.ToCommand(1, _currentContext.LanguageId, customer.Id);
                    long systemIdentity = await _commonService.GetNextId(typeof(Cart));

                    CartAddCommand cartAddCommand = new CartAddCommand(SystemDefine.DefaultVersion)
                    {
                        LanguageId     = _currentContext.LanguageId,
                        Code           = Common.Common.GenerateCodeFromId(systemIdentity),
                        StoreId        = ConfigSettingEnum.StoreId.GetConfig(),
                        ClientId       = _currentContext.ClientId,
                        CreatedUid     = customer.Id ?? string.Empty,
                        CartItem       = command,
                        CartItemDetail = new CartItemDetailAddCommand(SystemDefine.DefaultVersion)
                        {
                            ProductId = command.ProductId,
                            Name      = "Name",
                        }
                    };
                    await _cartService.Add(cartAddCommand);
                }
                else
                {
                    //if (cart.Version != item.Version)
                    //{
                    //    model.AddMessage(ResourceKey.Cart_IsChanged);
                    //    return model;
                    //}
                    CartItemChangeCommand command = item.ToCommand(1, _currentContext.LanguageId, customer.Id, cart);
                    await _cartService.Change(command);
                }
                cart = await _cartService.GetFromCache(_currentContext.ClientId, EnumDefine.CartStatusEnum.New);

                model.CartItems = cart.CartItemFulls?.Select(p => p.ToModel()).ToArray();
                return(model);
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                throw e;
            }
        }
 public static CartItemAddCommand ToCommand(this CartItemChangeViewModel model, decimal price, string languageId, string createdUid)
 {
     if (model == null)
     {
         return(null);
     }
     return(new CartItemAddCommand(SystemDefine.DefaultVersion)
     {
         Price = price,
         ProductId = model.ProductId,
         Quantity = model.Quantity,
         LanguageId = languageId,
         CreatedUid = createdUid,
         StoreId = ConfigSettingEnum.StoreId.GetConfig(),
     });
 }
 public static CartItemChangeCommand ToCommand(this CartItemChangeViewModel model, decimal price, string languageId, string updatedUid, RCart cart)
 {
     if (model == null)
     {
         return(null);
     }
     return(new CartItemChangeCommand(cart.Version)
     {
         Price = price,
         ProductId = model.ProductId,
         Quantity = model.Quantity,
         LanguageId = languageId,
         CartCode = cart.Code,
         CartId = cart.Id,
         StoreId = ConfigSettingEnum.StoreId.GetConfig(),
         UpdatedUid = updatedUid,
         Action = (EnumDefine.CartActionEnum)model.Action,
         ShardId = cart.ShardId,
         Version = cart.Version,
         CreatedDateUtc = Extensions.GetCurrentDateUtc(),
     });
 }