Exemple #1
0
        public JsonResult IniciaCargaCSV(string Ruta, int UsuarioID)
        {
            ProcesoDto       ProDto       = new ProcesoDto();
            ControlLog       Log          = new ControlLog();
            ProcesoAvanceDto ProcADto     = new ProcesoAvanceDto();
            Proceso          Proc         = new Proceso();
            ObjetoDto        ObjDto       = new ObjetoDto();
            bool             respuesta    = false;
            bool             ValidaLayOut = true;
            int           DependenciaID   = 0;
            DataTable     DatosParseo;
            DataRow       DatoProceso;
            List <string> Resultado = new List <string>();

            try
            {
                using (TextFieldParser Lector = new TextFieldParser(Ruta))
                {
                    Lector.SetDelimiters(new string[] { "," });
                    Lector.HasFieldsEnclosedInQuotes = true;

                    //Lector.ReadLine();

                    string[] LayOut = new string[] { "AplicacionID", "ClaveAplicacion", "NumLinea", "Referencia", "ObjetoBDID", "Objeto", "TipoObjetoID", "TipoObjeto", "BaseDatosID", "BaseDatos", "Archivo", "Extension", "BibPadre", "ObjPadre" };

                    while (!Lector.EndOfData)
                    {
                        string[] LineaActual = Lector.ReadFields();
                        if (Lector.LineNumber == 2)
                        {
                            for (int i = 0; i < LineaActual.Length; i++)
                            {
                                if (LineaActual[i].ToString() != LayOut[i].ToString())
                                {
                                    ValidaLayOut = false;
                                }
                            }
                        }
                        else
                        {
                            if (ValidaLayOut)
                            {
                                ObjDto.CveAplicacion = LineaActual[1].ToString();
                                ObjDto.BibPadre      = LineaActual[12].ToString();
                                ObjDto.ObjPadre      = LineaActual[13].ToString();
                                ObjDto.BaseDatosID   = int.Parse(LineaActual[8]);
                                ObjDto.ObjetoID      = int.Parse(LineaActual[4]);
                                ObjDto.TipoID        = int.Parse(LineaActual[6]);
                                ObjDto.NumLinea      = int.Parse(LineaActual[2]);
                                ObjDto.Referencia    = LineaActual[3].ToString();
                                ObjDto.Archivo       = LineaActual[10].ToString();
                                ObjDto.Lenguaje      = LineaActual[11].ToString();

                                string Archivo = Path.GetFileName(ObjDto.Archivo);
                                Archivo             = Regex.Replace(Archivo, @"\.\w+", string.Empty).Trim();
                                ProDto.AplicacionID = int.Parse(ObjDto.CveAplicacion);
                                ++DependenciaID;
                                Resultado.Add(DependenciaID + "¡" + ObjDto.CveAplicacion + "¡" + (string.IsNullOrEmpty(ObjDto.BibPadre) ? Archivo : ObjDto.BibPadre) + "¡" + " " + "¡" + (string.IsNullOrEmpty(ObjDto.ObjPadre) ? Archivo : ObjDto.ObjPadre) + "¡" + ObjDto.BaseDatosID.ToString() + "¡" + ObjDto.ObjetoID.ToString() + "¡" + ObjDto.TipoID.ToString() + "¡" + ObjDto.NumLinea.ToString() + "¡" + ObjDto.Referencia + "¡" + ObjDto.Archivo + "¡" + ObjDto.Lenguaje);
                            }
                            else
                            {
                                Log.EscribeLog("LayOut incorrecto del archivo .csv.");
                                return(null);
                            }
                        }
                    }

                    if (Resultado.Count >= 1 && ProDto.AplicacionID > 0)
                    {
                        DatosParseo = Proc.ConsultaProceso(ProDto.AplicacionID);
                        if (DatosParseo.Rows.Count >= 1)
                        {
                            DatoProceso      = DatosParseo.Rows[0];
                            ProDto.UsuarioID = UsuarioID;
                            ProDto.ProcesoID = long.Parse(DatoProceso["ProcesoID"].ToString());

                            Proc.EliminarParseo(ProDto, 0);
                            Proc.GuardaProcesoBD(ProcADto, ProDto, Resultado);
                        }
                        else
                        {
                            Log.EscribeLog("No se realizo la carga completa del archivo .csv");
                            DatosParseo = null;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.EscribeLog("No existe un ProcesoID cargado. No es posible cargar el archivo " + Path.GetFileName(Ruta));
                return(null);
            }

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }