示例#1
0
        public HttpResponseMessage CompleteOrder(CompleteOrderDTO request)
        {
            HttpResponseMessage responseMessage;
            JSendMessage        json;
            var token = Request.Headers.SingleOrDefault(x => x.Key == "token").Value.First();

            try
            {
                var userId = db.Tokens.First(u => u.TokenString.Equals(token))?.UserId;
                if (userId > 0)
                {
                    var order = db.Orders.FirstOrDefault(o => o.OrderId == request.OrderId);

                    if (request.PaymentStatus)
                    {
                        order.TransactionId = request.TransactionId;
                        order.PaymentMethod = request.PaymentMethod;

                        db.Orders.Update(order);
                        db.SaveChanges();

                        var InvoiceLogic = new InvoiceLogic(db);
                        var invoice      = InvoiceLogic.CreateInvoice(order);
                        order.Invoice = invoice.ToArray();

                        db.Orders.Update(order);
                        db.SaveChanges();

                        var productList       = new List <Products>();
                        var productOrdersList = db.ProductsOrders.Where(p => p.OrderId == request.OrderId).ToList();
                        foreach (var requestProduct in productOrdersList)
                        {
                            var product = db.Products.Find(requestProduct.ProductId);
                            if (product?.ProductId > 0)
                            {
                                productList.Add(product);
                            }
                        }

                        var OrderLogic = new OrderLogic(db);
                        OrderLogic.SendOrderEmail(order, productList, invoice);

                        order.MailSent = true;

                        db.Orders.Update(order);
                        db.SaveChanges();

                        OrderLogic.SendOrderEmailToAdmin(order, productList, invoice);
                        json = new JSendMessage("success", "Order successfully added");
                    }
                    else
                    {
                        db.Orders.Remove(order);
                        json = new JSendMessage("success", "Order canceled");
                    }

                    responseMessage = Request.CreateResponse(HttpStatusCode.OK, json);
                }
                else
                {
                    responseMessage = Request.CreateResponse(HttpStatusCode.BadRequest);
                }
            }
            catch (Exception)
            {
                responseMessage = Request.CreateResponse(HttpStatusCode.BadRequest);
                return(responseMessage);
            }

            return(responseMessage);
        }
示例#2
0
        // POST: api/Orders
        public HttpResponseMessage PostOrders(AddOrderDTO request)
        {
            HttpResponseMessage responseMessage;
            var token = Request.Headers.SingleOrDefault(x => x.Key == "token").Value.First();

            try
            {
                var userId = db.Tokens.First(u => u.TokenString.Equals(token))?.UserId;
                if (userId > 0)
                {
                    var order = new Orders
                    {
                        Date           = DateTime.Now,
                        UserId         = userId.Value,
                        FirstName      = request.UserDetails.FirstName,
                        LastName       = request.UserDetails.LastName,
                        State          = request.UserDetails.State,
                        Address        = request.UserDetails.StreetAddress,
                        City           = request.UserDetails.City,
                        ZipCode        = request.UserDetails.ZipCode,
                        Phone          = request.UserDetails.Phone,
                        Email          = request.UserDetails.Email,
                        Currency       = request.Currency,
                        Lang           = request.Lang,
                        TransactionId  = request.TransactionId,
                        ProductsOrders = new List <ProductsOrders>()
                    };

                    db.Orders.Add(order);
                    db.SaveChanges();

                    double subtotal    = 0;
                    var    productList = new List <Products>();
                    foreach (var requestProduct in request.CartProducts)
                    {
                        var product = db.Products.Find(requestProduct.Key);
                        if (product?.ProductId > 0)
                        {
                            var productsOrders = new ProductsOrders
                            {
                                ProductId      = product.ProductId,
                                ProductPrice   = GetCurrencyPrice(product, order.Currency),
                                Amount         = requestProduct.Value,
                                OrderId        = order.OrderId,
                                Currency       = order.Currency,
                                ProductProduct = product,
                                Code           = product.StyleCode + " " + product.Colour
                            };

                            subtotal += productsOrders.ProductPrice * productsOrders.Amount;

                            order.ProductsOrders.Add(productsOrders);
                            productList.Add(product);
                        }
                    }

                    order.Subtotal      = subtotal;
                    order.Shipping      = 0;
                    order.PaymentMethod = request.PaymentMethod;

                    db.Orders.Update(order);
                    db.SaveChanges();

                    var InvoiceLogic = new InvoiceLogic(db);
                    var invoice      = InvoiceLogic.CreateInvoice(order);
                    order.Invoice = invoice.ToArray();

                    db.Orders.Update(order);
                    db.SaveChanges();

                    var OrderLogic = new OrderLogic(db);
                    OrderLogic.SendOrderEmail(order, productList, invoice);

                    order.MailSent = true;

                    db.Orders.Update(order);
                    db.SaveChanges();

                    OrderLogic.SendOrderEmailToAdmin(order, productList, invoice);
                }
            }
            catch (DbUpdateException)
            {
                responseMessage = Request.CreateResponse(HttpStatusCode.BadRequest);
                return(responseMessage);
            }

            var json = new JSendMessage("success", "Order successfully added");

            responseMessage = Request.CreateResponse(HttpStatusCode.OK, json);
            return(responseMessage);
        }