Exemple #1
0
        private static void ProcessOrders(DataTable data)
        {
            bool            cancelBuilding = false;
            StyleConfigData config         = configs[ReportType.Cut];

            ActiveOrderWindow activeOrderWindow = new ActiveOrderWindow();
            List <string>     currentNames      = new List <string>();
            List <OrderData>  ordersToLog       = new List <OrderData>();

            mainWindow.Hide();
            Messenger.Show(data.Rows.Count + " entries found");

            //NOTE(adam): convert rows to data entries before loop to allow lookahead
            List <OrderData> orders = new List <OrderData>();

            foreach (DataRow row in data.Rows)
            {
                orders.Add(new OrderData(row));
            }

            for (int i = 0; i != orders.Count; ++i)
            {
                OrderData order       = orders[i];
                string    trimmedCode = config.TryTrimStyleCode(order.itemCode);

                //NOTE(adam): if not in config, continue; else, store the trimmed code
                if (trimmedCode.Length == 0)
                {
                    order.comment += "Not in config";
                    ordersToLog.Add(order);
                    continue;
                }
                else
                {
                    order.itemCode = trimmedCode;
                }

                string orderPath   = config.filePaths.ConstructNetworkOrderFilePath(order);
                string newMadePath = config.filePaths.ConstructSaveFilePath(order);

                if (config.IsIgnoredStyle(order))
                {
                    order.comment += "Ignored style";
                    ordersToLog.Add(order);
                    continue;
                }

                //NOTE(adam): if built, continue
                if (File.Exists(orderPath) || File.Exists(newMadePath))
                {
                    order.comment += "Already made";
                    ordersToLog.Add(order);
                    continue;
                }

                if (cancelBuilding)
                {
                    order.comment += "Cancelled building";
                    ordersToLog.Add(order);
                    continue;
                }

                //NOTE(adam): build point
                String templatePath = config.filePaths.ConstructTemplateFilePath(order);
                if (!File.Exists(templatePath))
                {
                    ErrorHandler.HandleError(ErrorType.Alert, "Template not found:\n" + templatePath);
                    order.comment += "Template not found";
                    ordersToLog.Add(order);
                }
                else
                {
                    currentNames.Add(order.name);

                    if (config.IsNameStyle(order.itemCode))
                    {
                        //NOTE(adam): if following is name style and same order/voucher, skip processing current list
                        if ((i + 1 != orders.Count) && (config.TryTrimStyleCode(orders[i + 1].itemCode).Length > 0) && (config.IsNameStyle(orders[i + 1].itemCode)) &&
                            (order.orderNumber == orders[i + 1].orderNumber) &&
                            (order.voucherNumber == orders[i + 1].voucherNumber))
                        {
                            order.comment += "Name style";
                            ordersToLog.Add(order);
                            continue;
                        }
                    }

                    order.nameList = currentNames;

                    BuildOrder(templatePath, order);
                    activeOrderWindow.SetInfoDisplay(order);
                    activeOrderWindow.ShowDialog();

                    if (activeOrderWindow.selection == WindowSelection.NEXT)
                    {
                        if (corel.Documents.Count > 0 && corel.ActiveDocument.Dirty)
                        {
                            ShapeRange shapes = corel.ActiveDocument.ActivePage.FindShapes(null, cdrShapeType.cdrTextShape);
                            shapes.ConvertToCurves();

                            if (config.IsNameStyle(order.itemCode))
                            {
                                string namesDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\Name Styles\" + order.cutHouse + "\\";
                                Directory.CreateDirectory(namesDir);
                                corel.ActiveDocument.SaveAs(namesDir + order.orderNumber + order.voucherNumber.ToString("D3") + ".cdr");
                            }
                            else
                            {
                                Directory.CreateDirectory(config.filePaths.ConstructSaveFolderPath(order));
                                corel.ActiveDocument.SaveAs(newMadePath);
                                if (config.GetExportType(order.itemCode) != ExportType.None)
                                {
                                    ExportOrder(order, config);
                                }
                            }
                        }

                        order.comment += "Completed";
                        ordersToLog.Add(order);
                    }
                    else if (activeOrderWindow.selection == WindowSelection.REJECT)
                    {
                        order.comment += "Manually rejected";
                        ordersToLog.Add(order);
                    }
                    else if (activeOrderWindow.selection == WindowSelection.CANCEL)
                    {
                        cancelBuilding = true;
                        order.comment += "Cancelled building";
                        ordersToLog.Add(order);
                    }

                    while (corel.Documents.Count > 0)
                    {
                        corel.ActiveDocument.Close();
                    }
                    System.Threading.Thread.Sleep(50);      //NOTE(adamf): delay prevents error on closing templates

                    currentNames.Clear();
                }
            }

            CsvWriter.WriteReport(ordersToLog, "LetteringLog-" + DateTime.Now.ToString("yyyyMMdd_HHmm"));

            Messenger.Show("Done!");
            mainWindow.Show();
        }