public async Task <IActionResult> PostOrder(OrderPost order)
        {
            // Prepare
            var orderDTO = new OrderDTO();

            orderDTO.Products = order.Products;
            var customer = store.customers.FirstOrDefault(c => c.CustomerId == order.CustomerId);

            foreach (var product in orderDTO.Products)
            {
                customer.LifeTimeValue += product.UnitPrice * 1;
            }
            customer.OrderCount++;
            orderDTO.Customer = customer;

            // Post to Orders
            using (var client = new HttpClient())
            {
                var url           = $"https://localhost:{Mappings.addresses["orders"]}/api/orders";
                var json          = JsonConvert.SerializeObject(orderDTO);
                var stringContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
                var response      = await client.PostAsync(url, stringContent);

                response.EnsureSuccessStatusCode();

                string content = await response.Content.ReadAsStringAsync();

                return(Ok("Sent to !"));
            }
        }
Exemplo n.º 2
0
        //Uses the summary order number to retrieve the order object from ShipStation API
        //so that the order object to be returned will have the orderId
        public static string GetOrderByOrderNumber(RestClient RestClient, ShippingSummary Summary)
        {
            Console.WriteLine("Grabbing Order by Order Number : {0}", Summary.Order_No);
            try
            {
                RestRequest rrGetOrder = new RestRequest("orders", Method.GET);
                rrGetOrder.AddParameter("orderNumber", Summary.Order_No);
                IRestResponse responseOrder = RestClient.Execute(rrGetOrder);
                JObject       o             = JObject.Parse(responseOrder.Content);
                int           orderId       = int.Parse(o["orders"][0]["orderId"].ToString());

                //make a new object to mark as shipped
                OrderPost order = new OrderPost {
                    orderId            = orderId,
                    trackingNumber     = Summary.Tracking,
                    shipDate           = Summary.Ship_Date,
                    carrierCode        = "usps",
                    notifyCustomer     = true,
                    notifySalesChannel = true
                };
                Thread.Sleep(500);
                return(JsonConvert.SerializeObject(order));
            }
            catch (Exception ex)
            {
                return("An Error Has Occured " + ex.ToString());
            }
        }
