Esempio n. 1
0
        public List <Calificacion> calificacionesPendientes(int codUsuario, string tipoUsuarioLogeado, string tipoClasificacion, Boolean count = false)
        {
            List <Calificacion> calificacionesPendientes = new List <Calificacion>();
            Conexion            conexion = new Conexion();
            string query = "";

            if (count)
            {
                query = "select count(*) as cantidad from CALIFICACIONES CA";
            }
            else
            {
                query = "select * from CALIFICACIONES CA";
            }

            string extraConditions = "";

            //Usuario Dueño calificando a sus clientes
            if (tipoUsuarioLogeado.Equals("Dueño") && tipoClasificacion.Equals("Cliente"))
            {
                query           += " INNER JOIN ARRIENDOS ar on ar.cod_arriendo = CA.cod_arriendo";
                query           += " INNER JOIN ESTACIONAMIENTOS EST on EST.cod_estacionamiento = ar.cod_estacionamiento";
                extraConditions += " and CA.COD_USUARIO_CALIFICADOR = " + codUsuario;
                extraConditions += " and EST.cod_usuario = " + codUsuario;
            }

            //Usuario dueño calificando a otros dueños
            if (tipoUsuarioLogeado.Equals("Dueño") && tipoClasificacion.Equals("Dueño"))
            {
                query           += " INNER JOIN ARRIENDOS ar on ar.cod_arriendo = CA.cod_arriendo";
                query           += " INNER JOIN ESTACIONAMIENTOS EST on EST.cod_estacionamiento = ar.cod_estacionamiento";
                extraConditions += " and CA.COD_USUARIO_CALIFICADOR = " + codUsuario;
                extraConditions += " and EST.cod_usuario <> " + codUsuario;
            }

            if (tipoUsuarioLogeado.Equals("Cliente") && tipoClasificacion.Equals("Dueño"))
            {
                query           += " INNER JOIN ARRIENDOS ar on ar.cod_arriendo = CA.cod_arriendo";
                query           += " INNER JOIN VEHICULOS VE on VE.cod_vehiculo = ar.cod_vehiculo";
                extraConditions += " and CA.COD_USUARIO_CALIFICADO = " + codUsuario;
                extraConditions += " and VE.cod_usuario =" + codUsuario;
            }

            query += " where CA.NOTA = 0";
            //query += " and AR.FIN_ARRIENDO < SYSDATE";
            query += extraConditions;

            OracleDataReader dr = conexion.consultar(query);

            while (dr.Read())
            {
                Calificacion calificacion = new Calificacion();
                if (count)
                {
                    int cantidad = Int32.Parse(dr["cantidad"].ToString());
                    if (cantidad > 0)
                    {
                        calificacion.cod_calificacion = cantidad;
                        calificacionesPendientes.Add(calificacion);
                    }
                }
                else
                {
                    calificacion          = this.llenarObjeto(dr);
                    calificacion.Arriendo = new Arriendo().buscarPorPk(calificacion.cod_arriendo);
                    switch (tipoClasificacion)
                    {
                    case "Cliente":
                        calificacion.Arriendo.Vehiculo.Usuario = new Usuario().buscarPorPK(calificacion.Arriendo.Vehiculo.cod_usuario);
                        break;

                    case "Dueño":
                        calificacion.Arriendo.Estacionamiento.Usuario = new Usuario().buscarPorPK(calificacion.Arriendo.Estacionamiento.cod_usuario);
                        break;
                    }
                    calificacionesPendientes.Add(calificacion);
                }
            }
            dr.Close();
            return(calificacionesPendientes);
        }