コード例 #1
0
        public async Task TestMethod1()
        {
            var x = await CloverClient.CreateOrderAsync(new List <CloverLineItemModel>
            {
                new CloverLineItemModel
                {
                    Name           = "test",
                    PriceInPennies = 12,
                    Printed        = true,
                    UnitQuantity   = 2
                }
            }, "02c5cac5-06ba-c31b-effd-9286db53d8a0", "HS4VTV8MXDMDM", true);

            Console.WriteLine(x.Total);
        }
コード例 #2
0
        public async Task <IHttpActionResult> SubmitOrder(OrderRequestModel model)
        {
            using (var context = new TasteContext())
            {
                var user = context.Users.FirstOrDefault(u => u.UserId == model.UserId);
                if (user == null)
                {
                    return(Ok(GetErrorModel(ApiErrorCode.UserDoesNotExist)));
                }
                var restaurant = context.Restaurants.FirstOrDefault(r => r.Id == model.RestaurantId);
                if (restaurant == null)
                {
                    return(Ok(GetErrorModel(ApiErrorCode.RestaurantDoesNotExist)));
                }


                string orderId;
                var    order = context.Orders.FirstOrDefault(o =>
                                                             !o.Paid && o.RestaurantId == model.RestaurantId && o.UserId == model.UserId);
                if (order != null)
                {
                    orderId = order.OrderId;
                }
                else
                {
                    orderId = $"{user.UserId} {DateTime.Now}";
                    context.Orders.Add(new Order
                    {
                        Datetime     = DateTime.Now,
                        OrderId      = orderId,
                        Paid         = false,
                        RestaurantId = model.RestaurantId,
                        TableName    = model.Table.ToString(),
                        UserId       = user.UserId,
                        Details      = ""
                    });
                }

                var cloverLineItems = new List <CloverLineItemModel>();

                foreach (var i in model.Items)
                {
                    var dish = context.Dishes.FirstOrDefault(d => d.Id == i.DishId);
                    if (dish == null)
                    {
                        continue;
                    }

                    cloverLineItems.Add(new CloverLineItemModel
                    {
                        PriceInPennies = Convert.ToInt32(dish.Price * 100),
                        Name           = dish.Name,
                        Printed        = true,
                        UnitQuantity   = i.Quantity
                    });

                    context.OrderedDishes.Add(new OrderedDish
                    {
                        DishId    = i.DishId,
                        Quantity  = i.Quantity,
                        UserId    = user.UserId,
                        OrderId   = orderId,
                        CuisineId = dish.CuisineId.GetValueOrDefault()
                    });

                    var pref = context.Preferences.FirstOrDefault(p =>
                                                                  p.UserId == user.UserId && p.CuisineId == dish.CuisineId);
                    if (pref != null)
                    {
                        pref.Count += i.Quantity;
                    }
                    else
                    {
                        context.Preferences.Add(new Preference
                        {
                            Count     = i.Quantity,
                            CuisineId = dish.CuisineId,
                            UserId    = user.UserId
                        });
                    }
                }

                //send printing request to clover
                if (!restaurant.AccessToken.IsNullOrWhiteSpace())
                {
                    await CloverClient.CreateOrderAsync(cloverLineItems, restaurant.AccessToken, restaurant.CloverId,
                                                        restaurant.IsSandbox);
                }
                context.SaveChanges();
                return(Ok(orderId));
            }
        }