public async Task <Order> PutOrder(Order t, List <Food> dishes)
        {
            try
            {
                string url = IRES_Global.GlobalInfo.BaseUrl + @"/order/update/id/" + t.orderId;

                PutOrder listOrder = new PutOrder();
                foreach (var item in dishes)
                {
                    listOrder.dishes.Add(new FoodOrder(item));
                }

                var json     = JsonConvert.SerializeObject(listOrder);
                var content  = new StringContent(json, Encoding.UTF8, "application/json");
                var response = await client.PutAsync(url, content);

                if (response.IsSuccessStatusCode)
                {
                    var resContent = await response.Content.ReadAsStringAsync();

                    var data = JsonConvert.DeserializeObject <JsonOrderDetach>(resContent);

                    return(data.Data);
                }
                Console.WriteLine("ERROR: Can't put order");
                return(null);
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERROR: Put Order Error");
                Console.WriteLine(ex.Message);
                return(null);
            }
        }
Example #2
0
        public async Task PutOrderTest()
        {
            var client = new ShippyProClient(token);

            var parms = new PutOrderParams
            {
                to_address = new Address
                {
                    name    = "Clayton Davis",
                    company = "Clayton Davis Ventures",
                    street1 = "C/ L'Aljub, 7",
                    city    = "Marratxi",
                    state   = "Baleares",
                    country = "ES",
                    phone   = "+34555444333",
                    email   = "*****@*****.**"
                },
                parcels = new []
                {
                    new Parcel
                    {
                        length = 10,
                        height = 10,
                        width  = 10,
                        weight = 1
                    }
                },
                TransactionID      = "20731AB3D5F7",
                Date               = ((DateTimeOffset) new DateTime(2020, 7, 31, 4, 56, 34)).ToUnixTimeSeconds(),
                Currency           = "EUR",
                ItemsCount         = 1,
                ContentDescription = "Swimwear",
                Total              = 23.5m,
                Status             = "Paid",
                ShipmentAmountPaid = 23.5m,
                Incoterm           = "DDP",
                ShippingService    = "Economy",
                Note               = "Test"
            };
            var request = new PutOrder
            {
                Params = parms
            };
            var response = await client.PutOrder(request);

            Assert.NotNull(response);
        }
 public async Task <Response> PutOrder(PutOrder request)
 {
     return(await PostAsync <Response>(request));
 }
Example #4
0
        public async Task <ActionResult <OrderDTO> > PutOrder(string id, PutOrder putOrder)
        {
            if (!this.ValidTokenUser(putOrder.AccessToken))
            {
                return(BadRequest(this.GetError(Error.INVALID_TOKEN)));
            }

            if (id == null)
            {
                return(BadRequest(this.GetError(Error.MISSING_ORDER_ID)));
            }
            if (putOrder.OrderProducts == null)
            {
                return(BadRequest(this.GetError(Error.MISSING_ORDER_PRODUCT)));
            }

            var currentUser = this.GetUserByToken(putOrder.AccessToken);
            var orderToPut  = await _context.Orders.Include("OrderProducts").FirstOrDefaultAsync(order => order.OrderId == id);

            if (orderToPut == null)
            {
                return(BadRequest(this.GetError(Error.ORDER_NOT_FOUND)));
            }
            if (!orderToPut.UserId.Equals(currentUser.UserId))
            {
                if (!this.ValidTokenAdmin(putOrder.AccessToken))
                {
                    return(BadRequest(this.GetError(Error.INVALID_TOKEN)));
                }
            }

            List <OrderProduct> orderProducts = new List <OrderProduct>();

            foreach (PutOrderProduct putOrderProduct in putOrder.OrderProducts)
            {
                Product productToOrder = this.GetProductById(putOrderProduct.ProductId);

                if (productToOrder == null)
                {
                    return(BadRequest(this.GetError(Error.PRODUCT_NOT_FOUND)));
                }
                if (putOrderProduct.Quantity == 0)
                {
                    return(BadRequest(this.GetError(Error.MISSING_QUANTITY)));
                }

                OrderProduct orderProduct = new OrderProduct();
                orderProduct.OrderId        = orderToPut.OrderId;
                orderProduct.OrderProductId = Guid.NewGuid().ToString();
                orderProduct.ProductId      = putOrderProduct.ProductId;
                orderProduct.Quantity       = putOrderProduct.Quantity;
                orderProduct.SubTotalPrice  = decimal.Multiply(productToOrder.Price, new decimal(orderProduct.Quantity));
                orderProducts.Add(orderProduct);
                _context.OrderProducts.Add(orderProduct);
            }

            decimal currentTotalPrice = orderToPut.OrderProducts.Sum(orderProduct => orderProduct.SubTotalPrice);
            decimal addPrice          = orderProducts.Sum(orderProduct => orderProduct.SubTotalPrice);
            decimal newTotalPrice     = decimal.Add(currentTotalPrice, addPrice);

            orderToPut.TotalPrice = newTotalPrice;

            if (this.ValidTokenAdmin(putOrder.AccessToken) && putOrder.Status != null)
            {
                orderToPut.Status = putOrder.Status;
            }

            _context.Entry(orderToPut).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }

            OrderDTO orderDTO = new OrderDTO(orderToPut);

            return(orderDTO);
        }