예제 #1
0
        /// Verifica si los archivos enviados son los que se deberian enviar segun el mes y el tipo de entidad
        private bool validarArchivosEnviadosNombres(List <ArchivoCargado> archivosEnv)
        {
            bool correcto = true;

            // se obtiene la lita de archivos que corresponden a la compañia segun el mes
            List <Archivo> archivosValidos = ArchivosController.getArchivosDeEntidadMes(this.codigoEntidad, this.mesControl);

            if (archivosValidos.Count != archivosEnv.Count)
            {
                correcto = false;
                // EE-02  "La cantidad de archivos enviados no corresponde
                this.errores.Add(err("002", "", "deberían ser " + archivosValidos.Count + " archivos y se cargaron:  " + archivosEnv.Count + " .", 0, 0));
            }

            foreach (Archivo arch in archivosValidos)
            {
                string         nombreArchivo = this.nombreArchivo(codigoEntidad, mesControl, anoControl, arch.codigo);
                ArchivoCargado carg          = (from i in archivosEnv where i.nombre.ToUpper() == nombreArchivo.ToUpper() select i).FirstOrDefault();

                if (carg == null)
                {
                    correcto = false;
                    // EE-03 "Falta el archivo "
                    this.errores.Add(err("003", nombreArchivo, nombreArchivo, 0, 0));
                }
                else
                {
                    carg.codigo          = arch.codigo;
                    carg.validacionTexto = arch.validacion;
                }
            }
            return(correcto);
        }
