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; }
/** * Store a newly created resource in storage. * * @return Response */ public function store(ValidateRulesSolicitudesRecibidas $request) { //Creamos una nueva instancia al modelo. $solicitudRecibida = new SolicitudesRecibidas(); //Asignamos valores traidos del formulario. $solicitudRecibida->comunidad_id = $request->get('comunidad_id'); $solicitudRecibida->aceptada = $request->get('aceptada'); $solicitudRecibida->activo = $request->get('activo'); //Intercepción de errores try { //Guardamos Los valores $solicitudRecibida->save(); } catch (\Exception $e) { switch ($e->getCode()) { case 23000: return redirect()->route('solicitudesRecibidas.create')->with('mensaje', 'La solicitud está ya dada de alta.'); break; default: return redirect()->route('solicitudesRecibidas.index')->with('mensaje', 'Nueva Solicitud error ' . $e->getCode()); } } //Redireccionamos a Solicitudes Recibidas (index) return redirect('solicitudesRecibidas')->with('mensaje', 'La solicitud se ha creado satisfactoriamente.'); }