public static bool IsCancelledOrder(Dictionary <string, string> messages, ROIService.Order orderDetails, bool cancelledOrder)
        {
            foreach (var documentid in orderDetails.documentIdList)
            {
                var orderItem = RoiClient.GetOrderItem(documentid, Token);


                if (orderItem.Status.ToString() == "Unreviewed")
                {
                    cancelledOrder = true;

                    if (!messages.ContainsKey(orderDetails.orderId))
                    {
                        messages.Add(orderDetails.orderId, "Unreviewed Order  - will be processed later");
                    }
                    else
                    {
                        messages[orderDetails.orderId] += " | " + "Unreviewed Order  - will be processed later";
                    }
                    break;
                }


                if (orderItem.Status.ToString() == "Rejected")
                {
                    cancelledOrder = true;

                    OrderManager orderManager = new OrderManager();

                    if (!orderManager.CheckNotReadyOrders(orderDetails.orderId))
                    {
                        orderManager.AddNonReadyOrders(orderDetails.orderId, "Rejected");

                        if (!messages.ContainsKey(orderDetails.orderId))
                        {
                            messages.Add(orderDetails.orderId, "Cancelled Order");
                        }
                        else
                        {
                            messages[orderDetails.orderId] += " | " + "Cancelled Order";
                        }
                    }

                    break;
                }
            }



            return(cancelledOrder);
        }
        public static void GetShippingAddressFromOrder(ROIService.Order orderDetails, AddressDetails shippingAddress)
        {
            foreach (var field in orderDetails.CustomShippingFields)
            {
                if (field.Name == "ShippingCompanyName")
                {
                    shippingAddress.CompanyName = field.Value;
                }

                if (field.Name == "ShippingFirstName")
                {
                    shippingAddress.FirstName = field.Value;
                }

                if (field.Name == "ShippingLastName")
                {
                    shippingAddress.LastName = field.Value;
                }

                if (field.Name == "ShippingAddress1")
                {
                    shippingAddress.Line1 = field.Value;
                }

                if (field.Name == "ShippingAddress2")
                {
                    shippingAddress.Line2 = field.Value;
                }

                if (field.Name == "ShippingAddress3")
                {
                    shippingAddress.Line3 = field.Value;
                }

                if (field.Name == "ShippingAddress4")
                {
                    shippingAddress.Line4 = field.Value;
                }

                if (field.Name == "ShippingCity")
                {
                    shippingAddress.City = field.Value;
                }

                if (field.Name == "ShippingCounty")
                {
                    shippingAddress.County = field.Value;
                }

                if (field.Name == "ShippingState")
                {
                    shippingAddress.State = field.Value;
                }

                if (field.Name == "ShippingPostalCode")
                {
                    shippingAddress.PostCode = field.Value;
                }

                if (field.Name == "ShippingCountry")
                {
                    shippingAddress.Country = field.Value;
                }

                if (field.Name == "ShippingDescription")
                {
                    shippingAddress.Description = field.Value;
                }

                if (field.Name == "ShippingTelephone")
                {
                    shippingAddress.Telephone = field.Value;
                }

                if (field.Name == "ShippingEmail")
                {
                    shippingAddress.Email = field.Value;
                }
            }
        }
        public static void ProcessOrderItems(ROIService.Order orderDetails, List <PrintOptions> printOptionsList, DeliveryDetails deliveryDetails, Dictionary <string, string> messages)
        {
            //Order Items
            foreach (var documentid in orderDetails.documentIdList)
            {
                var orderItem = RoiClient.GetOrderItem(documentid, Token);


                if (orderItem.Status.ToString() == "Rejected")
                {
                    if (!messages.ContainsKey(orderDetails.orderId))
                    {
                        messages.Add(orderDetails.orderId, "Cancelled Order");
                    }
                    else
                    {
                        messages[orderDetails.orderId] += " | " + "Cancelled Order";
                    }
                    break;
                }
                //Options

                PrintOptions printOptions = new PrintOptions {
                    Price = Convert.ToString(orderItem.Price.amount)
                };

                GetPrintOptions(orderItem, printOptions);

                printOptions.DocumentId = orderItem.ExternalId;


                string artworkPdf;
                try
                {
                    artworkPdf = "https://artwork.roi360.co.uk/kingfisher/" + RoiClient.GetOrderItemOutputPath(documentid, Token)[0];
                }
                catch (Exception ex)
                {
                    var orderManager = new OrderManager();

                    if (!orderManager.CheckNotReadyOrders(orderDetails.orderId))
                    {
                        orderManager.AddNonReadyOrders(orderDetails.orderId, "Artwork not found");

                        if (!messages.ContainsKey(orderDetails.orderId))
                        {
                            messages.Add(orderDetails.orderId, "Artwork not found ");
                        }
                        else
                        {
                            messages[orderDetails.orderId] += " | " + "Artwork not found ";
                        }
                    }


                    break;
                }
                printOptions.ArtworkUrl = artworkPdf;

                AddressDetails shippingAddress = new AddressDetails();

                GetshippingAddressFromOrderItem(orderItem, shippingAddress);

                var companyNameFromUser = shippingAddress.CompanyName;


                foreach (var field in orderDetails.CustomShippingFields)
                {
                    if (field.Name == "ShippingCompany")
                    {
                        shippingAddress.CompanyName = field.Value;
                        break;
                    }
                }

                if (string.IsNullOrEmpty(shippingAddress.CompanyName))
                {
                    shippingAddress.CompanyName = companyNameFromUser;
                }


                if (string.IsNullOrEmpty(shippingAddress.Email))
                {
                    //read from orderDetails
                    foreach (var field in orderDetails.CustomShippingFields)
                    {
                        switch (field.Name)
                        {
                        case "ShippingEmail":
                            shippingAddress.Email = field.Value;
                            break;
                        }
                    }
                }

                var product = RoiClient.GetProduct(orderItem.ProductId, Token);

                printOptions.ProductName = product.Name;
                printOptions.ProductType = product.Description;


                foreach (var field in product.CustomProductFields)
                {
                    switch (field.Name)
                    {
                    case "Finishing":
                        printOptions.Finishing = field.Value;
                        break;

                    case "Binding_Style":
                        printOptions.Binding = field.Value;
                        break;

                    case "PrintMethod":
                        printOptions.PrintMethod = field.Value;
                        break;

                    case "ShuttleworthEstimateID":
                        printOptions.EstimateId = field.Value;
                        break;

                    case "Turnaround":
                        printOptions.TurnAround = field.Value;
                        break;

                    case "FileCopies":

                        if (string.IsNullOrEmpty(field.Value))
                        {
                            printOptions.FileCopies = "0";
                        }
                        else
                        {
                            if (field.Value.ToLower() == "none")
                            {
                                printOptions.FileCopies = "0";
                            }
                            else
                            {
                                var filecopy = field.Value.Replace("file copies to go to Capture", "");
                                filecopy = filecopy.Trim();
                                printOptions.FileCopies = filecopy;
                            }
                        }
                        break;

                    case "Colours":
                        if (!string.IsNullOrEmpty(field.Value))
                        {
                            var colourPart = field.Value.Split(new char[] { '/' });

                            if (colourPart.Length == 2)
                            {
                                printOptions.ColoursFront = colourPart[0];
                                printOptions.ColoursBack  = colourPart[1];
                            }
                        }
                        break;
                    }
                }

                printOptionsList.Add(printOptions);

                BuildDeliveryAddressForTharstern(deliveryDetails, shippingAddress);
            }
        }