예제 #2
0
        [Authorize(Roles = "carga_informacion,operador,administrador")] // definir sólo los roles que pueden invocar a esta acción
        public object validacionFormato([FromBody] dynamic objetoRecibido)
        {
            try
            {
                // my code
                string token = HttpHelpers.GetTokenFromHeader(HttpContext);
                if (token == "")
                {
                    return(Unauthorized());
                }

                Base helper = new Base(AppSettings, token, HttpContext.Connection.RemoteIpAddress.ToString());


                // some stuff


                //if (helper.CiaId == "101")
                //{

                //}
                // end my code


                if (helper.Role == "carga_informacion")
                {
                    objetoRecibido.cod_entidad = helper.CiaId;
                }

                inicializaDatos(objetoRecibido.cod_entidad.ToString());
                bool correcto = true;
                int  validezF = 4; //valido

                foreach (var item in objetoRecibido.archivosCargados)
                {
                    ArchivoCargado env = new ArchivoCargado();
                    env.nombre = item.nombre.ToString();
                    env.texto  = item.texto.ToString();
                    archivosEnv.Add(env);
                }

                // ####  PROCESOS DE VALIDACION

                this.resultado.erroresF = this.errores;
                // #### Verifica si la entidad con la que el usuario se hace log, existe y esta activa, caso contrario se sale con errorF:  error de Entida no existente
                if (correcto && !validarEntidad())
                {
                    correcto = false;
                    validezF = 1;
                    return(resultado);
                }

                // #### Verifica que los archivos enviados son los correctos correctos.  Si no estan todos los archivos correctos, retorna mostrando los errores
                if (correcto && !validarArchivosEnviadosNombres(this.archivosEnv))
                {
                    correcto = false;
                    validezF = 1;
                }

                // #### SI  LOS ARCHIVOS SON LOS CORRECTOS SE REALIZA ESTA PARTE
                // convierte el campo validaciones a un JSON y transforma el texto en un Array de filas y columnas
                if (correcto)
                {
                    this.transformaDatos(this.archivosEnv);
                }

                // #### VERIFICA LAS VALIDACIONES JSON
                // #### Se realiza la  Validacion de formato de texto (columnas, y typos de datos),
                // llegando aqui se cargan las listas de departamentos, monedas, modalidades, modalidadesRamos, modalidadesRamosPolizas
                // la funcion devuelve V EE o A; segun el error o advertencia en caso de las validaciones mayor que 0.
                string estadoValidaFormato = "";
                if (correcto)
                {
                    estadoValidaFormato = this.validarFormatoTexto(this.archivosEnv);
                }

                if (correcto && estadoValidaFormato != "V")                //si es distinto de valido se setea el estadoEnvio segun el error //////////////////////////
                {
                    validezF = estadoValidaFormato == "EE" ? 1 : 3;        // es Error 1: EE o 3:  Advertencia
                    correcto = estadoValidaFormato == "EE" ? false : true; // En esta validacion de formato solo puede ser EE A o V, si no es EE es correcto
                }

                // antes de insertar se eliminan los registros de los archivos , de igual manera si hubieron errors se eliminan los registros
                eliminarDeTablaVal("A", this.codigoEntidad, this.fechaCorte);
                eliminarDeTablaVal("B", this.codigoEntidad, this.fechaCorte);
                eliminarDeTablaVal("C", this.codigoEntidad, this.fechaCorte);
                eliminarDeTablaVal("D", this.codigoEntidad, this.fechaCorte);
                eliminarDeTablaVal("E", this.codigoEntidad, this.fechaCorte);
                eliminarDeTablaVal("F", this.codigoEntidad, this.fechaCorte);
                eliminarDeTablaVal("G", this.codigoEntidad, this.fechaCorte);
                eliminarDeTablaVal("H", this.codigoEntidad, this.fechaCorte);
                //ingresa los datos a las tablas
                if (correcto)
                {
                    foreach (var arch in this.archivosEnv)
                    {
                        int i = 0;
                        foreach (var registro in arch.objetosFila)
                        {
                            try
                            {
                                insertarITF(arch.codigo, registro);
                                i++;
                            }
                            catch (System.Exception ex)
                            {
                                // EE - 00 "No se pudo guardar la información, por favor intente de enviar nuevamente todos los archivos, ",
                                errores.Add(err("000", arch.nombre, "Si continua el error, comuniquese con la APS, comunicando el siguiente mensaje:  \n Error de tabla al insertar, " + ex.Message, 0, 0));
                                eliminarDeTablaVal("A", this.codigoEntidad, this.fechaCorte);
                                eliminarDeTablaVal("B", this.codigoEntidad, this.fechaCorte);
                                eliminarDeTablaVal("C", this.codigoEntidad, this.fechaCorte);
                                eliminarDeTablaVal("D", this.codigoEntidad, this.fechaCorte);
                                eliminarDeTablaVal("E", this.codigoEntidad, this.fechaCorte);
                                eliminarDeTablaVal("F", this.codigoEntidad, this.fechaCorte);
                                eliminarDeTablaVal("G", this.codigoEntidad, this.fechaCorte);
                                eliminarDeTablaVal("H", this.codigoEntidad, this.fechaCorte);
                                correcto = false;
                                validezF = 1;
                                break;
                            }
                        }
                    }
                }

                // borra los errores relacionados con seguiiento_envios no vigentes
                ErroresController.borrarErroresDelLaMismaApertura(this.codigoEntidad);
                int idSeguimiento = SgmntController.insertarSeguimientoEnvio(this.codigoEntidad, validezF);
                int estadoValidez = 4;
                foreach (Error errorF in this.errores)
                {
                    errorF.id_seguimiento_envio = idSeguimiento;
                    errorF.creado_por           = helper.UsuarioId;
                    ErroresController.insertarError(errorF);

                    errorF.desc_error = descError(errorF.cod_error);
                    if (errorF.estadoValidez < estadoValidez)
                    {
                        estadoValidez = errorF.estadoValidez;
                    }
                }
                con.Close();
                List <dynamic> constantes = ConstantesController.obtieneConstantesDeDimension("estado_seguimiento");
                dynamic        estadoSeg  = constantes.Where(x => x.codigo == estadoValidez.ToString()).LastOrDefault();


                this.resultado.status             = "success";
                this.resultado.validoF            = correcto;
                this.resultado.estadoValidez      = estadoValidez;
                this.resultado.estadoValidez_desc = estadoSeg.valor + " - " + estadoSeg.descripcion;
                this.resultado.tipoValidacion     = "formato";
                this.resultado.erroresF           = this.errores;
                // resultado.env = this.archivosEnv;
                return(this.resultado);
            }
            catch (Exception ex)
            {
                return(new
                {
                    status = "error",
                    mensaje = ex.Message
                });
            }
        }