Esempio n. 1
0
        public async Task <ActionResult> Update(int id, OrderDataDTO data)
        {
            var result = await this.Mediator.Send(new UpdateOrderCommand
            {
                Id   = id,
                Data = data
            });

            return(this.Ok(true));
        }
Esempio n. 2
0
        public async Task <ActionResult <Order> > Create(OrderDataDTO data)
        {
            data.Customer = null;
            var result = await this.Mediator.Send(new CreateOrderCommand
            {
                Data = data
            });

            return(ResponseHelper.ResponseOutcome <Order>(result, this));
        }
Esempio n. 3
0
        public static Order Map(this OrderDataDTO dto) =>
        (dto != null) ? new Order
        {
            Amount       = dto.Amount ?? dto.Amount.Value,
            CustomerId   = dto.CustomerId ?? 0,
            Customer     = dto.Customer.Map(),
            DateCreated  = DateTime.Now,
            RestaurantId = dto.RestaurantId ?? 0,
            Completed    = dto.Completed ?? false,
            OrderItems   = dto.OrderItems.Map()
        }

            : null;
Esempio n. 4
0
        public bool PlacedOrder(Guid UserId, OrderDataDTO orderData, OrderVariantDTO order)
        {
            DateTime today = System.DateTime.Now;

            orderData.OrderDate    = today;
            orderData.DeliveryDate = today.AddDays(6);

            int statusid = dbContext.Status.Where(s => s.description == "Progessing").Select(s => s.ID).FirstOrDefault();

            Debug.WriteLine(dbContext.Status.Where(s => s.description == "Progessing").Select(s => s.ID).FirstOrDefault());

            orderData.StatusID = statusid;
            orderData.ID       = Guid.NewGuid();
            Order newOrder = OrderDataMapper.Map <OrderDataDTO, Order>(orderData);

            dbContext.Orders.Add(newOrder);

            //orderplcaed mapping insertion
            OrderPlaced orderPlaced = new OrderPlaced();

            orderPlaced.ID      = Guid.NewGuid();
            orderPlaced.UserID  = UserId;
            orderPlaced.OrderID = orderData.ID;
            ///end

            dbContext.OrderPlaceds.Add(orderPlaced);

            foreach (CartVariantDTO variant in order.ItemOrders.Items)
            {
                OrderPlacedVariant variantData = VariantMapper.Map <CartVariantDTO, OrderPlacedVariant>(variant);
                variantData.ID            = Guid.NewGuid();
                variantData.OrderPlacedID = orderPlaced.ID;
                dbContext.OrderPlacedVariants.Add(variantData);
            }
            foreach (var cartitem in order.ItemOrders.Items)
            {
                dbContext.Variants.FirstOrDefault(p => p.ID == cartitem.VariantID).Inventory    -= cartitem.Quantity;
                dbContext.Variants.FirstOrDefault(p => p.ID == cartitem.VariantID).QuantitySold += cartitem.Quantity;
                dbContext.Categories.FirstOrDefault(c => c.ID == cartitem.Variant.Product.CategoryID).ProductsSold += cartitem.Quantity;
            }

            dbContext.SaveChanges();
            return(true);
        }
Esempio n. 5
0
        /// <summary>
        /// placeorder of user with address id and userId
        /// </summary>
        /// <param name="AddressId"></param>
        /// <param name="UserId"></param>
        /// <returns></returns>
        public bool PlacedOrder(Guid AddressId, Guid UserId)
        {
            VariantDTO variantDTO = new VariantDTO();
            //validation for variant order
            //1.get the cart data
            bool   addressVerfiyed = orderDatabase.IsVerfiyAddress(AddressId, UserId);
            double totalAmount     = 0;

            if (addressVerfiyed)
            {
                try
                {
                    CartsVariantDTO cartsData = cartOrderHelper.GetCartByUserId(UserId);
                    foreach (CartVariantDTO variantAtCart in cartsData.Items)
                    {
                        //2.get each cart varinat data from varinat table
                        variantDTO = cartOrderHelper.GetVariantDetails(variantAtCart.VariantID);
                        //3.check all cart data inventory
                        if (!cartOrderHelper.IsInventoryAvaiable(variantAtCart.Quantity, variantDTO.Inventory))
                        {
                            throw new OutOfStockException();
                        }
                        //3.orderlimit
                        if (!cartOrderHelper.IsUserCanOrder(variantAtCart, variantDTO))
                        {
                            throw new UserOrderLimitExceddException();
                        }
                        variantAtCart.SellingPrice = variantDTO.ListingPrice - variantDTO.Discount;
                        totalAmount = totalAmount + variantAtCart.SellingPrice * variantAtCart.Quantity;
                    }

                    //validation end
                    OrderVariantDTO order = new OrderVariantDTO();
                    order.ItemOrders = cartsData;
                    OrderDataDTO orderData = new OrderDataDTO();
                    orderData.DeliveryAddressID = AddressId;
                    orderData.TotalAmount       = totalAmount;
                    orderData.isCancelled       = "N";
                    bool isOrderPlaced = orderDatabase.PlacedOrder(UserId, orderData, order);
                    if (isOrderPlaced)
                    {
                        foreach (CartVariantDTO variant in cartsData.Items)
                        {
                            Guid Id = variant.ID;
                            bool t  = cartOrderHelper.DeleteCartVariant(Id, UserId);
                        }
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }

                catch (OutOfStockException)
                {
                    return(false);
                }
                catch (UserOrderLimitExceddException)
                {
                    return(false);
                }
                catch (Exception ex)
                {
                    return(false);
                }
            }
            else
            {
                throw new UserDetailIsWrong();
            }
        }
Esempio n. 6
0
 public ViewModels.OrderViewModel CheckOrder(OrderDataDTO orderDto)
 {
     return(new ViewModels.OrderViewModel());
 }