private async Task <List <SalesOrderListItemViewModel> > GetSalesOrdersAsync()
        {
            return(await Task.Factory.StartNew(() =>
            {
                var salesOrderAttachments = OutlookDataProvider.ExtractSalesOrderPdfs(
                    Settings.Default.NewOrderFolderName,
                    Path.GetTempPath());

                string orderExpr, buyerExpr, deliveryExpr, drawingExpr;
                byte[] logoBytes = null;

                using (var cpe = new CPEUnitOfWork())
                {
                    var customer = cpe.Customers.GetAll().FirstOrDefault(c => c.Name.Contains("E2V"));
                    orderExpr = customer.OrderNumberRegex;
                    buyerExpr = customer.BuyerRegex;
                    deliveryExpr = customer.DeliveryDateRegex;
                    drawingExpr = customer.DrawingNumberRegex;
                    logoBytes = customer.LogoBLOB;
                }

                var salesOrders = new List <SalesOrderListItemViewModel>();

                foreach (var attachment in salesOrderAttachments)
                {
                    var detail = PdfParser.ParseSalesOrderAsync(attachment.FileName, attachment.MailId, orderExpr,
                                                                deliveryExpr, buyerExpr, drawingExpr).Result;

                    var model = new SalesOrderListItemViewModel
                    {
                        Buyer = detail.Buyer, DeliveryDate = detail.DeliveryDate, DrawingNumber = detail.DrawingNumber, OrderNumber = detail.OrderNumber,
                        CompanyLogoBytes = logoBytes, FileName = detail.FileName, MailId = detail.MailId
                    };

                    salesOrders.Add(model);
                }

                return salesOrders;
            }));
        }
Exemplo n.º 2
0
        public async Task RetrieveViewModelAsync(SalesOrderListItemViewModel orderDetail)
        {
            var model = await Task.Factory.StartNew(() =>
            {
                byte[] bytes             = null;
                string pathToDrawingFile = null;
                string partName          = null;
                string customerName      = null;
                string quoteReference    = null;
                string woNumber          = null;
                DateTime?date            = null;

                using (var cpe = new CPEUnitOfWork())
                {
                    var version = cpe.PartVersions.GetById(46);
                    bytes       = cpe.Photos.GetByPartVersion(version);
                    var part    = cpe.Parts.GetWhereDrawingNumberMatches(orderDetail.DrawingNumber).SingleOrDefault();
                    if (part != null)
                    {
                        partName     = part.Name;
                        customerName = part.Customer.Name;

                        var latestVersion = cpe.PartVersions.GetLatestVersion(part);
                        bytes             = cpe.Photos.GetByPartVersion(latestVersion);
                    }
                }

                List <QuoteDetail> details = new List <QuoteDetail>();

                using (var tricorn = new TricornDataProvider())
                {
                    quoteReference = tricorn.GetLastQuoteGroupReference(orderDetail.DrawingNumber, out date);

                    woNumber = tricorn.GetLastWorksOrderNumber(orderDetail.DrawingNumber);

                    if (quoteReference != null)
                    {
                        details = tricorn.GetQuoteDetails(quoteReference, orderDetail.DrawingNumber);
                    }
                }

                var viewModel = new SalesOrderViewModel
                {
                    Customer             = customerName,
                    OrderNumber          = orderDetail.OrderNumber,
                    DeliveryDate         = orderDetail.DeliveryDate,
                    DrawingNumber        = orderDetail.DrawingNumber,
                    Name                 = partName,
                    LastWorksOrderNumber = woNumber,
                    LastGroupReference   = quoteReference,
                    LastQuotedOn         = date,
                    SalesOrderFileName   = orderDetail.FileName,
                    PhotoBytes           = bytes,
                    LastQuoteDetails     = details
                };

                return(viewModel);
            });

            _view.DataContext = model;
        }