public string getListTipoPlantilla()
        {
            // Declare once, keep using
            var nTimeout = 30; // timeout
            var bLog     = true;

            var connectionString = ShiolConfiguration.Instance.Config.SqlServerConnection.ConnectionString;
            // Create with a timeout of 30 seconds and logging as true
            var oSql = new Sql(connectionString, nTimeout, bLog);


            var strSql = "SELECT * FROM tipoPlantillas";
            SqlResultWithDataSet oResult = oSql.Open(strSql, CommandType.Text);

            string json = null;
            List <PlantillaExcel> fields = new List <PlantillaExcel>();

            try
            {
                foreach (DataRow row in oResult.Results.Tables[0].Rows)
                {
                    PlantillaExcel field = new PlantillaExcel(row["tipoPlantillaID"].ToString().Trim(), "");
                    field.tipo_nombre = row["nombre"].ToString();
                    field.tipo        = row["tipoPlantillaID"].ToString().Trim();
                    fields.Add(field);
                }
                json = JsonConvert.SerializeObject(fields);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return(json);
        }
        public string getListTipoPlantillas()
        {
            string json = null;
            List <PlantillaExcel> fields = new List <PlantillaExcel>();

            try
            {
                PlantillaExcel field = new PlantillaExcel("1", "Excel 1");
                field.estado = "Procesado1";
                field.tipo   = "1";
                fields.Add(field);
                field        = new PlantillaExcel("2", "Excel 2");
                field.estado = "Procesado2";
                field.tipo   = "2";
                fields.Add(field);
                field        = new PlantillaExcel("3", "Excel 3");
                field.estado = "Procesado3";
                field.tipo   = "2";
                fields.Add(field);
                json = JsonConvert.SerializeObject(fields);
            }
            catch
            {
            }

            return(json);
        }
        public string getPlantilla1(string id)
        {
            string json = null;
            List <PlantillaExcel> fields = new List <PlantillaExcel>();

            try
            {
                PlantillaExcel field = new PlantillaExcel("1", "Excel 1");
                field.estado = "Procesado1";
                field.tipo   = "1";
                fields.Add(field);
                field        = new PlantillaExcel("2", "Excel 2");
                field.estado = "Procesado2";
                field.tipo   = "2";
                fields.Add(field);
                field             = new PlantillaExcel("3", "Excel 3");
                field.estado      = "Procesado3";
                field.descripcion = "aklklaka";
                field.id          = "777";
                field.tipo        = "2";
                fields.Add(field);
                json = JsonConvert.SerializeObject(field);
            }
            catch
            {
            }

            return(json);
        }
        public static string getShiolExcelFiles()
        {
            string json = null;
            List <PlantillaExcel> fields = new List <PlantillaExcel>();

            try
            {
                PlantillaExcel field = new PlantillaExcel("1", "Excel 1");
                field.estado = "Procesado";
                field.tipo   = "RH";
                fields.Add(field);
                field        = new PlantillaExcel("2", "Excel 2");
                field.estado = "Procesado";
                field.tipo   = "CT";
                fields.Add(field);
                field        = new PlantillaExcel("3", "Excel 3");
                field.estado = "Procesado";
                field.tipo   = "ST";
                fields.Add(field);
                json = JsonConvert.SerializeObject(fields);
            }
            catch
            {
            }

            return(json);
        }
        public string getPlantilla(string id)
        {
            // Declare once, keep using
            var nTimeout = 30; // timeout
            var bLog     = true;

            var connectionString = ShiolConfiguration.Instance.Config.SqlServerConnection.ConnectionString;
            // Create with a timeout of 30 seconds and logging as true
            var oSql = new Sql(connectionString, nTimeout, bLog);

            var strSql = "SELECT tp.nombre, p.* FROM PlantillasProcesadas p Left Join tipoPlantillas tp On tp.tipoPlantillaID = p.tipoPlantillaID Where plantillaProcesadaID='" + id + "'";
            SqlResultWithDataSet oResult = oSql.Open(strSql, CommandType.Text);

            string json = null;
            List <PlantillaExcel> fields = new List <PlantillaExcel>();

            try
            {
                if (oResult.Results.Tables[0].Rows.Count > 0)
                {
                    DataRow row = oResult.Results.Tables[0].Rows[0];

                    PlantillaExcel field = new PlantillaExcel(row["plantillaProcesadaID"].ToString().Trim(), row["usuarioID"].ToString());
                    field.estado         = row["estado"].ToString() == "2" ? "Procesado" : (row["estado"].ToString() == "1" ? "Procesando" : "No Procesado");
                    field.tipo_nombre    = row["nombre"].ToString();
                    field.tipo           = row["tipoPlantillaID"].ToString().Trim();
                    field.archivo        = row["rutaArchivo"].ToString();
                    field.fecha_creacion = row["fechaCarga"].ToString();
                    field.fecha_proceso  = row["fechaProceso"].ToString();
                    //field.descripcion = "xxxx";
                    fields.Add(field);

                    json = JsonConvert.SerializeObject(field);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return(json);
        }
        public string getListExcelFiles(Request req, Response res)
        {
            // Declare once, keep using
            var nTimeout = 30; // timeout
            var bLog     = true;

            var connectionString = ShiolConfiguration.Instance.Config.SqlServerConnection.ConnectionString;
            // Create with a timeout of 30 seconds and logging as true
            var oSql = new Sql(connectionString, nTimeout, bLog);



            /*SELECT TOP 1000 [plantillaProcesadaID]
             * ,[fechaCarga]
             * ,[horaCarga]
             * ,[tipoPlantillaID]
             * ,[usuarioID]
             * ,[rutaArchivo]
             * ,[fechaProceso]
             * ,[horaProceso]
             * ,[usuarioIDProcesa]
             * ,[estado]
             * FROM[SHIOL_DATOS].[dbo].[PlantillasProcesadas]
             */


            int Estado = req.PathVariables["estado"] != null?Convert.ToInt32(req.PathVariables["estado"]) : -1;

            int Tipo = req.PathVariables["tipo"] != null?Convert.ToInt32(req.PathVariables["tipo"]) : -1;

            string FechaCreacion = req.PathVariables["fecha_creacion"] != null ? req.PathVariables["fecha_creacion"].Substring(0, 10) : "";

            string strWhere = "";

            if (Tipo > -1)
            {
                strWhere = "Where " + "p.tipoPlantillaID" + "=" + Tipo;
            }
            if (Estado > -1)
            {
                strWhere += strWhere == "" ? "Where p.Estado ='" + Estado + "' " : " And  p.Estado ='" + Estado + "' ";
            }

            if (FechaCreacion != "")
            {
                strWhere += strWhere == "" ? "Where FORMAT(fechaCarga, 'yyyy-MM-dd') ='" + FechaCreacion + "' " : " And  FORMAT(fechaCarga, 'yyyy-MM-dd') ='" + FechaCreacion + "' ";
            }

            //OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;

            string strCount = "0";

            SqlResultWithDataSet oResult = null;

            try
            {
                var strSql = "SELECT count(*) as _total FROM PlantillasProcesadas p Left Join tipoPlantillas tp On tp.tipoPlantillaID = p.tipoPlantillaID  " + strWhere;
                oResult  = oSql.Open(strSql, CommandType.Text);
                strCount = oResult.Results.Tables[0].Rows[0]["_total"].ToString();

                strSql  = "SELECT tp.nombre, p.* FROM PlantillasProcesadas p Left Join tipoPlantillas tp On tp.tipoPlantillaID = p.tipoPlantillaID  " + strWhere + " ORDER by p.fechaCarga DESC OFFSET " + req.PathVariables["_start"] + " ROWS FETCH NEXT " + (Convert.ToInt32(req.PathVariables["_end"]) - Convert.ToInt32(req.PathVariables["_start"])) + " ROWS ONLY;";
                oResult = oSql.Open(strSql, CommandType.Text);
            }catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }



            string json = null;
            List <PlantillaExcel> fields = new List <PlantillaExcel>();

            try
            {
                foreach (DataRow row in oResult.Results.Tables[0].Rows)
                {
                    PlantillaExcel field = new PlantillaExcel(row["plantillaProcesadaID"].ToString().Trim(), row["usuarioID"].ToString());
                    field.estado         = row["estado"].ToString() == "2" ? "Procesado" : (row["estado"].ToString() == "1" ? "En Proceso" : "No Procesado");
                    field.tipo_nombre    = row["nombre"].ToString();
                    field.tipo           = row["tipoPlantillaID"].ToString();
                    field.archivo        = row["rutaArchivo"].ToString();
                    field.fecha_creacion = row["fechaCarga"].ToString();
                    field.fecha_proceso  = row["fechaProceso"].ToString();
                    fields.Add(field);
                }

                json = JsonConvert.SerializeObject(fields);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            res.httpListenerResponse.Headers.Add("Access-Control-Expose-Headers", "X-Total-Count");
            res.httpListenerResponse.Headers.Add("X-Total-Count", strCount);

            return(json);
        }
        public bool processPlantillaExcel(string id)
        {
            // Declare once, keep using
            var nTimeout = 30; // timeout
            var bLog     = true;

            PlantillaExcel plantilla = getPlantillaField(id);

            if (plantilla == null)
            {
                return(false);
            }
            string path = ShiolConfiguration.Instance.Config.DirPlantillas; //ConfigurationManager.AppSettings["dirPlantillas"]; //@"D:\SGH_Sistemas\";

            var connectionString = ShiolConfiguration.Instance.Config.SqlServerConnection.ConnectionString;
            // Create with a timeout of 30 seconds and logging as true
            var oSql = new Sql(connectionString, nTimeout, bLog);

            string file = Path.Combine(path, plantilla.archivo); // @"D:\SGH_Sistemas\ShiolExcelService\ShiolWinSvc\FastExcel\FastExcelDemo\bin\Debug\SHIOL 1-31 FINAL.XLSX";

            if (!File.Exists(file))
            {
                Console.WriteLine("Archivo : " + file + " no existe");
                return(false);
            }


            List <TableField> fields = getExcelStructure(file);

            if (fields.Count > 0)
            {
                string TableName = createTable(fields, oSql);

                Console.WriteLine("Generated : " + TableName);

                createRecords(file, fields, TableName, oSql);

                SqlResultWithDataSet oResult = oSql.Open("USP_Plantilla_Excel_CargaCuentasPorPagar_RH @nombreTabla = '" + TableName + "';",
                                                         CommandType.Text
                                                         );

                /*
                 * oResult = oSql.Open("IF OBJECT_ID('dbo."+TableName+"', 'U') IS NOT NULL DROP TABLE dbo."+TableName+"; ",
                 *  CommandType.Text
                 * );
                 */
                oResult = oSql.Open("Update PlantillasProcesadas Set  estado = 2 Where plantillaProcesadaID = @id",
                                    CommandType.Text,
                                    new SqlParameter("id", id)
                                    );

                Console.WriteLine("Processed : " + TableName);


                return(true);
            }
            else
            {
                Console.WriteLine("No Processed...");
                return(false);
            }
        }