예제 #1
0
        public bool CrearArchivo(MODArchivo prmArchivo, List <IDictionary <string, object> > prmDatos, ref string rutaDestino)
        {
            var rutaBase = Configuraciones.ObtenerConfiguracion("FileRoutes", "Url:RutaBaseArchivosSalida");

            rutaBase += $"{DateTime.Now.Year}\\\\{DateTime.Now.Month}\\\\{DateTime.Now.Day}";

            if (!Directory.Exists(rutaBase))
            {
                Directory.CreateDirectory(rutaBase);
            }

            var rutaFinal = rutaBase + $"\\\\{prmArchivo.Nombre}_{prmArchivo.Periodo.ToString("yyyyMM")}_{DateTime.Now.ToString("ddMMyyyyHHmmss")}.{prmArchivo.Extension}";

            using (FileStream fs = File.Create(rutaFinal))
            {
                using (var sr = new StreamWriter(fs))
                {
                    string firstLine = String.Join(prmArchivo.ValorSeparador, prmArchivo.Campos.Select(x => x.Nombre.ToUpper()).ToArray());
                    sr.WriteLine(firstLine);

                    foreach (var item in prmDatos)
                    {
                        string line = String.Join(prmArchivo.ValorSeparador, item.Values.Select(x => x.ToString().Replace(",", ".")));
                        sr.WriteLine(line);
                    }
                }
            }

            rutaDestino = rutaFinal;

            return(true);
        }
        public MODResultado ProbarConeccion(MODOrigenDatos origen)
        {
            EnumBaseDatosOrigen dbtype         = (EnumBaseDatosOrigen)origen.TipoOrigen;
            string coneccion                   = "";
            SqlConnectionStringBuilder builder = null;
            Object parametros                  = null;

            switch (dbtype)
            {
            case EnumBaseDatosOrigen.Oracle:
                coneccion          = Configuraciones.ObtenerConfiguracion("Conexiones", "ORA");
                builder            = new SqlConnectionStringBuilder(coneccion);
                builder.DataSource = string.Format("{0}{1}{2}", origen.Servidor, (string.IsNullOrEmpty(origen.Puerto) && origen.Puerto != "0" ? ":" + origen.Puerto.ToString() : ""), (!string.IsNullOrEmpty(origen.Sid) ? "/" + origen.Sid : ""));
                builder.UserID     = origen.UsuarioBD;
                builder.Password   = origen.ClaveBD;
                break;

            case EnumBaseDatosOrigen.SqlServer:
                coneccion              = Configuraciones.ObtenerConfiguracion("Conexiones", EnumBaseDatos.SIR.ToString());
                builder                = new SqlConnectionStringBuilder(coneccion);
                builder.DataSource     = string.Format("{0}{1}", origen.Servidor, (string.IsNullOrEmpty(origen.Puerto) && origen.Puerto != "0" ? ":" + origen.Puerto.ToString() : ""));
                builder.InitialCatalog = origen.Sid;
                builder.UserID         = origen.UsuarioBD;
                builder.Password       = origen.ClaveBD;
                break;
            }
            MODResultado resultado = new MODResultado();

            try
            {
                IDbConnection con = this.ObtenerConexion(builder.ConnectionString, dbtype);
                if (!string.IsNullOrEmpty(origen.consulta))
                {
                    var consulta = (CommandType.Text == (CommandType)origen.tipoMando) ? origen.consulta.ToLower().Replace("where", "where rownum = 1 and") : origen.consulta;
                    consulta = consulta.Replace("@periodo", "'" + DateTime.Now.ToString("yyyyMMdd") + "'");
                    var reader = con.ExecuteReader(consulta, parametros, commandType: (CommandType)origen.tipoMando);
                    var schema = reader.GetSchemaTable();
                    reader.Close();
                    List <MODCampos> campos = new List <MODCampos>();
                    foreach (DataRow row in schema.Rows)
                    {
                        campos.Add(new MODCampos
                        {
                            Nombre  = row["ColumnName"].ToString(),
                            Largo   = row["ColumnSize"].ToString(),
                            Ordinal = Convert.ToInt32(row["ColumnOrdinal"])
                        });
                    }
                    resultado.DatosAdicionales.Add("campos", JsonConvert.SerializeObject(campos));
                }
            }
            catch (Exception exp)
            {
                resultado.Errores.Add(exp.Message);
                Log.WriteLog(exp, this.GetType().FullName + "-" + nameof(ProbarConeccion),
                             String.Format(@"origen:{0}", System.Text.Json.JsonSerializer.Serialize(origen)),
                             ErrorType.Error);
            }
            return(resultado);
        }
