Exemplo n.º 1
0
        public int DispatchOrders(Dictionary <Models.Orders.Order, List <Models.Orders.OrderLine> > orderLines, Models.Vendors.Vendor vendor, AuditLog4Net.Adapter.IAuditLogAdapter log, DataAccess.UnitOfWork.IUnitOfWork uni)
        {
            var AmacomUrl   = vendor.VendorSettings.GetValueByKey("AmacomUrl", string.Empty);
            var OrderPath   = vendor.VendorSettings.GetValueByKey("OrderPath", string.Empty);
            var Username    = vendor.VendorSettings.GetValueByKey("Username", string.Empty);
            var Password    = vendor.VendorSettings.GetValueByKey("Password", string.Empty);
            var Organistion = vendor.VendorSettings.GetValueByKey("Organisation", string.Empty);
            var Fact        = vendor.VendorSettings.GetValueByKey("FactDeb", string.Empty);

            FtpManager orderUploader = new FtpManager(
                AmacomUrl,
                OrderPath,
                Username,
                Password,
                false, true, log);

            //Generate CSV

            DataTable table = new DataTable();

            table.Columns.Add("vkorg");
            table.Columns.Add("bstkd_besteldatumt");
            table.Columns.Add("betaler_kunre");
            table.Columns.Add("vastklantnummer_kunnr");
            table.Columns.Add("bstnk");
            table.Columns.Add("posnr");
            table.Columns.Add("kunnr");
            table.Columns.Add("matnr");
            table.Columns.Add("kwmeng");
            table.Columns.Add("vrkme");
            table.Columns.Add("leeg");
            table.Columns.Add("kunwe");
            table.Columns.Add("name1");
            table.Columns.Add("stras");
            table.Columns.Add("pstlz");
            table.Columns.Add("ort01");
            table.Columns.Add("land1");
            table.Columns.Add("kunre");
            table.Columns.Add("email");
            table.Columns.Add("tel");

            foreach (var order in orderLines.Keys)
            {
                DataRow row = table.NewRow();
                row["vkorg"] = Organistion;
                row["bstkd_besteldatumt"]    = DateTime.Now.ToString("ddMMyyyy");
                row["betaler_kunre"]         = Fact;
                row["vastklantnummer_kunnr"] = "";
                table.Rows.Add(row);

                DataRow line = table.NewRow();
                line[0] = order.OrderID.ToString();
                foreach (var orderline in order.OrderLines)
                {
                    var customItemNr = orderline.Product.VendorAssortments.FirstOrDefault().CustomItemNumber;

                    if (customItemNr.Length < 18)
                    {
                        customItemNr = "";
                        for (int i = orderline.Product.VendorAssortments.FirstOrDefault().CustomItemNumber.Length; i < 18; i++)
                        {
                            customItemNr += "0";
                        }
                        customItemNr += orderline.Product.VendorAssortments.FirstOrDefault().CustomItemNumber;
                    }

                    line[1]  = orderline.OrderLineID.ToString();
                    line[2]  = "";
                    line[3]  = customItemNr;
                    line[4]  = orderline.GetDispatchQuantity().ToString();
                    line[5]  = "";
                    line[6]  = "";
                    line[7]  = "";
                    line[8]  = order.ShippedToCustomer.CustomerName;
                    line[9]  = order.ShippedToCustomer.CustomerAddressLine1;
                    line[10] = order.ShippedToCustomer.PostCode;
                    line[11] = order.ShippedToCustomer.City;
                    line[12] = order.ShippedToCustomer.Country;
                    line[14] = "";
                    line[14] = order.ShippedToCustomer.CustomerEmail;
                    line[15] = order.ShippedToCustomer.CustomerTelephone;

                    table.Rows.Add(line);
                    line = table.NewRow();
                }

                CsvWriter csvWriter = new CsvWriter(table, '\t');
                var       csv       = csvWriter.AsString();
                //edit new line

                csv = csv.Substring(0, 60) + Environment.NewLine + csv.Substring(61);

                System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();

                var          fileName = string.Format("BasOrder_{0}.csv", order.OrderID.ToString());
                byte[]       file     = encoding.GetBytes(csv);
                MemoryStream stream   = new MemoryStream(file);
                //Place order on FTP
                orderUploader.Upload(stream, fileName);

                LogOrder(csv, vendor.VendorID, fileName, log);
            }

            throw new NotImplementedException();
        }