Friday, August 30, 2013

Create Text File ,use Download & Save file And use of String Builder

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Text;
using System.Configuration;
using System.IO;
using System.Net;
using System.Net.Mail;
using ThisSite.Common;
using System.Web.Routing;
using ThisSite.BSLayer;


public partial class Admin_GenerateEdi : AdminPageBase
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnGenrateEdi_Click(object sender, EventArgs e)
    {
        Int64 lOrderId = Convert.ToInt64(txtEdi.Text.Trim());
        int BTcount = 0;
        Order pOrder = new Order(lOrderId);
        for (int i = 0; i < pOrder.pOBooks.Count; i++)
        {

            if ((pOrder.pOBooks[i].vcSource.ToString().ToUpper() == "BT") && BTcount == 0)
            {
                GnrtOrdForBakerEDI(pOrder);              
                BTcount = BTcount + 1;
            }
        }

     
    }

    public  void GnrtOrdForBakerEDI(Order pOrder)
    {
        try
        {
            StringBuilder strBuilder = new StringBuilder();
            int startLine = 0;      
            string DlvryCountry = string.Empty;
            if (pOrder.lDlvryCoutry.HasValue)
            {
                Country pCountry = new Country(Convert.ToInt64(pOrder.lDlvryCoutry.Value));              
                DlvryCountry = pCountry.sISOAlpha2;
            }
            if (pOrder.lDlvryCoutry.HasValue)
            {
                Country pCountry = new Country(Convert.ToInt64(pOrder.lDlvryCoutry.Value));
                //DlvryCountry = pCountry.sCountryNm.Substring(0, 2).ToUpper(); ;
                DlvryCountry = pCountry.sISOAlpha2;
            }
            if (pOrder.lDlvryCoutry.HasValue)
            {
                Country pCountry = new Country(Convert.ToInt64(pOrder.lDlvryCoutry.Value));
                //DlvryCountry = pCountry.sCountryNm.Substring(0, 2).ToUpper(); ;
                DlvryCountry = pCountry.sISOAlpha2;
            }
            string sDlvryStateCode = string.Empty;
            if (!string.IsNullOrEmpty(pOrder.sDlvryStateCode))
            {
                sDlvryStateCode = pOrder.sDlvryStateCode.Substring(0, 2).ToUpper();
            }
            else
            {
                //if (DlvryCountry != "US")
                //{
                //    sDlvryStateCode = "ZZ";
                //}
                int Adrr4lng = 0, Adrr3lng = 0;
                if (!string.IsNullOrEmpty(pOrder.sDlvryAdress4.ToString()))
                {
                    Adrr4lng = pOrder.sDlvryAdress4.Length;
                }
                if (!string.IsNullOrEmpty(pOrder.sDlvryAdress3.ToString()))
                    Adrr3lng = pOrder.sDlvryAdress3.Length;

                if (Adrr3lng >= Adrr4lng)
                    sDlvryStateCode = pOrder.sDlvryAdress4;
                else
                    sDlvryStateCode = pOrder.sDlvryAdress3;


             
                if (DlvryCountry != "US")
                {
                    sDlvryStateCode = "ZZ";
                }
            }

            String Packingslip = "";

            if (DlvryCountry == "US")
            {
                Packingslip = "01130812";
            }
            else if (DlvryCountry == "AU")
            {
                Packingslip = "00048673";
            }
            else if (DlvryCountry == "CA")
            {
                Packingslip = "01130812";
            }
            else
            {
                Packingslip = "01130813";
            }
            //start of  Envelope Header
            // ISA*00*          *00*          *ZZ*01130893       *ZZ*7608772        *130822*0950*U*00401*348940000*1*T*>~
            strBuilder.Append("ISA");
            strBuilder.Append("*");
            strBuilder.Append("00");
            strBuilder.Append("*");
            strBuilder.Append("          ");
            strBuilder.Append("*");
            strBuilder.Append("00");
            strBuilder.Append("*");
            strBuilder.Append("          ");
            strBuilder.Append("*");
            strBuilder.Append("ZZ");
            strBuilder.Append("*");
            strBuilder.Append("01130893");
            strBuilder.Append("*");
            strBuilder.Append("        ");
            strBuilder.Append("ZZ");
            strBuilder.Append("*");
            strBuilder.Append("7608772");
            strBuilder.Append("*");
            string orderdate = pOrder.dtOrderDate.ToString("yy'/'MM'/'dd");
            strBuilder.Append(orderdate.Replace("/", ""));
            strBuilder.Append("*");
            string ordertime = pOrder.dtOrderDate.ToString("hh:mm");
            strBuilder.Append(ordertime.Replace(":", ""));
            strBuilder.Append("*");
            strBuilder.Append("U");
            strBuilder.Append("*");
            strBuilder.Append("00401");
            strBuilder.Append("*");
            string Orderid = Convert.ToString(pOrder.lPOrderId);
            if (Orderid.Length >= 9)
            {
                strBuilder.Append(Orderid);
            }
            else
            {
                int count1, len = 0;
                len = Orderid.Length;
                count1 = 9 - len;
                strBuilder.Append(Orderid);
                for (int i = 1; i <= count1;i++ )                
                {
                    strBuilder.Append("0");
                }

            }            
            strBuilder.Append("*");
            strBuilder.Append("1");
            strBuilder.Append("*");
            strBuilder.Append("T");
            strBuilder.Append("*");
            strBuilder.Append(">");
            strBuilder.Append("~");
            strBuilder.Append("\r\n");

            //GS*PO*01130893*7608772*20130822*0950*348940001*X*004010~
            strBuilder.Append("GS");
            strBuilder.Append("*");
            strBuilder.Append("PO");
            strBuilder.Append("*");
            strBuilder.Append("01130893");
            strBuilder.Append("*");
            strBuilder.Append("7608772");
            strBuilder.Append("*");
            string orderdate1 = pOrder.dtOrderDate.ToString("yyyy'/'MM'/'dd");
            strBuilder.Append(orderdate1.Replace("/", ""));
            strBuilder.Append("*");
            string ordertime1 = pOrder.dtOrderDate.ToString("hh:mm");
            strBuilder.Append(ordertime1.Replace(":", ""));
            strBuilder.Append("*");
            if (Orderid.Length >= 9)
            {
                strBuilder.Append(Orderid);
            }
            else
            {
                int count1, len = 0;
                len = Orderid.Length;
                count1 = 9 - len;
                strBuilder.Append(Orderid);
                for (int i = 1; i <= count1-1; i++)
                {
                    strBuilder.Append("0");
                }
                strBuilder.Append("1");
            }            
            strBuilder.Append("*");
            strBuilder.Append("X");
            strBuilder.Append("*");
            strBuilder.Append("004010");
            strBuilder.Append("~");
            strBuilder.Append("\r\n");



            //ST*850*348940002~
            strBuilder.Append("ST");
            strBuilder.Append("*");
            strBuilder.Append("850");
            strBuilder.Append("*");
            if (Orderid.Length >= 9)
            {
                strBuilder.Append(Orderid);
            }
            else
            {
                int count1, len = 0;
                len = Orderid.Length;
                count1 = 9 - len;
                strBuilder.Append(Orderid);
                for (int i = 1; i <= count1 - 1; i++)
                {
                    strBuilder.Append("0");
                }
                strBuilder.Append("2");
            }  
            strBuilder.Append("~");
            strBuilder.Append("\r\n");

            //the order info
            //BEG*00*DS*34894**20130822~
            strBuilder.Append("BEG");
            strBuilder.Append("*");
            strBuilder.Append("00");
            strBuilder.Append("*");
            strBuilder.Append("DS");
            strBuilder.Append("*");
            strBuilder.Append(pOrder.lPOrderId);
            strBuilder.Append("**");
            string orderdate2 = pOrder.dtOrderDate.ToString("yyyy'/'MM'/'dd");
            strBuilder.Append(orderdate2.Replace("/", ""));
            strBuilder.Append("~");
            strBuilder.Append("\r\n");

            //// carrier details
            //// TD5***ULS~
            //strBuilder.Append("TD5");
            //strBuilder.Append("*");
            //strBuilder.Append("*");
            //strBuilder.Append("*");
            //strBuilder.Append("ULS");
            //strBuilder.Append("~");
            //strBuilder.Append("\r\n");
         
            //Address
          // N1*ST*Jamie Thomas~
          // N3*335 Bourke Street Mall~
          // N4*Melbourne*Vic*3000*AU~

            strBuilder.Append("N1");
            strBuilder.Append("*");
            strBuilder.Append("ST");
            strBuilder.Append("*");
            strBuilder.Append(!string.IsNullOrEmpty(pOrder.sDlvryName) ? pOrder.sDlvryName : "");
            strBuilder.Append("~");
            strBuilder.Append("\r\n");
            strBuilder.Append("N3");
            strBuilder.Append("*");
            strBuilder.Append(!string.IsNullOrEmpty(pOrder.sDlvryAdress1) ? pOrder.sDlvryAdress1.Replace("/", "-") : "");
            strBuilder.Append(!string.IsNullOrEmpty(pOrder.sDlvryAdress2) ? pOrder.sDlvryAdress2.Replace("/", "-") : "");                      
            strBuilder.Append("~");
            strBuilder.Append("\r\n");
            strBuilder.Append("N4");
            strBuilder.Append("*");
            strBuilder.Append(!string.IsNullOrEmpty(pOrder.sDlvryAdress3) ? pOrder.sDlvryAdress3 : "");
            strBuilder.Append("*");
            strBuilder.Append(!string.IsNullOrEmpty(pOrder.sDlvryAdress4) ? pOrder.sDlvryAdress4 : "");
            strBuilder.Append("*");
            strBuilder.Append(!string.IsNullOrEmpty(pOrder.sDlvryPostalCode) ? pOrder.sDlvryPostalCode : "");
            strBuilder.Append("*");
            strBuilder.Append(!string.IsNullOrEmpty(DlvryCountry) ? DlvryCountry : "");
            strBuilder.Append("~");
            strBuilder.Append("\r\n");

            // ISBN No
            pOrder.ordSuppliervcSource = "BT";
            int count = 0, totalqty = 0;
            foreach (Order.POBooks pBook in pOrder.pOBooksOrder)
            {
                if (pBook.vcSource.ToString().ToUpper() == "BT")
                {
                    string sAmount = string.Empty;
                    sAmount = string.Format("{0:0.00}", Math.Round(pBook.decTotalPrice, 4));
                    startLine += 1;
                    strBuilder.Append("PO1");
                    strBuilder.Append("*");
                    strBuilder.Append(startLine.ToString("d2"));
                    strBuilder.Append("*");
                    strBuilder.Append(pBook.iBookQty.ToString());
                    strBuilder.Append("*");
                    strBuilder.Append("EA");
                    strBuilder.Append("*");
                    strBuilder.Append(sAmount.Trim());
                    strBuilder.Append("*");
                    strBuilder.Append("PE");
                    strBuilder.Append("*");
                    strBuilder.Append("IB");
                    strBuilder.Append("*");
                    strBuilder.Append(pBook.sIsbn);
                    strBuilder.Append("~");
                    strBuilder.Append("\r\n");
                    count++;
                    totalqty = totalqty + pBook.iBookQty;
                }

            }
            strBuilder.Append("CTT");
            strBuilder.Append("*");
            strBuilder.Append(count);
            strBuilder.Append("*");
            strBuilder.Append(totalqty);
            strBuilder.Append("~");
            strBuilder.Append("\r\n");
            strBuilder.Append("SE");
            strBuilder.Append("*");
            strBuilder.Append("9");
            strBuilder.Append("*");
            if (Orderid.Length >= 9)
            {
                strBuilder.Append(Orderid);
            }
            else
            {
                int count1, len = 0;
                len = Orderid.Length;
                count1 = 9 - len;
                strBuilder.Append(Orderid);
                for (int i = 1; i <= count1 - 1; i++)
                {
                    strBuilder.Append("0");
                }
                strBuilder.Append("2");
            }  
            strBuilder.Append("~");
            strBuilder.Append("\r\n");
            strBuilder.Append("GE");
            strBuilder.Append("*");
            strBuilder.Append(count);
            strBuilder.Append("*");
            if (Orderid.Length >= 9)
            {
                strBuilder.Append(Orderid);
            }
            else
            {
                int count1, len = 0;
                len = Orderid.Length;
                count1 = 9 - len;
                strBuilder.Append(Orderid);
                for (int i = 1; i <= count1 - 1; i++)
                {
                    strBuilder.Append("0");
                }
                strBuilder.Append("1");
            }    
            strBuilder.Append("~");
            strBuilder.Append("\r\n");
            //         IEA*1*000000118~
            strBuilder.Append("IEA");
            strBuilder.Append("*");
            strBuilder.Append(count);
            strBuilder.Append("*");
            if (Orderid.Length >= 9)
            {
                strBuilder.Append(Orderid);
            }
            else
            {
                int count1, len = 0;
                len = Orderid.Length;
                count1 = 9 - len;
                strBuilder.Append(Orderid);
                for (int i = 1; i <= count1 ; i++)
                {
                    strBuilder.Append("0");
                }
             
            }    
            strBuilder.Append("~");



            SaveOrderBakerFile(strBuilder.ToString(), pOrder.lPOrderId.ToString(), ".DONE");
            txtEdi.Text = "";
            string strPath = HttpContext.Current.Server.MapPath(Resources.Paths.BTOrderFilePath + pOrder.lPOrderId.ToString() + ".DONE");
            strPath = strPath.ToLower();
            strPath = strPath.Replace("\\admin", "");
            strPath = strPath.Replace("done", "DONE");
            strPath = strPath.Replace("ord", "ORD");          
            //redirect to your physical location
            FileStream fs = new FileStream(strPath, FileMode.Open);
            byte[] bytes = new byte[(int)fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            fs.Close();
            //HttpResponse Response = HttpContext.Current.Response;
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(strPath.Split('\\')[strPath.Split('\\').Length - 1], System.Text.Encoding.UTF8));
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
         
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    #region Save Baker File in BTOrder file
    public  void SaveOrderBakerFile(string pOrder, string pFileName, string FileSource)
    {
        try
        {
            string strPath = HttpContext.Current.Server.MapPath(Resources.Paths.BTOrderFilePath + pFileName + FileSource);
            strPath = strPath.ToLower();
            strPath = strPath.Replace("\\admin", "");
            strPath = strPath.Replace("done", "DONE");
            strPath = strPath.Replace("ord", "ORD");
            using (System.IO.StreamWriter SW = new System.IO.StreamWriter(strPath))
            {
                SW.WriteLine(pOrder);
                SW.Close();
               
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #endregion
}

No comments:

Post a Comment