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