private void RecogerPeliculaInternal(string nifSocio, string peliculaCodBarras)
        {
            Alquiler     alquiler, alquilerOriginal;
            Historico    historico;
            AlquileresAD alquileresAD = new AlquileresAD();
            HistoricosAD historicosAD = new HistoricosAD();

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

                // Actualización estado alquiler
                alquilerOriginal       = (Alquiler)OperacionesEntidad.CreateDataCopy(alquiler, false);
                alquiler.FechaRecogida = DateTime.Now;
                alquileresAD.ActualizarAlquiler(alquiler, alquilerOriginal);

                // Almacenamos en históricos
                historico               = new Historico();
                historico.PeliculaID    = alquiler.PeliculaID;
                historico.SocioID       = alquiler.SocioID;
                historico.Fecha         = alquiler.FechaAlquiler;
                historico.FechaRecogida = alquiler.FechaRecogida;
                historico.TipoOperacion = TipoOperacion.Recogida;
                historicosAD.AgregarHistorico(historico);

                tx.Complete();
            }
        }
Example #2
0
        public void AlquilarPeliculaTest()
        {
            AlquileresCN alquileresCN = new AlquileresCN();
            PeliculasCN  peliculasCN  = new PeliculasCN();
            Pelicula     pelicula;
            AlquileresAD alquileresAD      = new AlquileresAD();
            string       nifSocio          = "00000000T";
            string       codBarrasPelicula = "0686983675479";
            int          unidadesAlquiladas;
            Alquiler     alquiler;

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

            // Recuperamos datos para comprobar
            pelicula           = peliculasCN.ObtenerPeliculaPorCodBarras(codBarrasPelicula, false, false);
            unidadesAlquiladas = pelicula.UnidadesAlquiladas;

            using (TransactionScope tx = new TransactionScope())
            {
                alquileresCN.AlquilarPelicula(nifSocio, codBarrasPelicula);

                pelicula = peliculasCN.ObtenerPeliculaPorCodBarras(codBarrasPelicula, false, false);
                Assert.AreEqual(unidadesAlquiladas + 1, pelicula.UnidadesAlquiladas);

                alquiler = alquileresAD.ObtenerAlquilerSinRecogerPorSocioPelicula(nifSocio, codBarrasPelicula);
                Assert.IsNotNull(alquiler);
                Assert.IsFalse(alquiler.FechaRecogida.HasValue);
            }
        }