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)); }
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)); }
public async Task <IActionResult> AddShopCart([FromBody] ShopCartRequest shopCartRequest) { var result = await _shopService.SaveShopCart(shopCartRequest); return(new OkObjectResult(result)); }