req->get("inicio", "")); $fechaFinal = trim($this->req->get("fin", "")); if($fechaInicio === "" || $fechaFinal === "") { throw new NotFoundHttpException("Los parĂ¡metros inicio y fin son obligatorios."); } $query = (new Query()) ->select([ "{{Dependencia}}.id as dependenciaId", "{{Dependencia}}.nombre as dependenciaNombre", "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Facebook' and {{Usuario}}.[[facebookVerificado]]) as eventosFacebook", "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Twitter' and {{Usuario}}.[[twitterVerificado]]) as eventosTwitter", "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Instagram' and {{Usuario}}.[[instagramVerificado]]) as eventosInstagram", "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] not in('Facebook', 'Twitter', 'Instagram') and {{Usuario}}.[[instagramVerificado]]) as eventos", "count({{Resultado}}.accion) as cantidadResultados", ]) ->from("Evento") ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id") ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]") ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id") ->innerJoin("Usuario", "{{Usuario}}.id = {{UsuarioGrupo}}.[[idUsuario]]") ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{Usuario}}.[[id]]") ->innerJoin("Dependencia", "{{Dependencia}}.id = {{UsuarioDependencia}}.[[idDependencia]]") ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{Usuario}}.id") ->andWhere([ "AND", [">=", "fechaInicio", $fechaInicio], ["<=", "fechaFinal", $fechaFinal], ]) ->groupBy([ "dependenciaId", "dependenciaNombre", ]) ->orderBy(["dependenciaNombre" => SORT_ASC]); $query2 = (new Query()) ->select([ "*", "([[eventosFacebook]] + [[eventosTwitter]] + [[eventosInstagram]]) as [[cantidadEventos]]", "([[eventosFacebook]] + [[eventosTwitter]] + [[eventosInstagram]]) - [[cantidadResultados]] as [[cantidadPendientes]]" ]) ->from(["t" => $query]); $data = []; $eventosAtendidos = 0; $eventosPendientes = 0; $csv = "nombre,participaciones,pendientes\n"; foreach($query2->each() as $resultado) { $eventosAtendidos += $resultado["cantidadResultados"]; $eventosPendientes += $resultado["cantidadPendientes"]; $data[] = [ "id" => $resultado["dependenciaId"], "nombre" => $resultado["dependenciaNombre"], "participaciones" => $resultado["cantidadResultados"], "pendientes" => $resultado["cantidadPendientes"], ]; $csv .= "{$resultado["dependenciaNombre"]},{$resultado["cantidadResultados"]},{$resultado["cantidadPendientes"]}\n"; } \Yii::$app->getResponse()->sendContentAsFile($csv, "comparativa_dep_{$fechaInicio}_{$fechaFinal}.csv"); \Yii::$app->end(); } }