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(); } }
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); } }