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; if (count($cursillosIds) > 0 && count($comunidades) > 0) { $cursillos = Cursillos::getAlgunosCursillos($cursillosIds); if (count($cursillos) == 0) { return null; } foreach ($comunidades as $comunidad) { $solicitudEnviada = new SolicitudesEnviadas(); $solicitudEnviada->comunidad_id = $comunidad[0]; try { DB::transaction(function () use($solicitudEnviada, $comunidad, $cursillos, &$contadorTotalCursillos, &$contadorTotalComunidades, &$logs) { $solicitudEnviada->save(); $solicitudesEnviadasCursillos = []; $cursos = []; foreach ($cursillos as $curso) { $solicitudesEnviadasCursillos[] = new SolicitudesEnviadasCursillos(['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"]; } $solicitudEnviada->solicitudes_enviadas_cursillos()->saveMany($solicitudesEnviadasCursillos); $contadorTotalComunidades += 1; $contadorTotalCursillos += count($cursillos); $logs[] = ["Incluida la comunidad " . $comunidad[1] . " en concepto de pendiente de respuesta a la solicitud.", "", "ok-sign green icon-size-large"]; foreach ($cursos as $curso) { $logs[] = $curso; } }); } catch (QueryException $ex) { $logs[] = ["No se han incluido la comunidad " . $comunidad[1] . " a pendiente de respuesta de la solicitud.", "", "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" : "") . " solicitud" . ($pluralCursillo ? "es" : "") . " pendiente" . ($pluralCursillo ? "s" : "") . " de respuesta" . ($pluralCursillo ? "s" : ""), "", "plus-sign green icon-size-large"]; } else { $logs[] = ["No se han incluido nuevas solicitudes pendientes de respuestas.", "", "info-sign info icon-size-large"]; } return $logs; }
/** * Store a newly created resource in storage. * * @return Response */ public function store(ValidateRulesSolicitudesEnviadas $request) { //Creamos una nueva instancia al modelo. $solicitudEnviada = new SolicitudesEnviadas(); //Asignamos valores traidos del formulario. $solicitudEnviada->comunidad_id = $request->get('comunidad_id'); $solicitudEnviada->aceptada = $request->get('aceptada'); $solicitudEnviada->activo = $request->get('activo'); //Intercepción de errores try { //Guardamos Los valores $solicitudEnviada->save(); } catch (\Exception $e) { switch ($e->getCode()) { case 23000: return redirect()->route('solicitudesEnviadas.create')->with('mensaje', 'La solicitud está ya dada de alta.'); break; default: return redirect()->route('solicitudesEnviadas.index')->with('mensaje', 'Nueva Solicitud error ' . $e->getCode()); } } //Redireccionamos a Solicitudes Enviadas (index) return redirect('solicitudesEnviadas')->with('mensaje', 'La solicitud se ha creado satisfactoriamente.'); }