예제 #3
0
        public async Task <MODRespuestaAPI <bool> > ValidarUsuarioServicioExterno(string prmUsuario)
        {
            MODRespuestaAPI <bool> respuesta = null;
            string codigoMensaje             = "COMUNES.ERRORSERVICIO";
            bool   _validarExterna           = Convert.ToBoolean(Configuraciones.ObtenerConfiguracion("Contexto", "AutenticacionSCP"));

            try
            {
                if (String.IsNullOrEmpty(prmUsuario))
                {
                    respuesta = new MODRespuestaAPI <bool>(HttpStatusCode.BadRequest, "USUARIO.VALIDADORES.VAL001");
                }
                else
                {
                    string codigoAplicacion = Configuraciones.ObtenerConfiguracion("Keys", "CodigoAplicacion");
                    bool   existeUsuario    = false;

                    IUsuarioNegocio usuarioNegocio = FabricaNegocio.CrearUsuarioNegocio;

                    var usuarioBD = usuarioNegocio.ObtenerUsuario(prmUsuario);

                    if (usuarioBD != null)
                    {
                        codigoMensaje = "USUARIO.RESPUESTAS.RTA002";
                        respuesta     = new MODRespuestaAPI <bool>(HttpStatusCode.BadRequest, codigoMensaje);
                    }
                    else
                    {
                        var usuarioExterno = await usuarioNegocio.ValidarUsuarioServicioExterno(prmUsuario, String.Empty, true);

                        bool usuarioOk = usuarioExterno.Item1;
                        codigoMensaje = usuarioExterno.Item2;

                        if (usuarioOk)
                        {
                            existeUsuario = true;
                            codigoMensaje = "USUARIO.RESPUESTAS.RTA000";
                            respuesta     = new MODRespuestaAPI <bool>(existeUsuario, codigoMensaje);
                        }
                        else
                        {
                            codigoMensaje = "USUARIO.RESPUESTAS.RTA001";
                            respuesta     = new MODRespuestaAPI <bool>(HttpStatusCode.BadRequest, codigoMensaje);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.WriteLog(ex, "UsuarioController.ValidarUsuarioServicioExterno", JsonSerializer.Serialize(new { Usuario = prmUsuario }), ErrorType.Error);
                respuesta = new MODRespuestaAPI <bool>(HttpStatusCode.InternalServerError, codigoMensaje);
            }
            finally
            {
                //Auditoria
            }

            return(respuesta);
        }
예제 #4
0
        public async Task <Tuple <bool, string> > ValidarUsuarioServicioExterno(string prmUsuario, string prmPassword, bool prmValidarExiste = false)
        {
            string codigoAplicacion = Configuraciones.ObtenerConfiguracion("Keys", "CodigoAplicacion");
            string codigoMensaje    = "COMUNES.ERRORSERVICIO";

            bool usuarioOk       = false;
            bool _validarExterna = Convert.ToBoolean(Configuraciones.ObtenerConfiguracion("Contexto", "AutenticacionSCP"));

            byte[] newBytes = Convert.FromBase64String(prmPassword);
            prmPassword = System.Text.Encoding.UTF8.GetString(newBytes);

            using (WCFAutenticacionExterna.AuthenticationClient serviceAuth = new WCFAutenticacionExterna.AuthenticationClient())
            {
                var user = _validarExterna ? await serviceAuth.loginAsync(prmUsuario, prmPassword, codigoAplicacion) : "Ok";

                if (prmValidarExiste)
                {
                    if (user.ToUpper().Equals("OK") || user.ToUpper().Contains("CONTRASEÑA INCORRECTA"))
                    {
                        usuarioOk     = true;
                        codigoMensaje = "USUARIO.RESPUESTAS.RTA000";
                    }
                    else if (user.Contains("Usuario no existe"))
                    {
                        codigoMensaje = "USUARIO.RESPUESTAS.RTA001";
                    }
                }
                else
                {
                    if (user.Equals("Ok"))
                    {
                        usuarioOk = true;
                    }
                    else if (user.Contains("Contraseña incorrecta"))
                    {
                        codigoMensaje = "LOGIN.RTA001";
                    }
                    else if (user.Contains("Usuario no existe"))
                    {
                        codigoMensaje = "LOGIN.RTA002";
                    }
                    else if (user.Contains("Cuenta Bloqueada"))
                    {
                        codigoMensaje = "LOGIN.RTA008";
                    }
                    else if (user.Contains("no tiene acceso"))
                    {
                        codigoMensaje = "LOGIN.RTA009";
                    }
                }
            }

            return(new Tuple <bool, string>(usuarioOk, codigoMensaje));
        }
        public static bool SessionUsuario(MODLoginUsuario registro, EnumSession peticion)
        {
            List <MODLoginUsuario> actual = new List <MODLoginUsuario>();

            actual.AddRange(Logueos);
            switch (peticion)
            {
            case EnumSession._inicio:
                int _tiempo = Convert.ToInt32(Configuraciones.ObtenerConfiguracion("Contexto", "TiempoSession"));
                if ((Logueos.Any(y => y.UserName == registro.UserName && (DateTime.Now - y.Fecha).TotalMinutes > _tiempo)) ||
                    (Logueos.Any(y => y.UserName == registro.UserName && y.IP == registro.IP)))
                {
                    registro.Fecha = DateTime.Now;
                    actual.Remove(Logueos.FirstOrDefault(y => y.UserName == registro.UserName));
                    actual.Add(registro);
                }
                else if (!Logueos.Any(y => y.UserName == registro.UserName))
                {
                    registro.Fecha = DateTime.Now;
                    actual.Add(registro);
                }
                else
                {
                    return(false);
                }
                break;

            case EnumSession._peticion:
                if (Logueos.Any(y => y.UserName == registro.UserName))
                {
                    actual.FirstOrDefault(y => y.UserName == registro.UserName).Fecha = DateTime.Now;
                }
                else
                {
                    return(false);
                }
                break;

            case EnumSession._cierre:
                Logueos.Remove(Logueos.FirstOrDefault(y => y.UserName == registro.UserName));
                break;

            default:
                break;
            }
            ConfiguracionNegocio.Logueos = actual;
            return(true);
        }
예제 #6
0
 private static string ObtenerNombre(EnumBaseDatos _baseDatos)
 {
     return(Configuraciones.ObtenerConfiguracion("Conexiones", _baseDatos.ToString()));
 }