示例#1
0
        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));
            }
        }
示例#2
0
        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));
            }
        }