public async Task <List <Vehiculo> > ObtenerAlquiladosPorVeces(int veces) { string peticion = "SELECT v.matricula, m.id, m.nombre, v.modelo, v.anio, " + "v.capacidad, v.costoDia, v.pathFoto " + "FROM vehiculos v " + "INNER JOIN marcas m " + "ON v.idMarca = m.id " + "INNER JOIN alquileres al " + "ON v.matricula = al.matricula " + "GROUP BY v.matricula " + "HAVING COUNT(al.matricula) > @veces"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlCommand command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@veces", veces); command.Prepare(); List <Vehiculo> vehiculos = new List <Vehiculo>(); try { DbDataReader reader = await command.ExecuteReaderAsync(); Console.WriteLine("BBBBBBBBBBBBBB"); if (reader.HasRows) { Vehiculo vehiculo; while (reader.Read()) { vehiculo = new Vehiculo() { Matricula = reader.GetString(0), Marca = new Marca() { Id = reader.GetInt16(1), Nombre = reader.GetString(2) }, Modelo = reader.GetString(3), Anio = reader.GetString(4), Capacidad = reader.GetInt16(5), CostoDia = reader.GetFloat(6), PathFoto = reader.GetString(7), }; vehiculos.Add(vehiculo); Console.WriteLine("BBBBBBBBBBBBBB" + vehiculos.Count); } } } catch (DbException ex) { throw ex; } finally { conexion.Close(); } return(vehiculos); }
public async Task <bool> Crear(Vehiculo vehiculo) { string peticion = "INSERT INTO vehiculos " + "VALUES (@matricula, @idMarca, @modelo, @capacidad, " + "@anio, @costoDia, @pathFoto)"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlTransaction transaction = conexion.BeginTransaction(); MySqlCommand command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@matricula", vehiculo.Matricula); command.Parameters.AddWithValue("@idMarca", vehiculo.Marca.Id); command.Parameters.AddWithValue("@modelo", vehiculo.Modelo); command.Parameters.AddWithValue("@anio", vehiculo.Anio); command.Parameters.AddWithValue("@costoDia", vehiculo.CostoDia); command.Parameters.AddWithValue("@pathFoto", vehiculo.PathFoto); command.Parameters.AddWithValue("@capacidad", vehiculo.Capacidad); command.Prepare(); try { int result = await command.ExecuteNonQueryAsync(); if (!(vehiculo.Caracteristicas is null)) { peticion = "INSERT INTO caracteristicas_vehiculos " + "VALUES (@idCaracteristica,@matricula)"; foreach (Caracteristica caracteristica in vehiculo.Caracteristicas) { command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@idCaracteristica", caracteristica.Id); command.Parameters.AddWithValue("@matricula", vehiculo.Matricula); command.Prepare(); result = await command.ExecuteNonQueryAsync(); } ; } transaction.Commit(); } catch (DbException ex) { transaction.Rollback(); if (ex.Message.Contains("Duplicate entry")) { throw new MatriculaYaExisteException(); } else { throw ex; } } finally { conexion.Close(); } return(true); }
public async Task <List <Vehiculo> > ListarDisponibles(DateTime inicio, DateTime fin) { string peticion = "SELECT v.matricula, m.id, m.nombre, v.modelo, v.anio, " + "v.capacidad, v.costoDia, v.pathFoto " + "FROM vehiculos v " + "INNER JOIN marcas m " + "ON v.idMarca = m.id " + "AND(v.matricula not in " + "(SELECT matricula FROM alquileres " + "WHERE " + "(fechaInicio < @fin AND fechaFin > @inicio) " + "OR " + "(fechaFin > @inicio AND fechaInicio < @fin))) " + "GROUP by v.matricula"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlCommand command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@inicio", inicio); command.Parameters.AddWithValue("@fin", fin); command.Prepare(); List <Vehiculo> vehiculos = new List <Vehiculo>(); try { DbDataReader reader = await command.ExecuteReaderAsync(); if (reader.HasRows) { Vehiculo vehiculo; while (reader.Read()) { vehiculo = new Vehiculo() { Matricula = reader.GetString(0), Marca = new Marca() { Id = reader.GetInt16(1), Nombre = reader.GetString(2) }, Modelo = reader.GetString(3), Anio = reader.GetString(4), Capacidad = reader.GetInt16(5), CostoDia = reader.GetFloat(6), PathFoto = reader.GetString(7), }; vehiculos.Add(vehiculo); } } } catch (DbException ex) { Console.WriteLine(ex); throw ex; } finally { conexion.Close(); } return(vehiculos); }
public async Task <bool> Modificar(Vehiculo vehiculo) { string peticion = "UPDATE vehiculos " + "SET idMarca = @idMarca, modelo = @modelo, capacidad = @capacidad, " + " anio = @anio, costoDia = @costoDia, pathFoto = @pathFoto " + "WHERE matricula = @matricula"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlTransaction transaction = conexion.BeginTransaction(); MySqlCommand command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@matricula", vehiculo.Matricula); command.Parameters.AddWithValue("@idMarca", vehiculo.Marca.Id); command.Parameters.AddWithValue("@modelo", vehiculo.Modelo); command.Parameters.AddWithValue("@anio", vehiculo.Anio); command.Parameters.AddWithValue("@costoDia", vehiculo.CostoDia); command.Parameters.AddWithValue("@pathFoto", vehiculo.PathFoto); command.Parameters.AddWithValue("@capacidad", vehiculo.Capacidad); command.Prepare(); try { int result = await command.ExecuteNonQueryAsync(); if (!(vehiculo.Caracteristicas is null)) { peticion = "DELETE FROM caracteristicas_vehiculos " + "WHERE matricula = @matricula"; command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@matricula", vehiculo.Matricula); command.Prepare(); result = await command.ExecuteNonQueryAsync(); peticion = "INSERT INTO caracteristicas_vehiculos " + "VALUES (@idCaracteristica,@matricula)"; foreach (Caracteristica caracteristica in vehiculo.Caracteristicas) { command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@idCaracteristica", caracteristica.Id); command.Parameters.AddWithValue("@matricula", vehiculo.Matricula); command.Prepare(); result = await command.ExecuteNonQueryAsync(); } ; } transaction.Commit(); } catch (DbException ex) { throw ex; } finally { conexion.Close(); } return(true); }
public async Task <List <Alquiler> > ListarConClientesPorVehiculo(string matricula) { string peticion = "SELECT al.fechaInicio,al.fechaFin, " + "al.importe, c.dni, c.nombre,IFNULL(SUM(acc.costo),0) " + "FROM alquileres al " + "INNER JOIN clientes c " + "ON c.dni = al.dni " + "AND al.matricula = @matricula " + "LEFT JOIN accesorios_alquileres aa " + "ON al.id = aa.idAlquiler " + "LEFT JOIN accesorios acc " + "ON aa.idAccesorio = acc.id " + "GROUP by al.id " + "ORDER BY al.fechaInicio"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlCommand command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@matricula", matricula); command.Prepare(); List <Alquiler> alquileres = new List <Alquiler>(); try { DbDataReader reader = await command.ExecuteReaderAsync(); if (reader.HasRows) { Alquiler alquiler; while (reader.Read()) { alquiler = new Alquiler() { FechaInicio = reader.GetDateTime(0), FechaFin = reader.GetDateTime(1), Importe = reader.GetFloat(2), Cliente = new Cliente() { Dni = reader.GetString(3), Nombre = reader.GetString(4) }, CostoTotalAccesorios = (float)reader.GetDecimal(5) }; alquileres.Add(alquiler); } } } catch (DbException ex) { Console.WriteLine(ex); throw ex; } finally { conexion.Close(); } return(alquileres); }
public void SetupControlador() { controlador = new UsuarioController(); _BD = new ContextoBD(); }
public async Task <List <Alquiler> > ListarPorFechaDetallado(DateTime inicio, DateTime fin, Orden orden) { string peticion = "SELECT al.id, al.fechaInicio, al.fechaFin, al.importe, " + "v.matricula, v.modelo, v.capacidad, v.anio, v.pathFoto, " + "m.nombre, " + "c.dni, c.nombre, c.telefono, c.domicilio, " + "IFNULL(SUM(ac.costo),0) " + "FROM alquileres al " + "INNER JOIN clientes c " + "ON c.dni = al.dni " + "AND al.fechaInicio >= @inicio " + "AND al.fechaFin <= @fin " + "INNER JOIN vehiculos v " + "ON v.matricula = al.matricula " + "INNER JOIN marcas m " + "ON m.id = v.idMarca " + "LEFT JOIN accesorios_alquileres acal " + "ON acal.idAlquiler = al.id " + "LEFT JOIN accesorios ac " + "ON acal.idAccesorio = ac.id " + "GROUP BY al.id " + "ORDER BY @orden"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlCommand command = new MySqlCommand(peticion, conexion); string ordenarPor = ""; ; switch (orden) { case Orden.CLIENTE: ordenarPor = "c.dni"; break; case Orden.FECHA: ordenarPor = "al.fechaInicio"; break; case Orden.MATRICULA: ordenarPor = "v.matricula"; break; } command.Parameters.AddWithValue("@orden", ordenarPor); command.Parameters.AddWithValue("@inicio", inicio); command.Parameters.AddWithValue("@fin", fin); command.Prepare(); List <Alquiler> alquileres = new List <Alquiler>(); try { DbDataReader reader = await command.ExecuteReaderAsync(); if (reader.HasRows) { Alquiler alquiler; while (reader.Read()) { alquiler = new Alquiler() { Id = reader.GetInt32(0), FechaInicio = reader.GetDateTime(1), FechaFin = reader.GetDateTime(2), Importe = reader.GetFloat(3), Vehiculo = new Vehiculo() { Matricula = reader.GetString(4), Modelo = reader.GetString(5), Capacidad = reader.GetInt32(6), Anio = reader.GetString(7), PathFoto = reader.GetString(8), Marca = new Marca() { Nombre = reader.GetString(9) }, }, Cliente = new Cliente() { Dni = reader.GetString(10), Nombre = reader.GetString(11), Telefono = reader.GetString(12), Domilicio = reader.GetString(13), }, CostoTotalAccesorios = reader.GetFloat(14) }; alquileres.Add(alquiler); } } } catch (DbException ex) { Console.WriteLine(ex); throw ex; } finally { conexion.Close(); } return(alquileres); }
public FuncionariosController(ContextoBD context) { _context = context; }
public async Task <bool> AsignarAccesorios(int idAlquiler, List <int> idsAccesorio) { string peticion = ""; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlTransaction transaction = conexion.BeginTransaction(); peticion = "SELECT IFNULL(SUM(acc.costo),0) " + "FROM accesorios acc " + "INNER JOIN accesorios_alquileres aa " + "ON acc.id = aa.idAccesorio " + "AND aa.idAlquiler = @idAlquiler "; MySqlCommand command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@idAlquiler", idAlquiler); command.Prepare(); try { DbDataReader reader1 = await command.ExecuteReaderAsync(); float antiguoCosto = 0f; if (reader1.HasRows) { while (reader1.Read()) { antiguoCosto = (float)reader1.GetDecimal(0); } } reader1.Close(); peticion = "DELETE FROM accesorios_alquileres " + "WHERE idAlquiler = @idAlquiler"; command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@idAlquiler", idAlquiler); command.Prepare(); int result = await command.ExecuteNonQueryAsync(); peticion = "INSERT INTO accesorios_alquileres " + "VALUES (@idAccesorio,@idAlquiler)"; foreach (int idAccesorio in idsAccesorio) { command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@idAccesorio", idAccesorio); command.Parameters.AddWithValue("@idAlquiler", idAlquiler); command.Prepare(); result = await command.ExecuteNonQueryAsync(); } ; peticion = "SELECT IFNULL(SUM(acc.costo),0) " + "FROM accesorios acc " + "INNER JOIN accesorios_alquileres aa " + "ON acc.id = aa.idAccesorio " + "AND aa.idAlquiler = @idAlquiler "; command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@idAlquiler", idAlquiler); command.Prepare(); DbDataReader reader2 = await command.ExecuteReaderAsync(); float nuevoCosto = 0f; if (reader2.HasRows) { while (reader2.Read()) { nuevoCosto = (float)reader2.GetDecimal(0); } } reader2.Close(); peticion = "UPDATE alquileres SET importe = (importe - " + "@antiguoCosto) + @nuevoCosto where id = @idAlquiler"; command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@idAlquiler", idAlquiler); command.Parameters.AddWithValue("@nuevoCosto", nuevoCosto); command.Parameters.AddWithValue("@antiguoCosto", antiguoCosto); command.Prepare(); result = await command.ExecuteNonQueryAsync(); transaction.Commit(); } catch (DbException ex) { Console.WriteLine(ex); transaction.Rollback(); throw ex; } finally { conexion.Close(); } return(true); }
public async Task <List <Alquiler> > Listar() { string peticion = "SELECT a.*, IFNULL(SUM(ac.costo),0) " + "FROM alquileres a " + "LEFT JOIN accesorios_alquileres aa " + "ON a.id = aa.idAlquiler " + "LEFT JOIN accesorios ac " + "ON aa.idAccesorio = ac.id " + "GROUP BY a.id"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlCommand command = new MySqlCommand(peticion, conexion); List <Alquiler> alquileres = new List <Alquiler>(); try { DbDataReader reader = await command.ExecuteReaderAsync(); if (reader.HasRows) { Alquiler alquiler; while (reader.Read()) { alquiler = new Alquiler() { Id = reader.GetInt32(0), Vehiculo = new Vehiculo() { Matricula = reader.GetString(1) }, Cliente = new Cliente() { Dni = reader.GetString(2) }, FechaInicio = reader.GetDateTime(3), FechaFin = reader.GetDateTime(4), Importe = reader.GetFloat(5), CostoTotalAccesorios = (float)reader.GetDecimal(6) }; alquileres.Add(alquiler); } } } catch (DbException ex) { Console.WriteLine(ex); throw ex; } finally { conexion.Close(); } return(alquileres); }
public MedicosController(ContextoBD contextoBD) { _contextoBD = contextoBD; }
public UnitOfWork(ContextoBD context) { this.context = context; repositories = new Dictionary <Type, object>(); }
public MaterialsController(ContextoBD context) => _context = context;
public async Task <List <Vehiculo> > ObtenerPorMarcaYModelo(int idMarca, string modelo) { string peticion = "SELECT v.matricula, m.id, m.nombre, v.modelo, v.anio, " + "v.capacidad, v.costoDia, v.pathFoto " + "FROM vehiculos v " + "INNER JOIN marcas m " + "ON v.idMarca = m.id " + "AND m.id = @idMarca " + "AND v.modelo = @modelo"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlCommand command = new MySqlCommand(peticion, conexion); command.Parameters.AddWithValue("@idMarca", idMarca); command.Parameters.AddWithValue("@modelo", modelo); command.Prepare(); List <Vehiculo> vehiculos = new List <Vehiculo>(); try { DbDataReader reader = await command.ExecuteReaderAsync(); if (reader.HasRows) { Vehiculo vehiculo; while (reader.Read()) { vehiculo = new Vehiculo() { Matricula = reader.GetString(0), Marca = new Marca() { Id = reader.GetInt16(1), Nombre = reader.GetString(2) }, Modelo = reader.GetString(3), Anio = reader.GetString(4), Capacidad = reader.GetInt16(5), CostoDia = reader.GetFloat(6), PathFoto = reader.GetString(7), }; vehiculos.Add(vehiculo); } } } catch (DbException ex) { throw ex; } finally { conexion.Close(); } return(vehiculos); }
public async Task <List <Alquiler> > ListarPorFechaResumido(DateTime inicio, DateTime fin, Orden orden) { string peticion = "SELECT al.id, al.fechaInicio, al.fechaFin, " + "v.matricula, v.modelo," + "m.nombre, " + "c.dni, c.nombre " + "FROM alquileres al " + "INNER JOIN clientes c " + "ON c.dni = al.dni " + "AND al.fechaInicio >= @inicio " + "AND al.fechaFin <= @fin " + "INNER JOIN vehiculos v " + "ON v.matricula = al.matricula " + "INNER JOIN marcas m " + "ON m.id = v.idMarca " + "ORDER BY @orden"; var conexion = ContextoBD.GetInstancia().GetConexion(); conexion.Open(); MySqlCommand command = new MySqlCommand(peticion, conexion); string ordenarPor = ""; ; switch (orden) { case Orden.CLIENTE: ordenarPor = "c.dni"; break; case Orden.FECHA: ordenarPor = "al.fechaInicio"; break; case Orden.MATRICULA: ordenarPor = "v.matricula"; break; } command.Parameters.AddWithValue("@orden", ordenarPor); command.Parameters.AddWithValue("@inicio", inicio); command.Parameters.AddWithValue("@fin", fin); command.Prepare(); List <Alquiler> alquileres = new List <Alquiler>(); try { DbDataReader reader = await command.ExecuteReaderAsync(); if (reader.HasRows) { Alquiler alquiler; while (reader.Read()) { alquiler = new Alquiler() { Id = reader.GetInt32(0), FechaInicio = reader.GetDateTime(1), FechaFin = reader.GetDateTime(2), Vehiculo = new Vehiculo() { Matricula = reader.GetString(3), Modelo = reader.GetString(4), Marca = new Marca() { Nombre = reader.GetString(5) }, }, Cliente = new Cliente() { Dni = reader.GetString(6), Nombre = reader.GetString(7) } }; alquileres.Add(alquiler); } } } catch (DbException ex) { Console.WriteLine(ex); throw ex; } finally { conexion.Close(); } return(alquileres); }
public ConsultoriosController(ContextoBD contextoBD) { _contextoBD = contextoBD; }
public UnidadDeTrabajo(ContextoBD contexto) { _contexto = contexto; }