public static List <Alquiler> GetPeliculasAlquiladas() { List <Alquiler> reserva = new List <Alquiler>(); string query = $"Select * from Alquileres where Usuario = {User.IdUsuario}"; Conexion.Open(); SqlCommand cmd = new SqlCommand(query, Conexion); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Alquiler r = ExtractAlquiler(reader); reserva.Add(r); } Conexion.Close(); reserva.ForEach(x => { if (x != null) { x.Pelicula = GetPelicula(x.PeliculaId); x.TiempoPrestamo = GetTiempoPrestamo(x.TiempoReserva); } }); return(reserva); }
private static Alquiler ExtractAlquiler(SqlDataReader reader) { Alquiler r = new Alquiler(); r.Id = Convert.ToInt32(reader[0].ToString()); r.UsuarioId = Convert.ToInt32(reader[1].ToString()); r.PeliculaId = Convert.ToInt32(reader[2].ToString()); r.FechaAlquiler = Convert.ToDateTime(reader[3].ToString()); r.TiempoReserva = Convert.ToInt32(reader[4].ToString()); r.FechaDevolucion = reader[5] != DBNull.Value ? Convert.ToDateTime(reader[5]) : (DateTime?)null; return(r); }
public static void MisAlquileres(Usuario usuario) { int opcion; do { Console.ForegroundColor = ConsoleColor.DarkCyan; Console.WriteLine("\nEsta es la lista de películas que tiene alquidadas:\n"); //Lista de peliculas alquiladas del usuario List <Alquiler> alquilerUsuario = new List <Alquiler>(); string query = $"SELECT * FROM Alquiler WHERE IDUsuario={usuario.ID} AND FechaDevolucion IS NULL"; SqlDataReader reader = ConsultarBase(query); while (reader.Read()) { Alquiler alquiler = new Alquiler(Convert.ToInt32(reader[0].ToString()), Convert.ToInt32(reader[1].ToString()), Convert.ToInt32(reader[2].ToString()), Convert.ToDateTime(reader[3].ToString())); //Para crear un objeto alquilerUsuario.Add(alquiler); } connection.Close(); //Le muestro la lista de peliculas que tiene alquiladas y que todavia no ha devuelto Console.ForegroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("\tNOMBRE || \tNÚMERO || \tTÍTULO PELÍCULA \t || \tFECHA DE ALQUILER || \t"); Console.WriteLine("\t----------------------------------------------------------------"); foreach (Alquiler item in alquilerUsuario) { for (int i = 0; i < usuario.ListaPeliculasUsuario.Count; i++) { if (usuario.ListaPeliculasUsuario[i].ID == item.IDPelicula) { if (DateTime.Today >= item.FechaAlquiler.AddDays(2)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"\t{usuario.Nombre} || \t{item.IDPelicula} ||\t{usuario.ListaPeliculasUsuario[i].Titulo} \t||\t{item.FechaAlquiler} ||"); } else { Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine($"\t{usuario.Nombre} || \t{item.IDPelicula} ||\t{usuario.ListaPeliculasUsuario[i].Titulo} \t||\t{item.FechaAlquiler} ||"); } } } } Console.WriteLine("\nSi desea devolver alguna de las películas, introduzca el número correspondiente\n Si desea volver al menú principal pulse 0\n"); string respuesta = Console.ReadLine(); if (Int32.TryParse(respuesta, out opcion)) { //HACER UN BOOLEANO!!!!!!!! //Recorrer la lista de peliculas alquiladas y cuando identifica la seleccionada modifica la BBDD bool peliculaDevuelta = false; foreach (Alquiler item in alquilerUsuario) { if (opcion == item.IDPelicula) { int idUsuario = usuario.ID; int idPelicula = item.IDPelicula; query = $"Update Alquiler SET FechaDevolucion=GETDATE() WHERE IDUsuario={idUsuario} AND IDPelicula={idPelicula}"; //o ponerlo como GETDATE(), para que lo ejecute SQL ModificarBase(query); query = $"Update Peliculas SET ESTADO='DISPONIBLE' Where ID='{idPelicula}'"; ModificarBase(query); Console.ForegroundColor = ConsoleColor.Cyan; peliculaDevuelta = true; } } if (peliculaDevuelta == true) { Console.WriteLine($"{usuario.Nombre}, la devolución se ha realizado con éxito"); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("\n***La opción seleccionada no representa ninguna película***\n"); Console.WriteLine("\n***Opción no válida, debe introducir el dígito de una de las opciones***\n"); Console.ResetColor(); Console.ReadLine(); Console.Clear(); } } else { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("\n***Opción no válida, debe introducir el dígito de una de las opciones***\n"); Console.ResetColor(); Console.ReadLine(); Console.Clear(); } } while (opcion != 2); Console.Clear(); MenuSecundario(usuario); //Se le da la opcion al usuario de devolver la película }