示例#1
0
        public void ComprarPeliculaSinSaldoTest()
        {
            ComprasCN  comprasCN = new ComprasCN();
            UsuariosAD usuariosAD = new UsuariosAD();
            string     nifSocio = "00000000T";
            string     codBarrasPelicula = "0686983675479";
            Socio      socio, socioOriginal;

            // Necesitamos ser administrador para comprar, impersonamos
            ConnectionHelper.ImpersonateAdmin();

            using (TransactionScope tx = new TransactionScope())
            {
                // Quitamos el saldo al socio
                socio         = usuariosAD.ObtenerSocioPorNIF(nifSocio);
                socioOriginal = (Socio)OperacionesEntidad.CreateDataCopy(socio, false);
                socio.Saldo   = 0;
                usuariosAD.ActualizarUsuario(socio, socioOriginal);

                // Intentamos comprar
                EstadoPedido estadoPedido = comprasCN.ComprarPelicula(nifSocio, codBarrasPelicula);

                Assert.AreEqual(EstadoPedido.SaldoInsuficiente, estadoPedido);
            }
        }
示例#2
0
        public void EstablecerClave(string nif, string clave)
        {
            string     hashClave;
            UsuariosAD usuariosAD = new UsuariosAD();

            hashClave = HashHelper.CalcularHash(clave);
            usuariosAD.EstablecerClave(nif, hashClave);
        }
示例#3
0
        /// <summary>
        /// Obtiene el usuario actual
        /// Seguridad: Público
        /// </summary>
        /// <returns>Usuario</returns>
        public Usuario ObtenerMiUsuario()
        {
            UsuariosAD usuariosAD = new UsuariosAD();
            string     nif;

            if (Thread.CurrentPrincipal == null || Thread.CurrentPrincipal.Identity.Name == "invitado")
            {
                return(null);
            }

            nif = Thread.CurrentPrincipal.Identity.Name;
            return(usuariosAD.ObtenerUsuarioPorNIF(nif));
        }
示例#4
0
        private async void frmPrincipal_Load(object sender, EventArgs e)
        {
            usuario = UsuariosAD.GetUsuario();

            ConfiguraFormulario();

            await RecuperaTextos();

            //SegundoMonitor();

            Hide();

            await RegistraVisita();
        }
示例#5
0
        /// <summary>
        /// Obtiene el rol del usuario dado
        /// Seguridad: Público
        /// </summary>
        /// <param name="nifUsuario">NIF del usuario</param>
        /// <returns>Rol</returns>
        public Rol ObtenerRolUsuario(string nifUsuario)
        {
            Usuario    usuario;
            UsuariosAD usuariosAD = new UsuariosAD();

            usuario = usuariosAD.ObtenerUsuarioPorNIF(nifUsuario);
            if (usuario != null)
            {
                return(usuario.Rol);
            }
            else
            {
                return(Rol.Socio);
            }
        }