Exemplo n.º 3
0
 public IActionResult AddOrder(OrderPost orderPost)
 {
     try
     {
         var order = new Order();
         order.Customer = new Customer {
             CustomerEmail = orderPost.Customer.Email,
             CustomerId    = orderPost.Customer.CustomerId,
             CustomerName  = orderPost.Customer.Name
         };
         order.PlacedOn = DateTime.Now;
         order.OrderId  = store.orders.Count + 1;
         order.Items    = new List <OrderItem>();
         foreach (var item in orderPost.Products)
         {
             var orderItem = new OrderItem()
             {
                 ItemId = 1000, ProductName = item.Name, Quantity = 1, UnitPriceInRupees = item.UnitPrice
             };
             order.Items.Add(orderItem);
         }
         store.orders.Add(order);
         return(Ok());
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
Exemplo n.º 4
0
        public ActionResult Post(OrderPost orderPost)
        {
            var order = _mapper.Map <Order>(orderPost);

            _orders.AddOrder(order);
            return(Ok());
        }
Exemplo n.º 5
0
        public async Task <IActionResult> AddOrder(OrderPost order)
        {
            string userId = User.Claims.First(c => c.Type == "UserId").Value;
            var    user   = await _userManager.FindByIdAsync(userId);

            var O = new Order();

            O.Owner = user;
            foreach (Phone p in order.ListPhones)
            {
                var phone = _db.Phones.FirstOrDefault(x => x.PhoneName == p.PhoneName);
                if (phone == null)
                {
                    return(BadRequest());
                }
                else
                {
                    OrderPhone orderPhone = new OrderPhone();
                    orderPhone.Phone = phone;
                    orderPhone.Order = O;
                    _db.OrderPhones.Add(orderPhone);
                }
            }

            _db.Orders.Add(O);
            _db.SaveChanges();
            return(Ok(O));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Description,ArticleId,Quantity,Price,Total")] OrderPost orderPost)
        {
            if (id != orderPost.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(orderPost);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OrderPostExists(orderPost.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ArticleId"] = new SelectList(_context.Article, "Id", "Id", orderPost.ArticleId);
            return(View(orderPost));
        }
Exemplo n.º 7
0
        public async Task <IActionResult> PostOrder([FromBody] OrderPost order)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var result = await _orderServices.PostOrder(order);

            return(Ok(result));
        }
Exemplo n.º 8
0
        public async Task <IActionResult> Create([Bind("Id,Description,ArticleId,Quantity,Price,Total")] OrderPost orderPost)
        {
            if (ModelState.IsValid)
            {
                _context.Add(orderPost);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ArticleId"] = new SelectList(_context.Article, "Id", "Id", orderPost.ArticleId);
            return(View(orderPost));
        }
Exemplo n.º 9
0
        public IActionResult PostOrder([FromForm] OrderPost orderPost)
        {
            var order = new Order
            {
                UserId      = _cookies.UserId,
                Total       = _cookies.Cart.Amount,
                Description = orderPost.Description,
                FirstName   = orderPost.FirstName,
                LastName    = orderPost.LastName,
                Address     = orderPost.Address,
                CreatedOn   = DateTime.Now,
                Products    = JsonConvert.SerializeObject(_cookies.Cart.Items)
            };

            _context.Orders.Add(order);
            _context.SaveChanges();
            _cookies.Remove(CookiesName.Cart);
            return(RedirectPermanent(Routing.AccountIndex));
        }
        public async Task <IActionResult> PostOrder(OrderPost order)
        {
            // Post to Product
            using (var client = new HttpClient())
            {
                var url           = $"https://localhost:{Mappings.addresses["products"]}/api/products/order";
                var json          = JsonConvert.SerializeObject(order);
                var stringContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
                var response      = await client.PostAsync(url, stringContent);

                response.EnsureSuccessStatusCode();

                string content = await response.Content.ReadAsStringAsync();

                return(Ok("Posted Order!"));
            }
            // Get a query that gets the ordersThatMatch CustomerId
            //return Ok();
        }
Exemplo n.º 11
0
        public async Task <IActionResult> PostOrder(OrderPost order)
        {
            // Prepare
            var orderDTO = new OrderDTO();

            orderDTO.products = new List <Product>();
            foreach (var productId in order.ProductIds)
            {
                var product = store.products.FirstOrDefault(p => p.ProductId == productId);
                if (product == null)
                {
                    return(BadRequest("Product Doesn't Exist"));
                }
                product.QuantityAtHand -= 1;
                product.Sales          += 1;
                orderDTO.products.Add(product);
            }
            orderDTO.CustomerId = order.CustomerId;

            // Post to Customer
            using (var client = new HttpClient())
            {
                var url           = $"https://localhost:{Mappings.addresses["customers"]}/api/customers/order";
                var json          = JsonConvert.SerializeObject(orderDTO);
                var stringContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
                var response      = await client.PostAsync(url, stringContent);

                try
                {
                    response.EnsureSuccessStatusCode();
                }catch (Exception e)
                {
                    return(BadRequest("There was a problem with your request"));
                }


                string content = await response.Content.ReadAsStringAsync();

                return(Ok("Sent to !"));
            }
        }
        public IActionResult PostDelivery(OrderPost order)
        {
            var text  = "Your type of order - post delivery. For more information follow the link: https://mayakelectronics20191126070610.azurewebsites.net/Account/YourAccount";
            var items = _cart.GetCartItems();

            ViewBag.Total = _cart.GetCartTotal();
            ViewBag.Items = items;
            if (items.Count == 0)
            {
                ModelState.AddModelError("", "Cart is empty");
            }

            new EfProductRepository().UpdateAreBoughts(items.Select(i => i.Product).ToList());

            if (ModelState.IsValid)
            {
                EmailSender.SendEmail(order.Email, text);
                _cart.ClearCart();
                _orderRepository.CreateOrder(order);
                return(RedirectToAction("Complete"));
            }

            return(View(order));
        }
        public void CreateOrder(OrderPost order)
        {
            order.OrderPlaced = DateTime.Now;
            _db.OrdersPost.Add(order);
            _db.SaveChanges();

            order.OrderTotal = _cart.GetCartTotal();

            var cartItems = _cart.CartItems;

            foreach (var item in cartItems)
            {
                var orderDetail = new OrderDetailPost()
                {
                    Amount      = item.Amount,
                    ProductId   = item.Product.Id,
                    OrderPostId = order.OrderPostId,
                    Price       = item.Product.Price
                };

                _db.OrderDetailsPost.Add(orderDetail);
            }
            _db.SaveChanges();
        }
        public OrderInfo InsertOrder(OrderPost post)
        {
            var result = new OrderInfo();
            var userObjId = new ObjectId(post.userId);
            //获取最近一个订单信息
            var builderOrder = Builders<OrderMongo>.Filter;
            var filterOrder = builderOrder.Eq(x => x.UserId, userObjId);
            filterOrder &= builderOrder.Eq(x => x.IsDel, false);
            var colOrder = MongoDBHelper.Instance.GetOrder();
            try
            {
                //判断两个订单时间间隔,避免短时间频繁提交订单
                var queryOrder = colOrder.Find(filterOrder).SortByDescending(x => x.CreatedAt).FirstOrDefault();
                if (queryOrder != null)
                {
                    TimeSpan interval = DateTime.Now - queryOrder.CreatedAt;
                    if (interval.TotalSeconds < 10)
                        return null;
                }
                //根据产品Id获取产品信息
                var productObjIdList = post.productList.Select(x => new ObjectId(x.id)).ToList();
                var buiderProduct = Builders<ProductMongo>.Filter;
                var filterProduct = buiderProduct.In(x => x._id, productObjIdList);
                filterProduct &= buiderProduct.Eq(x => x.IsDel, false);
                var queryProduct = MongoDBHelper.Instance.GetProduct().Find(filterProduct).ToList();

                var productList = new List<ProductInOrder>();       //订单内产品信息列表
                var proDtoList = new List<ProductInOrderDto>();     //返回给前端的订单内产品信息列表
                foreach (var x in queryProduct)
                {
                    var product = new ProductInOrder
                    {
                        _id = x._id,
                        Name = x.Name,
                        Description = x.Description,
                        Price = x.Price
                    };
                    product.Num = post.productList.Find(s => s.id == x._id.ToString()).Num;
                    productList.Add(product);

                    var proDto = new ProductInOrderDto
                    {
                        Id = x._id.ToString(),
                        Name = x.Name,
                        Description = x.Description,
                        Price = x.Price,
                        Num=product.Num,
                    };
                    proDtoList.Add(proDto);
                }
<<<<<<< HEAD

                var order = new OrderMongo
                {
                    _id=ObjectId.GenerateNewId(),
                    CreatedAt = DateTime.Now.AddHours(8),
                    ProductList = productList,
                    UserId = userObjId
=======
                var ran = new Random();
                string tradeNo = string.Format("DT{0}{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), ran.Next(9999));
                var order = new OrderMongo
                {
                    _id = ObjectId.GenerateNewId(),
                    CreatedAt = DateTime.Now.AddHours(8),
                    ProductList = productList,
                    UserId = userObjId,
                    TradeNo = tradeNo
>>>>>>> c26f92d240a523a1903a8e87db204683ad299860
                };
                order.TotalPrice = productList.Select(x => x.Num * x.Price).Sum();
                colOrder.InsertOne(order);

                order.ProductList = productList;
                var orderDto = new OrderDto
                {
                    Id = order._id.ToString(),
                    ProductList = proDtoList,
<<<<<<< HEAD
                    TotalPrice = order.TotalPrice
=======
                    TotalPrice = order.TotalPrice,
                    CreatedAt = order.CreatedAt,
                    TradeNo = order.TradeNo
>>>>>>> c26f92d240a523a1903a8e87db204683ad299860
                };
                result.order = orderDto;
 public async Task <IActionResult> Post(OrderPost order)
 {
     return(Ok(order));
 }
Exemplo n.º 16
0
        public async Task <IActionResult> PostOrder([FromHeader] string Authorization, [FromBody] OrderPost orderPost)
        {
            try
            {
                long timestamp          = (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
                long markpricetimestamp = timestamp;// - DateTime.UtcNow.Second;

                if (Request.ContentType == "application/json")
                {
                    ;
                }
                else
                {
                    return(BadRequest("improper content type"));
                }

                if (orderPost.OrderType == "limit")
                {
                    if (string.IsNullOrEmpty(orderPost.Contract) && string.IsNullOrEmpty(orderPost.OrderType) && string.IsNullOrEmpty(orderPost.Price) && orderPost.OrderQuantity == null)
                    {
                        return(BadRequest("bad params"));
                    }
                }
                else if (orderPost.OrderType == "market")
                {
                    if (string.IsNullOrEmpty(orderPost.Contract) && string.IsNullOrEmpty(orderPost.OrderType) && orderPost.OrderQuantity == null)
                    {
                        return(BadRequest("bad params"));
                    }
                }
                else
                {
                    return(BadRequest("missing params"));
                }

                Console.WriteLine(orderPost.Contract + orderPost.OrderQuantity + orderPost.OrderType + orderPost.Side);
                if (string.IsNullOrEmpty(orderPost.Contract) || string.IsNullOrEmpty(orderPost.OrderType) || string.IsNullOrEmpty(orderPost.Side) || orderPost.OrderQuantity == null)
                {
                    return(BadRequest("missing variables"));
                }

                AmazonDynamoDBClient amazonDynamoDBClient = new AmazonDynamoDBClient();
                Table    UserTable     = Table.LoadTable(amazonDynamoDBClient, "UserDetailsRegistry");
                Table    SPXMarkTable  = Table.LoadTable(amazonDynamoDBClient, "SPXMarkPrice");
                Document searchdetails = new Document();

                orderPost.OrderType = orderPost.OrderType.ToLower();

                int    orderId;
                string socket;

                try
                {
                    string[] autharray  = Authorization.Split(' ');
                    string   authtype   = autharray[0];
                    string   authstring = autharray[1];

                    if (authtype == "Basic")
                    {
                        byte[] data          = Convert.FromBase64String(authstring);
                        string decodedString = Encoding.UTF8.GetString(data);

                        string[] splitauth = decodedString.Split(":");
                        string   id        = splitauth[0];
                        string   secret    = splitauth[1]; Console.WriteLine(id + secret);

                        ScanOperationConfig scanOperation = new ScanOperationConfig();
                        ScanFilter          scanFilter    = new ScanFilter();
                        scanFilter.AddCondition("DefaultId", ScanOperator.Equal, id);
                        Search          search  = UserTable.Scan(scanOperation);
                        List <Document> details = await search.GetRemainingAsync();

                        foreach (Document doc in details)
                        {
                            if (doc["DefaultSecret"] == secret && doc["DefaultId"] == id)
                            {
                                Console.WriteLine("successful auth");
                                searchdetails = doc;
                                break;
                            }
                            else
                            {
                                continue;
                            }
                        }
                        searchdetails["Email"].ToString();
                    }
                    else
                    {
                        return(BadRequest("Bad authorization"));
                    }

                    // verifiy valid account balance
                    Document userdetails = await UserTable.GetItemAsync(searchdetails["Email"].ToString());

                    Document markprice = new Document();
                    markpricetimestamp = markpricetimestamp - (markpricetimestamp % 5);
                    try { markprice = await SPXMarkTable.GetItemAsync(markpricetimestamp.ToString()); markprice["BTCPrice"].ToString(); }
                    catch { try { markpricetimestamp -= 5; markprice = await SPXMarkTable.GetItemAsync((markpricetimestamp).ToString()); markprice["BTCPrice"].ToString(); } catch { Console.WriteLine("bigbad"); } }

                    double availablebalance = searchdetails["AvailableBalance"].AsDouble();
                    if (orderPost.OrderQuantity > ((availablebalance * markprice["BTCPrice"].AsDouble()) * 100))
                    {
                        return(BadRequest("bad amount"));
                    }

                    // atomic id generate
                    Table    idgenerator = Table.LoadTable(amazonDynamoDBClient, "IdGenerator");
                    Document currentid   = await idgenerator.GetItemAsync("Main");

                    Document newid = new Document();
                    newid["Id"] = "Main";

                    double count = currentid["Count"].AsDouble();
                    count         += 1;
                    newid["Count"] = count.ToString();

                    UpdateItemOperationConfig updateItemOperationConfig = new UpdateItemOperationConfig();
                    ExpectedValue             expected = new ExpectedValue(ScanOperator.Equal);
                    updateItemOperationConfig.Expected = currentid;

                    try
                    {
                        Document test = await idgenerator.UpdateItemAsync(newid, updateItemOperationConfig);

                        orderId = (int)count;
                    }
                    catch
                    {
                        return(BadRequest("please try again"));
                    }

                    Table    orderreg = Table.LoadTable(amazonDynamoDBClient, "OrderRegistry");
                    Document addorder = new Document();
                    addorder["Id"]    = orderId.ToString();
                    addorder["Email"] = searchdetails["Email"].ToString();
                    addorder["Side"]  = orderPost.Side.ToString();
                    if (orderPost.OrderType == "limit")
                    {
                        addorder["Price"] = orderPost.Price.ToString();
                    }
                    addorder["OrderQuantity"] = orderPost.OrderQuantity.ToString();
                    addorder["Contract"]      = orderPost.Contract;
                    addorder["OrderType"]     = orderPost.OrderType;
                    addorder["Status"]        = "open";
                    addorder["Timestamp"]     = timestamp.ToString();
                    //addorder["Add"] = "true";
                    await orderreg.PutItemAsync(addorder);

                    // send tcp message to engine
                    try
                    {
                        TcpClient tcpclnt = new TcpClient();
                        Console.WriteLine("Connecting.....");

                        tcpclnt.Connect("52.213.34.99", port);
                        // use the ipaddress as in the server program

                        Console.WriteLine("Connected");
                        Console.Write("Enter the string to be transmitted : ");
                        var    enginepayload = new object();
                        double spymark       = markprice["SPXPrice"].AsDouble();
                        spymark  = Math.Round(spymark);
                        spymark *= 100;

                        if (orderPost.OrderType == "limit")
                        {
                            enginepayload = new
                            {
                                Method        = "Post",
                                Side          = orderPost.Side,
                                Id            = orderId.ToString(),
                                Price         = orderPost.Price,
                                OrderQuantity = orderPost.OrderQuantity.ToString(),
                                OrderType     = orderPost.OrderType,
                                Contract      = orderPost.Contract,
                                Secret        = "secret",
                                //Timestamp = timestamp.ToString(),
                                //User = searchdetails["Email"].ToString(),
                                //AvailableBalance = searchdetails["AvailableBalance"].ToString()
                            };
                        }
                        else if (orderPost.OrderType == "market")
                        {
                            enginepayload = new
                            {
                                Method        = "Post",
                                Side          = orderPost.Side,
                                Id            = orderId.ToString(),
                                OrderQuantity = orderPost.OrderQuantity.ToString(),
                                Slippage      = 99999.ToString(),
                                OrderType     = orderPost.OrderType,
                                Contract      = orderPost.Contract,
                                Secret        = "secret",
                                //Timestamp = timestamp.ToString(),
                                //User = searchdetails["Email"].ToString(),
                                //AvailableBalance = searchdetails["AvailableBalance"].ToString()
                            };
                        }
                        else
                        {
                            return(BadRequest("invalid order type"));
                        }

                        using (SslStream sslStream = new SslStream(tcpclnt.GetStream(), false,
                                                                   new RemoteCertificateValidationCallback(ValidateServerCertificate), null))
                        {
                            sslStream.AuthenticateAsClient("52.213.34.99");
                            // This is where you read and send data

                            String str = "enginekey" + JsonConvert.SerializeObject(enginepayload);
                            //Stream stm = tcpclnt.GetStream();

                            ASCIIEncoding asen = new ASCIIEncoding();
                            byte[]        ba   = asen.GetBytes(str);
                            Console.WriteLine("Transmitting.....");

                            sslStream.Write(ba, 0, ba.Length);
                            //sslStream.Close();

                            /*byte[] bb = new byte[1000];
                             * int k = await sslStream.ReadAsync(bb, 0, 1000);
                             *
                             * var socketresult = Encoding.UTF8.GetString(bb).TrimEnd('\0');
                             * Console.WriteLine(socketresult);
                             * socket = socketresult;*/
                        }
                        tcpclnt.Close();
                    }

                    catch (Exception e)
                    {
                        Console.WriteLine("Error..... " + e.StackTrace);
                        return(BadRequest("error with engine"));
                    }
                }
                catch
                {
                    return(BadRequest("failed processing"));
                }

                var    returnobj  = new { Id = orderId, Timestamp = markpricetimestamp.ToString(), Message = "transmitted", Result = "sucess" };
                string returnjson = JsonConvert.SerializeObject(returnobj);
                return(Content(returnjson, "application/json"));
            }
            catch
            {
                return(BadRequest("something went wrong"));
            }
        }