/**
  * Show the application dashboard to the user.
  *
  * @return Response
  */
 public function index(Request $request)
 {
     $titulo = "Calendario";
     $cursillos = Cursillos::getCalendarCursillos($request);
     $anyos = Cursillos::getAnyoCursillosList();
     //Obtenemos los parámetros de la respuesta
     $year = $request->input('anyo');
     $week = $request->input('semana') > 0 ? $request->input('semana') : 1;
     $semanas = array();
     //A partir del número de semana obtenemos el mes
     if ($year > 0 && $week > 0) {
         $month = new \DateTime();
         $month->setISODate($year, $week);
         $mes = $month->format('m');
         $year = $month->format('Y');
     }
     $date = $year > 0 ? date('Y-m-d', strtotime("{$year}-{$mes}-1")) : date('Y-m-d');
     //Cargamos los cursillos
     foreach ($cursillos as $cursillo) {
         $event[] = \Calendar::event($cursillo->comunidad, $cursillo->cursillo, true, $cursillo->fecha_inicio, date('Y-m-d', strtotime($cursillo->fecha_final) + 86400), $cursillo->colorFondo, $cursillo->colorTexto, $cursillo->id);
     }
     if (count($cursillos) > 0) {
         $calendar = \Calendar::addEvents($event)->setOptions(['lang' => '', 'defaultDate' => $date, 'buttonIcons' => true, 'editable' => false, 'weekNumbers' => true, 'eventLimit' => true, 'header' => array('left' => 'prev', 'center' => 'title', 'right' => 'next')])->setCallbacks(['eventClick' => 'function(calEvent, jsEvent, view) {
                 $(this).attr("href","curso/"+calEvent.id);
             }']);
     }
     return view('autenticado', compact('calendar', 'anyos', 'semanas', 'titulo'));
 }
 public static function crearComunidadesCursillos($comunidades = array(), $cursillosIds = array())
 {
     $logs = [];
     $pluralComunidad = count($comunidades) > 1 ? true : false;
     $pluralCursillo = count($cursillosIds) > 1 ? true : false;
     $contadorTotalCursillos = 0;
     $contadorTotalComunidades = 0;
     //Obtenemos los ids de las comunidades
     $comunidadesIds = array_column($comunidades, 0);
     $cursillos = Cursillos::getAlgunosCursillosConComunidades($comunidadesIds, $cursillosIds);
     if (count($cursillos) == 0) {
         return null;
     }
     if (count($cursillosIds) > 0 && count($comunidades) > 0) {
         foreach ($comunidades as $comunidad) {
             $solicitudRecibida = new SolicitudesRecibidas();
             $solicitudRecibida->comunidad_id = $comunidad[0];
             try {
                 DB::transaction(function () use($solicitudRecibida, $comunidad, $cursillos, &$contadorTotalCursillos, &$contadorTotalComunidades, &$logs) {
                     $solicitudRecibida->save();
                     $solicitudesRecibidasCursillos = [];
                     $cursos = [];
                     foreach ($cursillos as $curso) {
                         if ($curso->comunidad_id == $comunidad[0]) {
                             $solicitudesRecibidasCursillos[] = new SolicitudesRecibidasCursillos(['cursillo_id' => $curso["id"], 'comunidad_id' => $comunidad[0]]);
                             $cursos[] = ["Incluido el cursillo " . $curso->cursillo . " con número " . $curso->num_cursillo . " a la comunidad " . $comunidad[1], "", "ok-circle info icon-size-normal"];
                             $contadorTotalCursillos += 1;
                         }
                     }
                     $logs[] = ["Incluida la comunidad " . $comunidad[1] . " en concepto de respuesta de solicitud a sus cursillos.", "", "ok-sign green icon-size-large"];
                     $solicitudRecibida->solicitudes_recibidas_cursillos()->saveMany($solicitudesRecibidasCursillos);
                     $contadorTotalComunidades += 1;
                     foreach ($cursos as $curso) {
                         $logs[] = $curso;
                     }
                 });
             } catch (QueryException $ex) {
                 $logs[] = ["No se han incluido la comunidad " . $comunidad[1] . " como respuesta de solicitud  a sus cursillos.", "", "exclamation-sign warning icon-size-large"];
             }
         }
         $logs[] = ["Se ha" . ($pluralComunidad ? "n" : "") . " incluido " . $contadorTotalComunidades . " comunidad" . ($pluralComunidad ? "es" : "") . " y " . $contadorTotalCursillos . " cursillo" . ($pluralCursillo ? "s" : "") . " en la" . ($pluralCursillo ? "s" : "") . " respuesta" . ($pluralCursillo ? "s" : "") . " de solicitud pendiente" . ($pluralCursillo ? "s" : ""), "", "plus-sign green icon-size-large"];
     } else {
         $logs[] = ["No se han incluido nuevas respuestas de solicitud.", "", "info-sign info icon-size-large"];
     }
     return $logs;
 }
 public function borrarTablas(Request $request)
 {
     $anyo = $request->get('anyo');
     if ($anyo == 0) {
         return redirect('cerrarAnyo')->with('mensaje', 'Debe seleccionar un año.');
     } else {
         try {
             DB::transaction(function () use($anyo) {
                 SolicitudesEnviadasCursillos::where(DB::raw('DATE_FORMAT(solicitudes_enviadas_cursillos.created_at,"%Y")'), '=', $anyo)->delete();
                 SolicitudesEnviadas::where(DB::raw('DATE_FORMAT(solicitudes_enviadas.created_at,"%Y")'), '=', $anyo)->delete();
                 SolicitudesRecibidasCursillos::where(DB::raw('DATE_FORMAT(solicitudes_recibidas_cursillos.created_at,"%Y")'), '=', $anyo)->delete();
                 SolicitudesRecibidas::where(DB::raw('DATE_FORMAT(solicitudes_recibidas.created_at,"%Y")'), '=', $anyo)->delete();
                 Cursillos::where(DB::raw('DATE_FORMAT(cursillos.fecha_final,"%Y")'), '=', $anyo)->delete();
             });
         } catch (\Exception $e) {
             return redirect('cerrarAnyo')->with('mensaje', 'Las tablas no se han podido borrar.');
         }
     }
     return redirect('cerrarAnyo')->with('mensaje', 'Las tablas se han borrado con exito.');
 }
示例#4
0
 public static function getNombreCursillo($id = null)
 {
     if (!is_numeric($id)) {
         return null;
     }
     //Obtenemos el cursillo
     return Cursillos::Select('cursillos.cursillo')->where('cursillos.id', $id)->first();
 }
 public function totalAnyosRespuestaSolicitud(Request $request)
 {
     if (\Request::ajax()) {
         $comunidadPropia[] = $request->get('comunidadPropia');
         $comunidadNoPropia[] = $request->get('comunidadNoPropia');
         return Cursillos::getTodosMisAnyosCursillosResultadoSolicitudList($comunidadPropia, $comunidadNoPropia);
     }
 }
示例#6
0
 public function getSecretariado()
 {
     $titulo = "Actividad con un Secretariado";
     $comunidad = new Comunidades();
     $comunidades = Comunidades::getComunidadesAll();
     $anyos = Cursillos::getTodosMisAnyosCursillosList(false);
     return view("pdf.listarSecretariado", compact('comunidades', 'comunidad', 'titulo', 'anyos'));
 }
 public function enviar(Request $request)
 {
     $tipoEnvio = $request->get("modalidad");
     $remitente = Comunidades::getComunidad($request->get('nuestrasComunidades'));
     $incluirRespuestasAnteriores = filter_var($request->get('incluirRespuestasAnteriores'), FILTER_VALIDATE_BOOLEAN);
     $destinatarios = Comunidades::getComunidadPDFRespuestas($request->get('restoComunidades'), false, true, $incluirRespuestasAnteriores, $tipoEnvio);
     $cursillos = Cursillos::getCursillosPDFRespuesta($request->get('restoComunidades'), $request->get('anyo'), $request->get('incluirRespuestasAnteriores'), false);
     //Verificación
     $numeroDestinatarios = count($destinatarios);
     if (count($remitente) == 0 || $numeroDestinatarios == 0 || count($cursillos) == 0) {
         return redirect()->route('nuestrasRespuestas')->with('mensaje', 'No se puede realizar la operación, debe de existir remitente y/o destinatario/s  y/o curso/s');
     }
     //Configuración del listado html
     $listadoPosicionInicial = 40.5;
     $listadoTotal = 11;
     $listadoTotalRestoPagina = 40;
     $separacionLinea = 1.5;
     $meses = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
     $fecha_emision = date('d') . " de " . $meses[date('n') - 1] . " del " . date('Y');
     //Array contenedor de logs.
     $logEnvios = [];
     //Colección de cursos que van a ser actualizados y sus correspondiente mensajes.
     $comunidadesDestinatarias = [];
     $totalCursosActualizadosIds = [];
     $totalCursosActualizados = [];
     $totalContadorCursosActualizados = 0;
     $totalContadorCursos = 0;
     //PDF en múltiples páginas
     $destinatariosConCarta = 0;
     $destinatariosConEmail = 0;
     $multiplesPdf = \App::make('dompdf.wrapper');
     $multiplesPdfBegin = '<html lang="es">';
     $multiplesPdfContain = "";
     $multiplesPdfEnd = '</html>';
     //Ampliamos el tiempo de ejecución del servidor a 60 minutos.
     ini_set("max_execution_time", config('opciones.envios.timeout'));
     foreach ($destinatarios as $idx => $destinatario) {
         //Ruta para linux
         $separatorPath = "/";
         $path = "respuestasCursillos";
         $archivo = $path . $separatorPath . "NR-" . date("d_m_Y", strtotime('now')) . '-' . $destinatario->pais . '-' . $destinatario->comunidad . '-' . ($request->get('anyo') > 0 ? $request->get('anyo') : 'TotalCursos') . '.pdf';
         //Conversión a UTF
         $nombreArchivo = mb_convert_encoding($archivo, "UTF-8", mb_detect_encoding($archivo, "UTF-8, ISO-8859-1, ISO-8859-15", true));
         $cursos = [];
         $cursosActualizados = [];
         $cursosActualizadosIds = [];
         $esCarta = true;
         foreach ($cursillos as $idx => $cursillo) {
             if ($cursillo->comunidad_id == $destinatario->id) {
                 if (config("opciones.accion.cartaCumplimentadaIndividualNuestrasRespuestas")) {
                     $curso[] = ['num' => $cursillo->num_cursillo, 'dia' => date('d', strtotime($cursillo->fecha_inicio)), 'mes' => $meses[date('n', strtotime($cursillo->fecha_inicio)) - 1], 'anyo' => date('Y', strtotime($cursillo->fecha_inicio))];
                 }
                 $cursos[] = sprintf("Nº %'06s de fecha %10s al %10s", $cursillo->num_cursillo, date('d/m/Y', strtotime($cursillo->fecha_inicio)), date('d/m/Y', strtotime($cursillo->fecha_final)));
                 if (!$cursillo->esRespuesta) {
                     $cursosActualizados[] = sprintf("Cuso Nº %'06s de la comunidad %10s cambiado a estado de respuesta realizada.", $cursillo->num_cursillo, $destinatario->comunidad);
                     $cursosActualizadosIds[] = $cursillo->id;
                     $totalContadorCursos += 1;
                 }
             }
         }
         //Reseteamos el tiempo de ejecución del script definiendo un nuevo tamaño de espera.
         set_time_limit(config('opciones.envios.seMaxtTimeAt'));
         // $tipoEnvio si es distinto de carta , si su comunicación preferida es email y si tiene correo destinatario para el envío
         if ($tipoEnvio != 1 && strcasecmp($destinatario->comunicacion_preferida, config("opciones.tipo.email")) == 0 && strlen($destinatario->email_envio) > 0) {
             $archivoEmail = 'templatePDF' . $separatorPath . 'NR-' . $remitente->comunidad . '.pdf';
             //Conversión a UTF
             $nombreArchivoAdjuntoEmail = mb_convert_encoding($archivoEmail, "UTF-8", mb_detect_encoding($archivo, "UTF-8, ISO-8859-1, ISO-8859-15", true));
             $nombreArchivoAdjuntoEmail = str_replace(" ", "_", $nombreArchivoAdjuntoEmail);
             try {
                 $pdf = \App::make('dompdf.wrapper');
                 if (config("opciones.accion.cartaCumplimentadaIndividualNuestrasRespuestas")) {
                     $multiplesPdfContain = "";
                     foreach ($curso as $cur) {
                         $view = \View::make('nuestrasRespuestas.pdf.cartaRespuestaB2_B3PorCurso', compact('cur', 'remitente', 'destinatario', 'fecha_emision', 'esCarta', 'listadoPosicionInicial', 'listadoTotal', 'listadoTotalRestoPagina', 'separacionLinea'))->render();
                         $multiplesPdfContain .= $view;
                     }
                     $view = $multiplesPdfContain;
                 } else {
                     $view = \View::make('nuestrasRespuestas.pdf.cartaRespuestaB2_B3', compact('cursos', 'remitente', 'destinatario', 'fecha_emision', 'esCarta', 'listadoPosicionInicial', 'listadoTotal', 'listadoTotalRestoPagina', 'separacionLinea'))->render();
                 }
                 $pdf->loadHTML($multiplesPdfBegin . $view . $multiplesPdfEnd);
                 $pdf->output();
                 $pdf->save($nombreArchivoAdjuntoEmail);
                 $logEnvios[] = ["Creado documento adjunto para el email de respuesta a la comunidad " . $destinatario->comunidad, "", "floppy-saved green icon-size-large"];
             } catch (\Exception $e) {
                 $logEnvios[] = ["Error al crear el documento adjunto para email de " . $destinatario->comunidad, "", "floppy-remove red icon-size-large"];
             }
             $esCarta = false;
             //Obtenemos el número de cursillos a procesar
             $contador = count($cursosActualizados);
             try {
                 if (config("opciones.emailTestSender.active")) {
                     $destinatario->email_solicitud = config("opciones.emailTestSender.email");
                     $destinatario->email_envio = config("opciones.emailTestSender.email");
                 }
                 $envio = Mail::send("nuestrasRespuestas.pdf.cartaRespuestaB1", ['cursos' => $cursos, 'remitente' => $remitente, 'destinatario' => $destinatario, 'fecha_emision' => $fecha_emision, 'esCarta' => $esCarta], function ($message) use($remitente, $destinatario, $nombreArchivoAdjuntoEmail) {
                     $message->from($remitente->email_envio, $remitente->comunidad);
                     $message->to($destinatario->email_envio)->subject("Nuestra Respuesta");
                     $message->attach($nombreArchivoAdjuntoEmail);
                 });
                 $destinatariosConEmail += 1;
                 $comunidadesDestinatarias[] = [$destinatario->id, $destinatario->comunidad];
                 $totalContadorCursosActualizados += $contador;
                 foreach ($cursosActualizados as $actualizados) {
                     $totalCursosActualizados[] .= $actualizados;
                 }
                 foreach ($cursosActualizadosIds as $id) {
                     $totalCursosActualizadosIds[] .= $id;
                 }
                 if ($contador > 0) {
                     $logEnvios[] = [$contador . " Curso" . ($contador > 1 ? "s" : "") . " de la comunidad " . $destinatario->comunidad . " est&aacute;" . ($contador > 1 ? "n" : "") . " preparado" . ($contador > 1 ? "s" : "") . " para cambiar al estado de respuesta realizada.", "", "dashboard warning icon-size-normal"];
                 }
                 unlink($nombreArchivoAdjuntoEmail);
             } catch (\Exception $ex) {
                 if (count($cursosActualizados) > 0) {
                     $logEnvios[] = [count($cursosActualizados) . " Curso" . ($contador > 1 ? "s" : "") . " de la comunidad " . $destinatario->comunidad . " excluido" . ($contador > 1 ? "s" : "") . " del cambio de estado a respuesta" . ($contador > 1 ? "s" : "") . " realizada" . ($contador > 1 ? "s." : "."), "", "dashboard red icon-size-normal"];
                 }
                 $envio = 0;
             }
             $logEnvios[] = $envio > 0 ? ["Enviada respuesta a la comunidad " . $destinatario->comunidad . " al email " . $destinatario->email_envio, "", "envelope green icon-size-large"] : ["No se pudo enviar la respuesta a la comunidad " . $destinatario->comunidad . " al email " . $destinatario->email_envio, "", "envelope red icon-size-large"];
         } elseif ($tipoEnvio != 1 && strcasecmp($destinatario->comunicacion_preferida, config("opciones.tipo.email")) == 0 && strlen($destinatario->email_envio) == 0) {
             $logEnvios[] = ["La comunidad destinataria " . $destinatario->comunidad . " no dispone de email de respuesta", "", "envelope red icon-size-large"];
         } elseif ($tipoEnvio != 2 && strcasecmp($destinatario->comunicacion_preferida, config("opciones.tipo.email")) != 0) {
             $contador = count($cursosActualizados);
             try {
                 $view = \View::make('nuestrasRespuestas.pdf.cartaRespuestaB2_B3', compact('cursos', 'remitente', 'destinatario', 'fecha_emision', 'esCarta', 'listadoPosicionInicial', 'listadoTotal', 'listadoTotalRestoPagina', 'separacionLinea'))->render();
                 $multiplesPdfContain .= $view;
                 $logEnvios[] = ["Creada carta de respuesta para la comunidad " . $destinatario->comunidad, "", "align-justify green icon-size-large"];
                 $destinatariosConCarta += 1;
                 $comunidadesDestinatarias[] = [$destinatario->id, $destinatario->comunidad];
                 $totalContadorCursosActualizados += $contador;
                 foreach ($cursosActualizados as $actualizados) {
                     $totalCursosActualizados[] .= $actualizados;
                 }
                 foreach ($cursosActualizadosIds as $id) {
                     $totalCursosActualizadosIds[] .= $id;
                 }
                 if ($contador > 0) {
                     $logEnvios[] = [$contador . " Curso" . ($contador > 1 ? "s" : "") . " de la comunidad " . $destinatario->comunidad . " est&aacute;" . ($contador > 1 ? "n" : "") . " preparado" . ($contador > 1 ? "s" : "") . " para cambiar al estado de respuesta realizada.", "", "dashboard warning icon-size-normal"];
                 }
             } catch (\Exception $e) {
                 $logEnvios[] = ["No se ha podido crear la carta de respuesta para la comunidad " . $destinatario->comunidad, "", "align-justify red icon-size-large"];
                 $logEnvios[] = [count($cursosActualizados) . " Curso" . ($contador > 1 ? "s" : "") . " de la comunidad " . $destinatario->comunidad . " excluido" . ($contador > 1 ? "s" : "") . " del cambio de estado a respuesta" . ($contador > 1 ? "s" : "") . " realizada" . ($contador > 1 ? "s." : "."), "", "dashboard red icon-size-normal"];
             }
         }
     }
     if ($destinatariosConCarta > 0) {
         $pathTotalComunidadesCarta = $path . $separatorPath . "NR-" . date("d_m_Y", strtotime('now')) . '-' . "TotalComunidadesCarta.pdf";
         $multiplesPdf->loadHTML($multiplesPdfBegin . $multiplesPdfContain . $multiplesPdfEnd);
         $multiplesPdf->output();
         $multiplesPdf->save($pathTotalComunidadesCarta);
         $logEnvios[] = ["Creada cartas de respuesta.", $pathTotalComunidadesCarta, "list-alt green icon-size-large"];
     }
     if (count($logEnvios) == 0) {
         $logEnvios[] = ["No hay operaciones que realizar.", "", "remove-sign red icon-size-large"];
     } else {
         if ($destinatariosConEmail > 0) {
             $logEnvios[] = [$destinatariosConEmail . ($destinatariosConEmail > 1 ? " emails enviados." : " email enviado"), "", "info-sign info icon-size-large"];
         }
         if ($destinatariosConCarta > 0) {
             $logEnvios[] = [$destinatariosConCarta . ($destinatariosConCarta > 1 ? " cartas creadas." : " carta creada."), "", "info-sign info icon-size-large"];
         }
         //Cambiamos de estado las respuestas que no están como esRespuesta
         if ($totalContadorCursosActualizados > 0) {
             if (Cursillos::setCursillosEsRespuesta($totalCursosActualizadosIds) == $totalContadorCursosActualizados && $totalContadorCursosActualizados > 0) {
                 $logEnvios[] = ["[" . $totalContadorCursosActualizados . "/" . $totalContadorCursos . "] Curso" . ($totalContadorCursosActualizados > 1 ? "s" : "") . " ha" . ($totalContadorCursosActualizados > 1 ? "n" : "") . " cambiado al estado de respuesta realizada.", "", "info-sign info icon-size-large"];
             } elseif ($totalContadorCursosActualizados > 0) {
                 $logEnvios[] = [$totalContadorCursosActualizados . " Curso" . ($totalContadorCursosActualizados > 1 ? "s" : "") . " no se ha" . ($totalContadorCursosActualizados > 1 ? "n" : "") . " podido actualizar como Respuesta.", "", "exclamation-sign info icon-size-large"];
             }
         }
         //Actualizamos las tablas de forma automática y añadimos los logs
         $logSolicitudesRecibidas = SolicitudesRecibidas::crearComunidadesCursillos($comunidadesDestinatarias, $totalCursosActualizadosIds);
         //Obtenemos el último registro del log generado.
         if (count($logSolicitudesRecibidas) > 0) {
             $logEnvios[] = $logSolicitudesRecibidas[count($logSolicitudesRecibidas) - 1];
         }
         //Creamos la cabecera del Log
         $logArchivo = array();
         $logArchivo[] = 'Fecha->' . date('d/m/Y H:i:s') . "\n";
         $logArchivo[] = 'Usuario->' . $request->user()->name . "\n";
         $logArchivo[] = 'Email->' . $request->user()->email . "\n";
         $logArchivo[] = 'Ip->' . $request->server('REMOTE_ADDR') . "\n";
         $logArchivo[] = '******************************************' . "\n";
         foreach ($logEnvios as $log) {
             $logArchivo[] = $log[0] . "\n";
         }
         if ($totalContadorCursosActualizados > 0) {
             foreach ($totalCursosActualizados as $log) {
                 $logArchivo[] = $log . "\n";
             }
         }
         //Guardamos a archivo
         file_put_contents('logs/NR/NR_log_' . date('d_m_Y_H_i_s'), $logArchivo, true);
     }
     $titulo = "Operaciones Realizadas";
     return view('nuestrasRespuestas.listadoLog', compact('titulo', 'logEnvios'));
 }
 public function enviar(Request $request)
 {
     $modalidadComunicacion = $request->get("modalidad");
     $remitente = Comunidades::getComunidad($request->get('nuestrasComunidades'));
     $destinatarios = Comunidades::getComunidadPDFSolicitudes($request->get('restoComunidades'), $modalidadComunicacion);
     $cursillos = Cursillos::getCursillosPDFSolicitud($request->get('nuestrasComunidades'), $request->get('anyo'), filter_var($request->get('incluirSolicitudesAnteriores'), FILTER_VALIDATE_BOOLEAN));
     $numeroDestinatarios = count($destinatarios);
     //Verificación
     if (count($remitente) == 0 || $numeroDestinatarios == 0 || count($cursillos) == 0) {
         return redirect()->route('nuestrasSolicitudes')->with('mensaje', 'No se puede realizar la operaci&oacute;n, comprueba que exista remitente y/o destinatario/s  y/o curso/s');
     }
     //Configuración del listado html
     $listadoPosicionInicial = 43.5;
     //primera linea
     $listadoTotal = 9;
     // nº lineas cursillo max primera pagina
     $listadoTotalRestoPagina = 40;
     // nº lineas cursillo resto de las paginas
     $separacionLinea = 1.5;
     $meses = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
     $fecha_emision = date('d') . " de " . $meses[date('n') - 1] . " del " . date('Y');
     $logEnvios = [];
     //PDF en múltiples páginas
     $destinatariosConCarta = 0;
     $destinatariosConEmail = 0;
     $multiplesPdf = \App::make('dompdf.wrapper');
     $multiplesPdfBegin = '<html lang="es">';
     $multiplesPdfContain = "";
     $multiplesPdfEnd = '</html>';
     //Ampliamos el tiempo de ejecución del servidor a 60 minutos.
     ini_set("max_execution_time", config('opciones.envios.timeout'));
     //Obtenemos Los cursos relacionados con la comunidad y creamos la línea de impresión para enviarla al template en memoria
     $cursos = [];
     $cursosActualizados = [];
     $cursosActualizadosIds = [];
     $contadorCursosActualizados = 0;
     $comunidadesDestinatarias = [];
     foreach ($cursillos as $idx => $cursillo) {
         if ($cursillo->comunidad_id == $remitente->id) {
             $cursos[] = sprintf("Nº %'06s de fecha %10s al %10s", $cursillo->num_cursillo, date('d/m/Y', strtotime($cursillo->fecha_inicio)), date('d/m/Y', strtotime($cursillo->fecha_final)));
             if (!$cursillo->esSolicitud || $cursillo->esSolicitud && $request->get('generarSusRespuestas') && $request->get('incluirSolicitudesAnteriores')) {
                 $cursosActualizados[] = sprintf("Cuso Nº %'06s de la comunidad %10s cambiado al estado de es solicitud.", $cursillo->num_cursillo, $remitente->comunidad);
                 $contadorCursosActualizados += 1;
                 $cursosActualizadosIds[] = $cursillo->id;
             }
         }
     }
     foreach ($destinatarios as $idx => $destinatario) {
         //Ruta Linux
         $separatorPath = "/";
         $path = "solicitudesCursillos";
         $archivo = $path . $separatorPath . "NS-" . date("d_m_Y", strtotime('now')) . '-' . $destinatario->pais . '-' . $destinatario->comunidad . '-' . ($request->get('anyo') > 0 ? $request->get('anyo') : 'TotalCursos') . '.pdf';
         //Conversión a UTF
         $nombreArchivo = mb_convert_encoding($archivo, "UTF-8", mb_detect_encoding($archivo, "UTF-8, ISO-8859-1, ISO-8859-15", true));
         $esCarta = true;
         //intentanmos modificar el tiempo de ejecución del script.
         set_time_limit(config('opciones.envios.seMaxtTimeAt'));
         // modalidadComunicacion si es distinto de carta , si su comunicación preferida es email y si tiene correo destinatario para el envío
         if ($modalidadComunicacion != 1 && strcasecmp($destinatario->comunicacion_preferida, config("opciones.tipo.email")) == 0 && strlen($destinatario->email_solicitud) > 0) {
             //Nombre del archivo a adjuntar
             $archivoMail = "templatePDF" . $separatorPath . 'NS-' . $remitente->comunidad . '.pdf';
             //Conversión a UTF
             $nombreArchivoAdjuntoEmail = mb_convert_encoding($archivoMail, "UTF-8", mb_detect_encoding($archivo, "UTF-8, ISO-8859-1, ISO-8859-15", true));
             $nombreArchivoAdjuntoEmail = str_replace(" ", "", $nombreArchivoAdjuntoEmail);
             try {
                 $pdf = \App::make('dompdf.wrapper');
                 $view = \View::make('nuestrasSolicitudes.pdf.cartaSolicitudA2_A3', compact('cursos', 'remitente', 'destinatario', 'fecha_emision', 'esCarta', 'listadoPosicionInicial', 'listadoTotal', 'listadoTotalRestoPagina', 'separacionLinea'))->render();
                 $pdf->loadHTML($multiplesPdfBegin . $view . $multiplesPdfEnd);
                 $pdf->output();
                 $pdf->save($nombreArchivoAdjuntoEmail);
                 $logEnvios[] = ["Creado documento adjunto para la comunidad " . $destinatario->comunidad, "", "floppy-saved green icon-size-large"];
             } catch (\Exception $e) {
                 $logEnvios[] = ["Error al crear el documento adjunto para la comunidad" . $destinatario->comunidad, "", "floppy-remove red icon-size-large"];
             }
             $esCarta = false;
             try {
                 if (config("opciones.emailTestSender.active")) {
                     $destinatario->email_solicitud = config("opciones.emailTestSender.email");
                     $destinatario->email_envio = config("opciones.emailTestSender.email");
                 }
                 $envio = Mail::send('nuestrasSolicitudes.pdf.cartaSolicitudA1', compact('cursos', 'remitente', 'destinatario', 'fecha_emision', 'esCarta'), function ($message) use($remitente, $destinatario, $nombreArchivoAdjuntoEmail) {
                     $message->from($remitente->email_solicitud, $remitente->comunidad);
                     $message->to($destinatario->email_solicitud)->subject("Nuestra Solicitud");
                     $message->attach($nombreArchivoAdjuntoEmail);
                 });
                 $destinatariosConEmail += 1;
                 $comunidadesDestinatarias[] = [$destinatario->id, $destinatario->comunidad];
                 unlink($nombreArchivoAdjuntoEmail);
             } catch (\Exception $e) {
                 $envio = 0;
             }
             $logEnvios[] = $envio > 0 ? ["Enviada solicitud a la comunidad " . $destinatario->comunidad . " al email " . $destinatario->email_solicitud, "", "envelope green icon-size-large"] : ["No se pudo enviar la solicitud a la comunidad " . $destinatario->comunidad . " al email " . $destinatario->email_solicitud, "", "envelope red icon-size-large"];
         } elseif ($modalidadComunicacion != 1 && strcasecmp($destinatario->comunicacion_preferida, config("opciones.tipo.email")) == 0 && strlen($destinatario->email_solicitud) == 0) {
             $logEnvios[] = ["La comunidad destinataria " . $destinatario->comunidad . " no dispone de email de solicitud", "", "envelope red icon-size-large"];
         } elseif ($modalidadComunicacion != 2 && strcasecmp($destinatario->comunicacion_preferida, config("opciones.tipo.email")) != 0) {
             try {
                 $view = \View::make('nuestrasSolicitudes.pdf.cartaSolicitudA2_A3', compact('cursos', 'remitente', 'destinatario', 'fecha_emision', 'esCarta', 'listadoPosicionInicial', 'listadoTotal', 'listadoTotalRestoPagina', 'separacionLinea'))->render();
                 $multiplesPdfContain .= $view;
                 $logEnvios[] = ["Creada carta de solicitud para la comunidad " . $destinatario->comunidad, "", "align-justify green icon-size-large"];
                 $destinatariosConCarta += 1;
                 $comunidadesDestinatarias[] = [$destinatario->id, $destinatario->comunidad];
             } catch (\Exception $e) {
                 $logEnvios[] = ["No se ha podido crear la carta de solicitud para la comunidad " . $destinatario->comunidad, "", "align-justify red icon-size-large"];
             }
         }
     }
     if ($destinatariosConCarta > 0) {
         $pathTotalComunidadesCarta = $path . $separatorPath . "NS-" . date("d_m_Y", strtotime('now')) . '-' . "TotalComunidadesCarta.pdf";
         $multiplesPdf->loadHTML($multiplesPdfBegin . $multiplesPdfContain . $multiplesPdfEnd);
         $multiplesPdf->output();
         $multiplesPdf->save($pathTotalComunidadesCarta);
         $logEnvios[] = ["Cartas creadas de solicitud.", $pathTotalComunidadesCarta, "list-alt green icon-size-large"];
     }
     if ($destinatariosConEmail > 0) {
         $logEnvios[] = [$destinatariosConEmail . ($destinatariosConEmail > 1 ? " emails enviados." : " email enviado"), "", "info-sign info icon-size-large"];
     }
     if ($destinatariosConCarta > 0) {
         $logEnvios[] = [$destinatariosConCarta . ($destinatariosConCarta > 1 ? " cartas creadas." : " carta creada."), "", "info-sign info icon-size-large"];
     }
     //Cambiamos de estado las solicitudes que no están como esSolicitud
     if (count($comunidadesDestinatarias) > 0 && count($cursosActualizadosIds) > 0) {
         if (Cursillos::setCursillosEsSolicitud($cursosActualizadosIds) == $contadorCursosActualizados && $contadorCursosActualizados > 0) {
             $logEnvios[] = [count($cursosActualizados) . " Curso" . ($contadorCursosActualizados > 1 ? "s" : "") . " de la comunidad " . $remitente->comunidad . " ha" . ($contadorCursosActualizados > 1 ? "n" : "") . " sido actualizado" . ($contadorCursosActualizados > 1 ? "s" : "") . " a solicitud realizada.", "", "info-sign info icon-size-large"];
         } elseif ($contadorCursosActualizados > 0) {
             $logEnvios[] = [count($cursosActualizados) . " Cursos de la comunidad " . $remitente->comunidad . " no se ha" . ($contadorCursosActualizados > 1 ? "n" : "") . " podido actualizar como Solicitud.", "", "exclamation-sign red icon-size-large"];
         }
     }
     //Actualizamos las tablas de forma automática y añadimos los logs
     $logSolicitudesEnviadas = SolicitudesEnviadas::crearComunidadesCursillos($comunidadesDestinatarias, $cursosActualizadosIds);
     //Obtenemos el último registro del log generado.
     if (count($logSolicitudesEnviadas) > 0) {
         $logEnvios[] = $logSolicitudesEnviadas[count($logSolicitudesEnviadas) - 1];
     }
     //Creamos la cabecera del Log de archivo
     $logArchivo = array();
     $logArchivo[] = 'Fecha->' . date('d/m/Y H:i:s') . "\n";
     $logArchivo[] = 'Usuario->' . $request->user()->name . "\n";
     $logArchivo[] = 'Email->' . $request->user()->email . "\n";
     $logArchivo[] = 'Ip->' . $request->server('REMOTE_ADDR') . "\n";
     $logArchivo[] = '******************************************' . "\n";
     foreach ($logEnvios as $log) {
         $logArchivo[] = $log[0] . "\n";
     }
     if ($contadorCursosActualizados > 0) {
         foreach ($cursosActualizados as $log) {
             $logArchivo[] = $log . "\n";
         }
         foreach ($logSolicitudesEnviadas as $log) {
             $logArchivo[] = $log[0] . "\n";
         }
     }
     //Guardamos a archivo
     file_put_contents('logs/NS/NS_log_' . date('d_m_Y_H_i_s'), $logArchivo, true);
     $titulo = "Operaciones Realizadas";
     return view('nuestrasSolicitudes.listadoLog', compact('titulo', 'logEnvios'));
 }