示例#6
0
        public static int ValidarUsuario(string nombreUsuario, string contrasenaEncriptada, ref Usuarios objetoUsuario)
        {
            try
            {
                var usuario = UsuariosAD.ObtenerUsuariosPorNombres(nombreUsuario);
                if (usuario != null)
                {
                    objetoUsuario = usuario;
                    return(usuario.Contrasena != contrasenaEncriptada ? 0 :
                           !usuario.Estado ? 2 :
                           objetoUsuario.Reseteo ? 3 : 1);
                }

                return(-1);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#7
0
        /// <summary>
        /// Valida que el usuario es correcto y que la clave es válida
        /// Seguridad: Público
        /// </summary>
        /// <param name="nifUsuario">NIF del usuario</param>
        /// <param name="clave">Clave a validar</param>
        /// <returns>Usuario</returns>
        public Usuario ValidarUsuario(string nifUsuario, string clave)
        {
            string     claveHashed;
            UsuariosAD usuariosAD = new UsuariosAD();

            claveHashed = usuariosAD.ObtenerClave(nifUsuario);
            if (claveHashed == null)
            {
                return(null);
            }

            if (HashHelper.ValidarClave(clave, claveHashed))
            {
                // Usuario correcto, devolvemos el registro del usuario
                return(usuariosAD.ObtenerUsuarioPorNIF(nifUsuario));
            }
            else
            {
                return(null);
            }
        }
        private EstadoPedido DevolverPeliculaInternal(string nifSocio, string peliculaCodBarras, out Historico historico)
        {
            Alquiler     alquiler;
            Pelicula     pelicula, peliculaOriginal;
            Socio        socio, socioOriginal;
            AlquileresAD alquileresAD = new AlquileresAD();
            HistoricosAD historicosAD = new HistoricosAD();
            PeliculasAD  peliculasAD  = new PeliculasAD();
            UsuariosAD   usuariosAD   = new UsuariosAD();

            historico = null;
            using (TransactionScope tx = new TransactionScope())
            {
                // Buscamos alquiler pendiente de devolver
                alquiler = alquileresAD.ObtenerAlquilerSinDevolverPorSocioPelicula(nifSocio, peliculaCodBarras);
                if (alquiler == null)
                {
                    throw new ArgumentException();
                }

                // Actualización de stock
                pelicula         = peliculasAD.ObtenerPeliculaPorCodBarras(peliculaCodBarras, false, false);
                peliculaOriginal = (Pelicula)OperacionesEntidad.CreateDataCopy(pelicula, false);
                pelicula.UnidadesAlquiladas--;
                try
                {
                    peliculasAD.ActualizarPelicula(pelicula, peliculaOriginal);
                }
                catch (ChangeConflictException)
                {
                    // Error de concurrencia
                    return(EstadoPedido.ErrorConcurrencia);
                }

                // Almacenamos en históricos
                historico                 = new Historico();
                historico.PeliculaID      = alquiler.PeliculaID;
                historico.SocioID         = alquiler.SocioID;
                historico.Fecha           = alquiler.FechaAlquiler;
                historico.FechaRecogida   = alquiler.FechaRecogida;
                historico.FechaDevolucion = DateTime.Now;
                historico.TipoOperacion   = TipoOperacion.Devolucion;
                historico.Precio          = CalcularPrecio(alquiler.FechaAlquiler, alquiler.FechaRecogida.Value, historico.FechaDevolucion.Value);
                historicosAD.AgregarHistorico(historico);

                // Borrado alquiler
                try
                {
                    alquileresAD.EliminarAlquiler(alquiler);
                }
                catch (ChangeConflictException)
                {
                    // Error de concurrencia
                    return(EstadoPedido.ErrorConcurrencia);
                }

                // Actualización saldo
                socio         = usuariosAD.ObtenerSocioPorNIF(nifSocio);
                socioOriginal = (Socio)OperacionesEntidad.CreateDataCopy(socio, false);
                socio.Saldo  -= historico.Precio;
                if (socio.Saldo < 0)
                {
                    return(EstadoPedido.SaldoInsuficiente);
                }
                try
                {
                    usuariosAD.ActualizarUsuario(socio, socioOriginal);
                }
                catch (ChangeConflictException)
                {
                    // Error de concurrencia
                    return(EstadoPedido.ErrorConcurrencia);
                }

                tx.Complete();
            }

            return(EstadoPedido.Realizado);
        }
示例#9
0
 public UsersController()
 {
     objUser = new UsuariosAD();
 }
示例#10
0
 public AccesoController()
 {
     objUser = new UsuariosAD();
 }
示例#11
0
        public Socio ObtenerSocioPorNIF(string nif)
        {
            UsuariosAD usuariosAD = new UsuariosAD();

            return(usuariosAD.ObtenerSocioPorNIF(nif));
        }
示例#12
0
        public void ActualizarUsuario(Usuario usuario, Usuario original)
        {
            UsuariosAD usuariosAD = new UsuariosAD();

            usuariosAD.ActualizarUsuario(usuario, original);
        }
示例#13
0
        public BindingList <Socio> ObtenerSociosPorNombre(string nombre)
        {
            UsuariosAD usuariosAD = new UsuariosAD();

            return(usuariosAD.ObtenerSociosPorNombre(nombre));
        }
示例#14
0
        public BindingList <Socio> ObtenerSocios()
        {
            UsuariosAD usuariosAD = new UsuariosAD();

            return(usuariosAD.ObtenerSocios());
        }
示例#15
0
        public void EliminarUsuario(Usuario usuario)
        {
            UsuariosAD usuariosAD = new UsuariosAD();

            usuariosAD.EliminarUsuario(usuario);
        }
示例#16
0
        private EstadoPedido AlquilarPeliculaIntento(string nifSocio, string peliculaCodBarras)
        {
            Socio     socio, socioOriginal;
            Pelicula  pelicula, peliculaOriginal;
            Historico historico;
            Alquiler  alquiler;

            UsuariosAD   usuariosAD   = new UsuariosAD();
            PeliculasAD  peliculasAD  = new PeliculasAD();
            HistoricosAD historicosAD = new HistoricosAD();
            AlquileresAD alquileresAD = new AlquileresAD();

            // Recuperamos película y usuario
            pelicula = peliculasAD.ObtenerPeliculaPorCodBarras(peliculaCodBarras, false, false);
            socio    = usuariosAD.ObtenerSocioPorNIF(nifSocio);

            if (pelicula == null || socio == null)
            {
                throw new ArgumentException();
            }

            peliculaOriginal = (Pelicula)OperacionesEntidad.CreateDataCopy(pelicula, false);
            socioOriginal    = (Socio)OperacionesEntidad.CreateDataCopy(socio, false);

            using (TransactionScope tx = new TransactionScope())
            {
                // Comprobamos stock
                if (pelicula.DisponibleAlquiler == 0)
                {
                    if (pelicula.UnidadesVentaAlquiler + pelicula.UnidadesAlquiler == 0)
                    {
                        return(EstadoPedido.ModalidadNoDisponible);
                    }
                    else
                    {
                        return(EstadoPedido.StockInsuficiente);
                    }
                }

                // Comprobamos saldo
                if (socio.Saldo < _minSaldoParaAlquilar)
                {
                    return(EstadoPedido.SaldoInsuficiente);
                }

                // Actualizamos stock
                pelicula.UnidadesAlquiladas++;

                try
                {
                    peliculasAD.ActualizarPelicula(pelicula, peliculaOriginal);
                }
                catch (ChangeConflictException)
                {
                    return(EstadoPedido.ErrorConcurrencia);
                }

                // Creamos alquiler
                alquiler               = new Alquiler();
                alquiler.SocioID       = socio.UsuarioID;
                alquiler.PeliculaID    = pelicula.PeliculaID;
                alquiler.FechaAlquiler = DateTime.Now;
                alquileresAD.AgregarAlquiler(alquiler);

                // Almacenamos en histórico
                historico               = new Historico();
                historico.SocioID       = socio.UsuarioID;
                historico.PeliculaID    = pelicula.PeliculaID;
                historico.TipoOperacion = TipoOperacion.Alquiler;
                historico.Fecha         = alquiler.FechaAlquiler;

                historicosAD.AgregarHistorico(historico);

                tx.Complete();
            }

            return(EstadoPedido.Realizado);
        }
示例#17
0
        public void AgregarUsuario(Usuario usuario)
        {
            UsuariosAD usuariosAD = new UsuariosAD();

            usuariosAD.AgregarUsuario(usuario);
        }