public async Task <IActionResult> addToCart(int userId, [FromBody] AddItemToCartDto itemToCart) { if (itemToCart == null) { return(NotFound()); } if (_context.Carts.Any(c => c.Code == itemToCart.code && c.Name == itemToCart.name && c.SupplierCode == itemToCart.supplier_code && c.CardId == userId && c.SalesPrice == itemToCart.sales_price.ToString())) { //Add new qty to this item var existingItem = _context.Carts.Where(c => c.Code == itemToCart.code && c.Name == itemToCart.name && c.SupplierCode == itemToCart.supplier_code && c.CardId == userId && c.SalesPrice == itemToCart.sales_price.ToString()).FirstOrDefault(); var dQuantity = Convert.ToDouble(existingItem.Quantity); if ((dQuantity + itemToCart.quantity) < 0) { return(BadRequest("qty < 0")); } dQuantity += itemToCart.quantity; existingItem.Quantity = dQuantity.ToString(); //if new qty == 0, remove this item from cart if (dQuantity == 0) { // await deleteFromCart(cardid, existingItem.Id); var itemToRemoveFromCart = new Cart(); itemToRemoveFromCart = _context.Carts.Where(c => c.Id == existingItem.Id && c.CardId == userId).FirstOrDefault(); if (itemToRemoveFromCart == null) { return(NotFound()); } _context.Remove(itemToRemoveFromCart); } await _context.SaveChangesAsync(); //async return(NoContent()); } else { if (itemToCart.quantity <= 0) { return(BadRequest("quantity <= 0")); } var newItem = new Cart(); newItem.CardId = itemToCart.card_id; newItem.Code = itemToCart.code; newItem.Name = itemToCart.name; newItem.Barcode = itemToCart.barcode; newItem.SalesPrice = itemToCart.sales_price.ToString(); newItem.Quantity = itemToCart.quantity.ToString(); newItem.SupplierCode = itemToCart.supplier_code; newItem.Points = itemToCart.points.ToString(); await _context.AddAsync(newItem); await _context.SaveChangesAsync(); return(Ok(newItem)); } }
public async Task <IActionResult> AddItemToCart(AddItemToCartDto data) { try { var ClientIdentityId = User.FindFirstValue(ClaimTypes.NameIdentifier);// will give the user's userId // var ClientIdentityId = User.Identity.GetUserId(); var cartOrderId = (await Db.TblOrders.FirstOrDefaultAsync(c => c.OrderIsOrder == false && c.CreatedBy == ClientIdentityId)); if (cartOrderId == null) { var clientId = (await Db.TblClient.FirstOrDefaultAsync(q => q.IdentityId == ClientIdentityId)).PkClientId; var orderData = new TblOrders { PkOrdersId = data.OrderId = Guid.NewGuid(), OrderDate = data.Order_Date = DateTime.Now, TotalAmount = data.TotalAmount, TotalCost = data.TotalCost, FkClientsOrdersClientId = data.ClientId = clientId, CraetedAt = data.CraetedAt = DateTime.Now, CreatedBy = data.CreatedBy = data.CreatedBy = ClientIdentityId, ModifiedAt = data.ModifiedAt = DateTime.Now, ModifiedBy = data.ModifiedBy = data.ModifiedBy = ClientIdentityId, OrderIsOrder = data.Order_IsOrder = false, IsCancelled = data.IsCancelled = false, IsDeleted = data.IsDeleted = false, OnDelivery = data.OnDelivery = false, OrderIsPaid = data.Order_IsPaid = false, }; await Db.TblOrders.AddAsync(orderData); await Db.SaveChangesAsync(); var orderDetailsData = new TblOrderDetails { PkOrderDetailsId = data.OrderDetailId = Guid.NewGuid(), OrderId = orderData.PkOrdersId, FkItemsId = data.ItemId, CraetedAt = data.CraetedAt = DateTime.Now, CreatedBy = ClientIdentityId, ModifiedAt = data.ModifiedAt = DateTime.Now, ModifiedBy = data.ModifiedBy = ClientIdentityId, Quantity = 1, //?? }; await Db.TblOrderDetails.AddAsync(orderDetailsData); await Db.SaveChangesAsync(); return(Ok(new { message = " Your Order Has Been Placed Successfully :) " })); } else if (cartOrderId != null) { var editeOrder = (await Db.TblOrders.FirstOrDefaultAsync(o => o.PkOrdersId == cartOrderId.PkOrdersId && o.OrderIsOrder != true)); editeOrder.OrderDate = data.Order_Date = DateTime.Now; editeOrder.TotalAmount = data.TotalAmount; editeOrder.TotalCost = data.TotalCost; editeOrder.ModifiedAt = data.ModifiedAt = DateTime.Now; editeOrder.ModifiedBy = data.ModifiedBy = data.ModifiedBy = ClientIdentityId; await Db.SaveChangesAsync(); var orderDetailsData = new TblOrderDetails { PkOrderDetailsId = data.OrderDetailId = Guid.NewGuid(), OrderId = cartOrderId.PkOrdersId, FkItemsId = data.ItemId, CraetedAt = data.CraetedAt = DateTime.Now, CreatedBy = ClientIdentityId, ModifiedAt = data.ModifiedAt = DateTime.Now, ModifiedBy = data.ModifiedBy = ClientIdentityId, Quantity = 1, }; await Db.TblOrderDetails.AddAsync(orderDetailsData); await Db.SaveChangesAsync(); return(Ok(new { message = " Your Order Has Been Placed Successfully :) " })); } else { return(BadRequest(" Something Went Wrong :( ")); } } catch (Exception ex) { return(BadRequest(ex.Message)); } }