using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Telerik.Web.UI;
using Telerik.Web.UI.Upload;

using BE;
using BL;
using Utilitaria;



public partial class frmArchivos : System.Web.UI.Page
{
        DataTable myDt = new DataTable();
        DataTable myDtElimina = new DataTable();

        protected void Page_Load(object sender, System.EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                // myDt = CreateDataTable();
                //ups_AsientosContablesArchivos_select '','1349','2010'
                ViewState["AsientoContableArchivoID"] = "0";
                ViewState["AsientoContableID"] = Request.QueryString["AsientoContableID"].ToString();//"1349";
                try
                {
                    ViewState["Glosa"] = Request.QueryString["Glosa"].ToString();
                }
                catch
                {
                    ViewState["Glosa"] = "";
                }
                ViewState["SubDiarioID"] = Request.QueryString["SubDiarioID"].ToString();//"1349";
                ViewState["EstablecimientoID"] = Session["EmpresaID"];
                ViewState["HotelID"] = Session["HotelID"];
                ViewState["Periodo"] = Session["txtPeriodo"];
                ViewState["Directorio"] = Directorio();
                ViewState["Carpeta1"] = ViewState["EstablecimientoID"].ToString() + "_" +
                                        ViewState["HotelID"].ToString() + "_" +
                                        ViewState["Periodo"].ToString() + "_" +
                                        ViewState["SubDiarioID"].ToString();
                ViewState["Carpeta2"] = ViewState["SubDiarioID"].ToString() + "_" +
                                        ViewState["AsientoContableID"];

                ViewState["TempArchivos"] = (Session["TempArchivos"] == null) ? CreaDataTable() : Session["TempArchivos"];
                tk_Grid.Rebind();
                this.labelNoResults.Text = "Tipos de archivos admitidos: " + Cls_Utilitaria.f_MostrarTituloWeb(2009, 2);
            }
        }

        private DataTable CreaDataTable()
        {
            DataTable myDataTable = new DataTable();

            myDataTable.Columns.Add("id", typeof(int)).AutoIncrement = true;
            myDataTable.Columns.Add("AsientoContableArchivoID", typeof(String));
            myDataTable.Columns.Add("NombreArchivo", typeof(String));
            myDataTable.Columns.Add("BEAsientosContables.Glosa", typeof(String));
            myDataTable.Columns.Add("AsientoContableID", typeof(String));
            myDataTable.Columns.Add("Periodo", typeof(String));
            myDataTable.Columns.Add("Directorio", typeof(String));
            
            return myDataTable;
        }

        private void AddDataToTable(String[] Parametros, DataTable myTable)
        {
            DataRow row;
            row = myTable.NewRow();
            //row["id"] = Parametros[0];
            row["AsientoContableArchivoID"] = Parametros[1];
            row["NombreArchivo"] = Parametros[2];
            row["BEAsientosContables.Glosa"] = Parametros[3];
            row["AsientoContableID"] = Parametros[4];
            row["Periodo"] = Parametros[5];
            row["Directorio"] = Parametros[6];

            myTable.Rows.Add(row);
        }

        private void UpdDataToTable(String[] Parametros, DataTable myTable)
        {
            DataRow[] changedRows = ((DataTable)Session["myDatatable"]).Select("ID=" + Parametros[0]);
            Hashtable newValues = new Hashtable();

            DataRow changedRow = changedRows[0];
            changedRow.BeginEdit();

            changedRow["AsientoContableArchivoID"] = Parametros[1];
            changedRow["NombreArchivo"] = Parametros[2];
            changedRow["BEAsientosContables.Glosa"] = Parametros[3];
            changedRow["AsientoContableID"] = Parametros[4];
            changedRow["Periodo"] = Parametros[5];
            changedRow["Directorio"] = Parametros[6];
            
            changedRow.EndEdit();
        }

        private void DelDataToTable(String cont, DataTable myTable)
        {
            if (myTable.Rows.Count > 0)
            {
                myTable.Rows.Remove(myTable.Rows[Convert.ToInt32(cont)]);
            }
        }

        private void listar_Archivos(String AsientoContableArchivoID,String AsientoContableID,String EstablecimientoID,String Periodo)
        {
            if (!String.IsNullOrEmpty(AsientoContableID))
            {
                BEAsientosContablesArchivos objet_AsientosContablesArchivos = new BEAsientosContablesArchivos();
                BLAsientosContablesArchivos objlg_AsientosContablesArchivos = new BLAsientosContablesArchivos();

                if (AsientoContableID == "0")
                {
                    tk_Grid.DataSource = ViewState["TempArchivos"];
                }
                else
                {
                    tk_Grid.DataSource = objlg_AsientosContablesArchivos.fnSelAsientosContablesArchivosDin(AsientoContableArchivoID, AsientoContableID, EstablecimientoID, Periodo);
                }
                
               
                objet_AsientosContablesArchivos = null;
                objlg_AsientosContablesArchivos = null;
            }
            

        }

        private void Guardar_Archivos(String AsientoContableArchivoID, String NombreArchivo, String AsientoContableID, String Periodo)
        {
            if (!String.IsNullOrEmpty(AsientoContableArchivoID))
            {
                BEAsientosContablesArchivos objet_AsientosContablesArchivos = new BEAsientosContablesArchivos();
                BLAsientosContablesArchivos objlg_AsientosContablesArchivos = new BLAsientosContablesArchivos();

                objet_AsientosContablesArchivos.AsientoContableArchivoID = AsientoContableArchivoID;
                objet_AsientosContablesArchivos.NombreArchivo = NombreArchivo;
                objet_AsientosContablesArchivos.AsientoContableID = AsientoContableID;
                objet_AsientosContablesArchivos.Periodo = Periodo;

                objlg_AsientosContablesArchivos.fnInsUpdAsientosContablesArchivos(objet_AsientosContablesArchivos);

                objet_AsientosContablesArchivos = null;
                objlg_AsientosContablesArchivos = null;

            }

        }

        protected void buttonSubmit_Click(object sender, System.EventArgs e)
        {
            if (!BindResults())
                return;

            String AsientoContableID = ViewState["AsientoContableID"].ToString();
            if (AsientoContableID != "0")
            {
                String Carpeta1 = ViewState["Carpeta1"].ToString();
                String Carpeta2 = ViewState["Carpeta2"].ToString();

                String dir = Cls_Utilitaria.f_MostrarTituloWeb(2007, 2).Trim() + Carpeta1 + "\\" + Carpeta2 + "\\";
                //dir = Server.MapPath("archivos\\" + Carpeta1 + "\\" + Carpeta2 + "\\");

                DirectoryInfo dire = new DirectoryInfo(dir); ;
                dire.Create();

                //To save the selected files uncomment the following lines
                foreach (string fileInputID in Request.Files)
                {
                    UploadedFile file = UploadedFile.FromHttpPostedFile(Request.Files[fileInputID]);
                    HttpPostedFile fil = file1.PostedFile;
                    //System.IO.Path.GetFullPath(file.FileName);
                    if (file.ContentLength > 0)
                    {
                        //fil.SaveAs(Server.MapPath(@"~\1\2\3\" + file.GetName()));
                        file.SaveAs(dir + file.GetName());
                        Guardar_Archivos("0", file.GetName(), ViewState["AsientoContableID"].ToString(), ViewState["Periodo"].ToString());
                        tk_Grid.Rebind();
                    }
                }
            }
            else
            {
                String[] par = new String[7];
                par[1] = ViewState["AsientoContableArchivoID"].ToString();
                par[2] = labelRes1.Text;
                par[3] = ViewState["Glosa"].ToString();
                par[4] = ViewState["AsientoContableID"].ToString();
                par[5] = ViewState["Periodo"].ToString();
                par[6] = "";

                AddDataToTable(par, (DataTable)ViewState["TempArchivos"]);
                tk_Grid.Rebind();
            }
        }

        private Boolean BindResults()
        {
            if (Request.Files.Count > 0)
            {
                //divResults.Visible = true;
                labelNoResults.Visible = false;
                Request.Files.GetType();
                System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "", "ActiveFileUpload();", true);
                System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "", "GetDirectory();", true);
                String asd = file1.Value;
                if (!Object.Equals(UploadedFile.FromHttpPostedFile(Request.Files[file1.UniqueID]), null))
                {
                    String Extension = UploadedFile.FromHttpPostedFile(Request.Files[file1.UniqueID]).GetExtension().ToUpper();
                    String[] Extensiones = Cls_Utilitaria.f_MostrarTituloWeb(2009, 2).ToUpper().Trim().TrimStart(' ').Split(',');

                    for (int i = 0; i < Extensiones.Length; i++)
                    {
                        if (Extension == Extensiones[i].Trim())
                        {
                            labelRes1.Text = UploadedFile.FromHttpPostedFile(Request.Files[file1.UniqueID]).FileName;
                            return true;
                        }
                        else
                        {
                            if (i == Extensiones.Length - 1)
                            {
                                labelRes1.Text = "Tipo de archivo no admitido";
                                return false;
                            }
                            else
                                continue;
                        }
                    }
                }
                return false;
            }
            else
            {
                labelNoResults.Visible = true;
                return false;
                //divResults.Visible = false;
            }
        }

        protected void tk_Grid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
            //ups_AsientosContablesArchivos_select '','1349','2010'
            listar_Archivos(ViewState["AsientoContableArchivoID"].ToString(), ViewState["AsientoContableID"].ToString(), ViewState["EstablecimientoID"].ToString(), ViewState["Periodo"].ToString());
        }

        private String Directorio()
        {
            BEParametrosGenerales objBEParametrosGenerales = new BEParametrosGenerales();
            BLParametrosGenerales objBLParametrosGenerales = new BLParametrosGenerales();
            objBEParametrosGenerales.ParametroGeneralID = 2007;
            objBEParametrosGenerales = objBLParametrosGenerales.fnSelParametrosGenerales(objBEParametrosGenerales)[0];

            return objBEParametrosGenerales.Valor;

        }

        protected void tk_Grid_ItemCommand(object source, GridCommandEventArgs e)
        {
            if (e.CommandName == "Delete")
            {
                if (e.Item is GridDataItem)
                {
                    GridDataItem item = (GridDataItem)e.Item;
                    String AsientoContableArchivoID = item.GetDataKeyValue("AsientoContableArchivoID").ToString().Trim();
                    String AsientoContableID = ViewState["AsientoContableID"].ToString();
                    String Periodo = ViewState["Periodo"].ToString();
                    BEAsientosContablesArchivos objBEAsientosContablesArchivos = new BEAsientosContablesArchivos();
                    objBEAsientosContablesArchivos.AsientoContableArchivoID = AsientoContableArchivoID;
                    objBEAsientosContablesArchivos.AsientoContableID = AsientoContableID;
                    objBEAsientosContablesArchivos.Periodo = Periodo;

                    BLAsientosContablesArchivos objBLAsientosContablesArchivos = new BLAsientosContablesArchivos();
                    objBLAsientosContablesArchivos.fnDelAsientosContablesArchivos(objBEAsientosContablesArchivos);
                }
            }

        }
        String CurrUrl;
        protected void tk_Grid_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                String d = ViewState["Directorio"].ToString().Substring((ViewState["Directorio"].ToString().IndexOf("archivos", 0)), 8);
                String Dir = d+"/" +ViewState["Carpeta1"].ToString() + "/" + ViewState["Carpeta2"].ToString();
                //Dir= Dir.Replace("\\", "/");
                GridItem ee = e.Item;
                GridDataItem dataItem = (GridDataItem)e.Item;
                HyperLink linkItem = new HyperLink();
                CurrUrl = Dir+ "/" + dataItem["NombreArchivo"].Text.Trim();
                linkItem.NavigateUrl = "#";
                linkItem.Text = dataItem["NombreArchivo"].Text;
                linkItem.CssClass = "gridtext";
                linkItem.Attributes.Add("OnClick", "return AbreVentana('" + CurrUrl + "');");
                dataItem["NombreArchivo"].Controls.Add(linkItem);
                
            }
        }
}
