Exemplo n.º 1
0
        public override ICollection <DTOActores> ListarCmb()
        {
            try
            {
                ManagerDb db    = new ManagerDb();
                String    query = "SELECT ACT_CODIGO, ACT_NOMBRES FROM ACTORES ORDER BY ACT_NOMBRES";

                DataTable tbl = db.ObtenerDatos(query);

                List <DTOActores> data = tbl.AsEnumerable().Select(x => new DTOActores
                {
                    Codigo = x.Field <int>("ACT_CODIGO"),
                    Nombre = x.Field <string>("ACT_NOMBRES")
                }).ToList();

                return(data);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 2
0
        public override void Editar(DTOPeliculas data)
        {
            try
            {
                String Message = String.Empty;

                Message = this.ValidaPelicula(data);

                if (String.IsNullOrEmpty(Message))
                {
                    ManagerDb db = new ManagerDb();

                    DataTable tbl = db.ObtenerDatos("SELECT 1 FROM PELICULAS WHERE PEL_TITULO = @TITULO AND PEL_CODIGO <> @CODIGO", new SqlParameter("@TITULO", data.Titulo), new SqlParameter("@CODIGO", data.Codigo));

                    if (tbl.Rows.Count > 0)
                    {
                        throw new CustomException("<li>El titulo ingresado ya se encuentra registrado en la base de datos, por favor corrigalo e intentelo de nuevo");
                    }
                    else
                    {
                        String query = "UPDATE PELICULAS SET PEL_TITULO = @PEL_TITULO, PEL_DIRECTOR = @PEL_DIRECTOR, PEL_COSTOALQUILER = @PEL_COSTOALQUILER, PEL_CANTIDADINVENTARIO = @PEL_CANTIDADINVENTARIO, PEL_FECHAMODIFICA = CURRENT_TIMESTAMP WHERE PEL_CODIGO = @PEL_CODIGO";

                        db.Ejecutar(query,
                                    new SqlParameter("@PEL_CODIGO", data.Codigo),
                                    new SqlParameter("@PEL_TITULO", data.Titulo),
                                    new SqlParameter("@PEL_DIRECTOR", data.Director),
                                    new SqlParameter("@PEL_COSTOALQUILER", data.CostoAlquiler),
                                    new SqlParameter("@PEL_CANTIDADINVENTARIO", data.CantidaInventario));

                        db.Ejecutar("DELETE FROM ACTORES_PELICULAS WHERE PEL_CODIGO = @CODIGO", new SqlParameter("@CODIGO", data.Codigo));
                        foreach (DTOActores actor in data.Actores)
                        {
                            query = "INSERT INTO ACTORES_PELICULAS (ACT_CODIGO, PEL_CODIGO) VALUES (@ACT_CODIGO, @PEL_CODIGO)";

                            db.Ejecutar(query,
                                        new SqlParameter("@ACT_CODIGO", actor.Codigo),
                                        new SqlParameter("@PEL_CODIGO", data.Codigo));
                        }
                    }
                }
                else
                {
                    throw new CustomException("<ul>" + Message + "</ul>");
                }
            }
            catch (CustomException ex)
            {
                throw new CustomException(ex.Message);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Obtiene los usuarios almacenados en la base de datos para mostrarse en una grid de datos con paginación
        /// </summary>
        /// <param name="Skip">Posición desde la cual se iniciará la búsqueda</param>
        /// <param name="Take">Cantidad de registros a traer</param>
        /// <returns></returns>
        public override DTODataGrid <DTOUsuarios> Listar(int Skip, int Take)
        {
            try
            {
                ManagerDb db    = new ManagerDb();
                String    query = "SELECT USU_CODIGO, USU_USUARIO, USU_PASSWORD, USU_NOMBRES, USU_APELLIDOS, USU_CORREO, USU_ROL FROM USUARIOS ORDER BY USU_USUARIO OFFSET @SKIP ROWS FETCH NEXT @TAKE ROWS ONLY";

                DataTable tbl = db.ObtenerDatos(query,
                                                new SqlParameter("@SKIP", Skip),
                                                new SqlParameter("@TAKE", Take));

                DataTable tblCount = db.ObtenerDatos("SELECT COUNT(USU_CODIGO) FROM USUARIOS");

                List <DTOUsuarios> data = tbl.AsEnumerable().Select(x => new DTOUsuarios
                {
                    Codigo    = x.Field <int>("USU_CODIGO"),
                    Usuario   = x.Field <string>("USU_USUARIO"),
                    Password  = "******",
                    Nombres   = x.Field <string>("USU_NOMBRES"),
                    Apellidos = x.Field <string>("USU_APELLIDOS"),
                    Correo    = x.Field <string>("USU_CORREO"),
                    Rol       = x.Field <int>("USU_ROL"),
                    Cliente   = db.ObtenerDatos("SELECT CLI_CODIGO, CLI_DOCUMENTO, CLI_TIPODOCUMENTO, CLI_FECHANACIMIENTO FROM CLIENTES WHERE USU_CODIGO = @USU_CODIGO", new SqlParameter("@USU_CODIGO", x.Field <int>("USU_CODIGO"))).AsEnumerable().Select(c => new DTOClientes
                    {
                        Codigo          = c.Field <int>("CLI_CODIGO"),
                        Documento       = c.Field <String>("CLI_DOCUMENTO"),
                        TipoDocumento   = c.Field <int>("CLI_TIPODOCUMENTO"),
                        FechaNacimiento = c.Field <DateTime>("CLI_FECHANACIMIENTO")
                    }).FirstOrDefault()
                }).ToList();

                DTODataGrid <DTOUsuarios> dataGrid = new DTODataGrid <DTOUsuarios>(tblCount.AsEnumerable().Select(x => x.Field <int>(0)).FirstOrDefault(), data);

                return(dataGrid);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 4
0
        public DTODataGrid <DTOReservas> ListarReservasCliente(int Skip, int Take, int Cliente)
        {
            try
            {
                ManagerDb db = new ManagerDb();

                String query = "SELECT R.RSV_CODIGO, R.USU_CODIGO, R.PEL_CODIGO, R.RSV_ESTADO, R.RSV_FECHACREA, CONCAT(U.USU_NOMBRES, ' ', U.USU_APELLIDOS) USU_NOMBRES, P.PEL_TITULO FROM RESERVAS R INNER JOIN USUARIOS U ON R.USU_CODIGO = U.USU_CODIGO INNER JOIN PELICULAS P ON R.PEL_CODIGO = P.PEL_CODIGO WHERE R.USU_CODIGO = @CLIENTE ORDER BY R.RSV_FECHACREA OFFSET @SKIP ROWS FETCH NEXT @TAKE ROWS ONLY";

                DataTable tbl = db.ObtenerDatos(query,
                                                new SqlParameter("@SKIP", Skip),
                                                new SqlParameter("@TAKE", Take),
                                                new SqlParameter("@CLIENTE", Cliente));

                DataTable tblCount = db.ObtenerDatos("SELECT COUNT(R.RSV_CODIGO) FROM RESERVAS R INNER JOIN USUARIOS U ON R.USU_CODIGO = U.USU_CODIGO INNER JOIN PELICULAS P ON R.PEL_CODIGO = P.PEL_CODIGO WHERE R.USU_CODIGO = @CLIENTE",
                                                     new SqlParameter("@CLIENTE", Cliente));

                List <DTOReservas> data = tbl.AsEnumerable().Select(x => new DTOReservas
                {
                    Codigo         = x.Field <int>("RSV_CODIGO"),
                    CodigoCliente  = x.Field <int>("USU_CODIGO"),
                    CodigoPelicula = x.Field <int>("PEL_CODIGO"),
                    Estado         = x.Field <int>("RSV_ESTADO"),
                    FechaReserva   = x.Field <DateTime>("RSV_FECHACREA"),
                    Cliente        = x.Field <string>("USU_NOMBRES"),
                    Pelicula       = x.Field <string>("PEL_TITULO")
                }).ToList();

                DTODataGrid <DTOReservas> dataGrid = new DTODataGrid <DTOReservas>(tblCount.AsEnumerable().Select(x => x.Field <int>(0)).FirstOrDefault(), data);

                return(dataGrid);
            }
            catch (CustomException ex)
            {
                throw new CustomException(ex.Message);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 5
0
        public override DTODataGrid <DTOPeliculas> Listar(int Skip, int Take)
        {
            try
            {
                ManagerDb db    = new ManagerDb();
                String    query = "SELECT PEL_CODIGO, PEL_TITULO, PEL_DIRECTOR, PEL_COSTOALQUILER, PEL_CANTIDADINVENTARIO FROM PELICULAS ORDER BY PEL_TITULO OFFSET @SKIP ROWS FETCH NEXT @TAKE ROWS ONLY";

                DataTable tbl = db.ObtenerDatos(query,
                                                new SqlParameter("@SKIP", Skip),
                                                new SqlParameter("@TAKE", Take));

                DataTable tblCount = db.ObtenerDatos("SELECT COUNT(PEL_CODIGO) FROM PELICULAS");

                List <DTOPeliculas> data = tbl.AsEnumerable().Select(x => new DTOPeliculas
                {
                    Codigo            = x.Field <int>("PEL_CODIGO"),
                    Titulo            = x.Field <string>("PEL_TITULO"),
                    Director          = x.Field <string>("PEL_DIRECTOR"),
                    CostoAlquiler     = Convert.ToDouble(x.Field <Object>("PEL_COSTOALQUILER")),
                    CantidaInventario = x.Field <int>("PEL_CANTIDADINVENTARIO"),
                    Actores           = db.ObtenerDatos("SELECT A.ACT_CODIGO, A.ACT_NOMBRES FROM ACTORES A INNER JOIN ACTORES_PELICULAS AP ON A.ACT_CODIGO = AP.ACT_CODIGO WHERE AP.PEL_CODIGO = @PEL_CODIGO", new SqlParameter("@PEL_CODIGO", x.Field <int>("PEL_CODIGO"))).AsEnumerable().Select(a => new DTOActores
                    {
                        Codigo = a.Field <int>("ACT_CODIGO"),
                        Nombre = a.Field <String>("ACT_NOMBRES")
                    }).ToList()
                }).ToList();

                DTODataGrid <DTOPeliculas> dataGrid = new DTODataGrid <DTOPeliculas>(tblCount.AsEnumerable().Select(x => x.Field <int>(0)).FirstOrDefault(), data);

                return(dataGrid);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 6
0
        public override void Editar(DTOActores data)
        {
            try
            {
                String Message = String.Empty;

                if (String.IsNullOrWhiteSpace(data.Nombre))
                {
                    Message += "<li>Debe ingresar un valor para el campo nombre</li>";
                }
                if (data.Nombre.Length > 200)
                {
                    Message += "<li>La longitud máxima para el campo nombre es de 200 caracteres</li>";
                }

                if (String.IsNullOrEmpty(Message))
                {
                    ManagerDb db = new ManagerDb();

                    DataTable tbl = db.ObtenerDatos("SELECT 1 FROM ACTORES WHERE ACT_NOMBRES = @ACTOR AND ACT_CODIGO <> @CODIGO", new SqlParameter("@ACTOR", data.Nombre), new SqlParameter("@CODIGO", data.Codigo));

                    if (tbl.Rows.Count > 0)
                    {
                        throw new CustomException("<li>El nombre del actor ingresado ya se encuentra registrado en la base de datos, por favor corrigalo e intentelo de nuevo");
                    }
                    else
                    {
                        String query = "UPDATE ACTORES SET ACT_NOMBRES = @ACT_NOMBRES, ACT_FECHAMODIFICA = CURRENT_TIMESTAMP WHERE ACT_CODIGO = @ACT_CODIGO";
                        db.Ejecutar(query,
                                    new SqlParameter("@ACT_CODIGO", data.Codigo),
                                    new SqlParameter("@ACT_NOMBRES", data.Nombre));
                    }
                }
                else
                {
                    throw new CustomException("<ul>" + Message + "</ul>");
                }
            }
            catch (CustomException ex)
            {
                throw new CustomException(ex.Message);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Obtiene los usuarios almacenados en la base de datos para mostrarse en un combobox
        /// </summary>
        /// <returns></returns>
        public override ICollection <DTOUsuarios> ListarCmb()
        {
            try
            {
                ManagerDb db    = new ManagerDb();
                String    query = "SELECT USU_CODIGO, USU_USUARIO, CONCAT(USU_NOMBRES, ' ', USU_APELLIDOS) USU_NOMBRE FROM USUARIOS ORDER BY USU_USUARIO";

                DataTable tbl = db.ObtenerDatos(query);

                List <DTOUsuarios> data = tbl.AsEnumerable().Select(x => new DTOUsuarios
                {
                    Codigo    = x.Field <int>("USU_CODIGO"),
                    Usuario   = x.Field <string>("USU_USUARIO"),
                    Password  = "******",
                    Nombres   = x.Field <string>("USU_NOMBRES"),
                    Apellidos = x.Field <string>("USU_APELLIDOS"),
                    Correo    = x.Field <string>("USU_CORREO"),
                    Rol       = x.Field <int>("USU_ROL"),
                    Cliente   = db.ObtenerDatos("SELECT CLI_CODIGO, CLI_DOCUMENTO, CLI_TIPODOCUMENTO, CLI_FECHANACIMIENTO FROM CLIENTES WHERE USU_CODIGO = @USU_CODIGO", new SqlParameter("@USU_CODIGO", x.Field <int>("USU_CODIGO"))).AsEnumerable().Select(c => new DTOClientes
                    {
                        Codigo          = c.Field <int>("CLI_CODIGO"),
                        Documento       = c.Field <String>("CLI_DOCUMENTO"),
                        TipoDocumento   = c.Field <int>("CLI_TIPODOCUMENTO"),
                        FechaNacimiento = c.Field <DateTime>("CLI_FECHANACIMIENTO")
                    }).FirstOrDefault()
                }).ToList();

                return(data);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// Autentica los usuarios en el sistema
        /// </summary>
        /// <param name="Username">Nombre de usuario a autenticar</param>
        /// <param name="Password">Contraseña del usuario a autenticar</param>
        /// <returns>Objeto con la información del usuario que se acaba de autenticar</returns>
        public DTOUsuarios Login(String Username, String Password)
        {
            try
            {
                ManagerDb db    = new ManagerDb();
                String    query = "SELECT USU_CODIGO, USU_USUARIO, USU_ROL, USU_NOMBRES, USU_APELLIDOS, USU_PASSWORD, USU_CORREO FROM USUARIOS WHERE USU_USUARIO = @USUARIO";
                DataTable tbl   = db.ObtenerDatos(query, new SqlParameter("@USUARIO", Username));

                DTOUsuarios usuario = new DTOUsuarios();
                if (tbl.Rows.Count == 0)
                {
                    usuario = default(DTOUsuarios);
                }
                else
                {
                    String storedPassword = tbl.Rows[0].Field <string>("USU_PASSWORD");
                    if (storedPassword == Encriptar.EncriptaContrasena(Password))
                    {
                        usuario.Codigo    = tbl.Rows[0].Field <int>("USU_CODIGO");
                        usuario.Usuario   = tbl.Rows[0].Field <string>("USU_USUARIO");
                        usuario.Correo    = tbl.Rows[0].Field <string>("USU_CORREO");
                        usuario.Rol       = tbl.Rows[0].Field <int>("USU_ROL");
                        usuario.Nombres   = tbl.Rows[0].Field <string>("USU_NOMBRES");
                        usuario.Apellidos = tbl.Rows[0].Field <string>("USU_APELLIDOS");
                    }
                    else
                    {
                        usuario = default(DTOUsuarios);
                    }
                }

                return(usuario);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }

                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 9
0
        public DTODataGrid <DTOPeliculas> ListarReserva(int Skip, int Take, DTOPeliculas Filtros)
        {
            try
            {
                ManagerDb db = new ManagerDb();

                String filter = String.Empty;
                if (Filtros.Titulo != "")
                {
                    filter += " AND P.PEL_TITULO LIKE '%" + Filtros.Titulo + "%' ";
                }
                if (Filtros.Director != "")
                {
                    filter += " AND P.PEL_DIRECTOR LIKE '%" + Filtros.Director + "%' ";
                }

                if (Filtros.CostoAlquiler > 0)
                {
                    filter += " AND P.PEL_COSTOALQUILER <= " + Filtros.CostoAlquiler + " ";
                }

                if (Filtros.CantidaInventario > 0)
                {
                    filter += " AND P.PEL_CANTIDADINVENTARIO <= " + Filtros.CantidaInventario + " ";
                }

                if (Filtros.Actores.Count > 0)
                {
                    foreach (DTOActores actor in Filtros.Actores)
                    {
                        filter += " AND A.ACT_CODIGO = " + actor.Codigo + " ";
                    }
                }

                String query = "SELECT DISTINCT P.PEL_CODIGO, P.PEL_TITULO, P.PEL_DIRECTOR, P.PEL_COSTOALQUILER, P.PEL_CANTIDADINVENTARIO FROM PELICULAS P INNER JOIN ACTORES_PELICULAS A ON P.PEL_CODIGO = A.PEL_CODIGO WHERE P.PEL_CANTIDADINVENTARIO > 0 " + filter + " ORDER BY PEL_TITULO OFFSET @SKIP ROWS FETCH NEXT @TAKE ROWS ONLY";


                DataTable tbl = db.ObtenerDatos(query,
                                                new SqlParameter("@SKIP", Skip),
                                                new SqlParameter("@TAKE", Take));

                DataTable tblCount = db.ObtenerDatos("SELECT COUNT(P.PEL_CODIGO) FROM PELICULAS P INNER JOIN ACTORES_PELICULAS A ON P.PEL_CODIGO = A.PEL_CODIGO WHERE P.PEL_CANTIDADINVENTARIO > 0 " + filter);

                List <DTOPeliculas> data = tbl.AsEnumerable().Select(x => new DTOPeliculas
                {
                    Codigo            = x.Field <int>("PEL_CODIGO"),
                    Titulo            = x.Field <string>("PEL_TITULO"),
                    Director          = x.Field <string>("PEL_DIRECTOR"),
                    CostoAlquiler     = Convert.ToDouble(x.Field <Object>("PEL_COSTOALQUILER")),
                    CantidaInventario = x.Field <int>("PEL_CANTIDADINVENTARIO"),
                    Actores           = db.ObtenerDatos("SELECT A.ACT_CODIGO, A.ACT_NOMBRES FROM ACTORES A INNER JOIN ACTORES_PELICULAS AP ON A.ACT_CODIGO = AP.ACT_CODIGO WHERE AP.PEL_CODIGO = @PEL_CODIGO", new SqlParameter("@PEL_CODIGO", x.Field <int>("PEL_CODIGO"))).AsEnumerable().Select(a => new DTOActores
                    {
                        Codigo = a.Field <int>("ACT_CODIGO"),
                        Nombre = a.Field <String>("ACT_NOMBRES")
                    }).ToList()
                }).ToList();

                DTODataGrid <DTOPeliculas> dataGrid = new DTODataGrid <DTOPeliculas>(tblCount.AsEnumerable().Select(x => x.Field <int>(0)).FirstOrDefault(), data);

                return(dataGrid);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Realiza el proceso de modificación de un usuario en la base de datos
        /// </summary>
        /// <param name="usuario"></param>
        public override void Editar(DTOUsuarios usuario)
        {
            try
            {
                String Message = String.Empty;

                Message = this.ValidaUsuario(usuario, usuario.Cliente);

                if (String.IsNullOrEmpty(Message))
                {
                    ManagerDb db  = new ManagerDb();
                    DataTable tbl = db.ObtenerDatos("SELECT 1 FROM USUARIOS WHERE USU_USUARIO = @USUARIO AND USU_CODIGO <> @CODIGO", new SqlParameter("@USUARIO", usuario.Usuario), new SqlParameter("@CODIGO", usuario.Codigo));

                    if (tbl.Rows.Count > 0)
                    {
                        throw new CustomException("<li>El nombre de usuario ingresado ya se encuentra registrado en la base de datos, por favor corrigalo e intentelo de nuevo");
                    }
                    else
                    {
                        String query = "UPDATE USUARIOS SET USU_USUARIO = @USU_USUARIO, USU_NOMBRES = @USU_NOMBRES, USU_APELLIDOS = @USU_APELLIDOS, USU_CORREO = @USU_CORREO, USU_ROL = @USU_ROL, USU_FECHAMODIFICA = CURRENT_TIMESTAMP WHERE USU_CODIGO = @USU_CODIGO";

                        db.Ejecutar(query,
                                    new SqlParameter("@USU_CODIGO", usuario.Codigo),
                                    new SqlParameter("@USU_USUARIO", usuario.Usuario),
                                    new SqlParameter("@USU_NOMBRES", usuario.Nombres),
                                    new SqlParameter("@USU_APELLIDOS", usuario.Apellidos),
                                    new SqlParameter("@USU_CORREO", usuario.Correo),
                                    new SqlParameter("@USU_ROL", usuario.Rol));

                        if (usuario.Rol == 2)
                        {
                            query = "UPDATE CLIENTES SET CLI_DOCUMENTO = @CLI_DOCUMENTO , CLI_TIPODOCUMENTO = @CLI_TIPODOCUMENTO, CLI_FECHANACIMIENTO = @CLI_FECHANACIMIENTO WHERE CLI_CODIGO = @CLI_CODIGO";

                            db.Ejecutar(query,
                                        new SqlParameter("@CLI_DOCUMENTO", usuario.Cliente.Documento),
                                        new SqlParameter("@CLI_TIPODOCUMENTO", usuario.Cliente.TipoDocumento),
                                        new SqlParameter("@CLI_FECHANACIMIENTO", usuario.Cliente.FechaNacimiento),
                                        new SqlParameter("@CLI_CODIGO", usuario.Cliente.Codigo));
                        }
                        else
                        {
                            db.Ejecutar("DELETE FROM CLIENTES WHERE USU_CODIGO = @USU_CODIGO", new SqlParameter("@USU_CODIGO", usuario.Codigo));
                        }
                    }
                }
                else
                {
                    throw new CustomException("<ul>" + Message + "</ul>");
                }
            }
            catch (CustomException ex)
            {
                throw new CustomException(ex.Message);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Realiza el proceso de creación de un usuario en la base de datos
        /// </summary>
        /// <param name="usuario">Información del usuario que se desea crear</param>
        public override void Crear(DTOUsuarios usuario)
        {
            try
            {
                String Message = String.Empty;

                Message = this.ValidaUsuario(usuario, usuario.Cliente);

                if (String.IsNullOrEmpty(Message))
                {
                    ManagerDb db = new ManagerDb();

                    DataTable tbl = db.ObtenerDatos("SELECT 1 FROM USUARIOS WHERE USU_USUARIO = @USUARIO", new SqlParameter("@USUARIO", usuario.Usuario));

                    if (tbl.Rows.Count > 0)
                    {
                        throw new CustomException("<li>El nombre de usuario ingresado ya se encuentra registrado en la base de datos, por favor corrigalo e intentelo de nuevo");
                    }
                    else
                    {
                        String query = "INSERT INTO USUARIOS (USU_USUARIO, USU_PASSWORD, USU_NOMBRES, USU_APELLIDOS, USU_CORREO, USU_ROL)";
                        query += "VALUES (@USU_USUARIO, @USU_PASSWORD, @USU_NOMBRES, @USU_APELLIDOS, @USU_CORREO, @USU_ROL);";
                        db.Ejecutar(query,
                                    new SqlParameter("@USU_USUARIO", usuario.Usuario),
                                    new SqlParameter("@USU_PASSWORD", Encriptar.EncriptaContrasena(usuario.Password)),
                                    new SqlParameter("@USU_NOMBRES", usuario.Nombres),
                                    new SqlParameter("@USU_APELLIDOS", usuario.Apellidos),
                                    new SqlParameter("@USU_CORREO", usuario.Correo),
                                    new SqlParameter("@USU_ROL", usuario.Rol));

                        if (usuario.Rol == 2)
                        {
                            int codigoUsuario = db.ObtenerDatos("SELECT IDENT_CURRENT('USUARIOS')").AsEnumerable().Select(x => Convert.ToInt32(x.Field <Object>(0))).FirstOrDefault();
                            query  = "INSERT INTO CLIENTES (CLI_DOCUMENTO, CLI_TIPODOCUMENTO, CLI_FECHANACIMIENTO, USU_CODIGO)";
                            query += "VALUES (@CLI_DOCUMENTO, @CLI_TIPODOCUMENTO, @CLI_FECHANACIMIENTO, @USU_CODIGO)";

                            db.Ejecutar(query,
                                        new SqlParameter("@CLI_DOCUMENTO", usuario.Cliente.Documento),
                                        new SqlParameter("@CLI_TIPODOCUMENTO", usuario.Cliente.TipoDocumento),
                                        new SqlParameter("@CLI_FECHANACIMIENTO", usuario.Cliente.FechaNacimiento),
                                        new SqlParameter("@USU_CODIGO", codigoUsuario));
                        }
                    }
                }
                else
                {
                    throw new CustomException("<ul>" + Message + "</ul>");
                }
            }
            catch (CustomException ex)
            {
                throw new CustomException(ex.Message);
            }
            catch (Exception ex)
            {
                Exception ex1 = ex;
                while (ex1.InnerException != null)
                {
                    ex1 = ex1.InnerException;
                }
                throw new Exception(ex1.Message);
            }
        }