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);
        }
Пример #6
0
 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);
        }
Пример #8
0
 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);
        }
Пример #10
0
        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);
        }
Пример #11
0
 public MedicosController(ContextoBD contextoBD)
 {
     _contextoBD = contextoBD;
 }
Пример #12
0
 public UnitOfWork(ContextoBD context)
 {
     this.context = context;
     repositories = new Dictionary <Type, object>();
 }
 public MaterialsController(ContextoBD context) => _context = context;
Пример #14
0
        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);
        }
Пример #15
0
        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;
 }