public static function asignar(array $values) { //se usa para los message bags $mensajes = new Solicitud(); if (!isset($values['solicitudes'])) { $mensajes->addError('solicitudes', 'Debes seleccionar al menos una solicitud'); return $mensajes; } $rules = ['departamento_id' => 'required_if:campo,departamento', 'usuario_asignacion_id' => 'required_if:campo,usuario', 'campo' => 'required']; $validator = Validator::make(Input::all(), $rules); $validator->setAttributeNames($mensajes->getPrettyFields()); if ($validator->passes()) { $solicitudes = Solicitud::findMany($values['solicitudes']); if ($values['campo'] == "departamento") { $memo = \Memo::crear($values); $solicitudes->each(function ($solicitud) use($values, $mensajes, $memo) { $solicitud->asignarDepartamento($values['departamento_id'], $memo); //si salieron errores hacemos un merge $mensajes->errors->merge($solicitud->errors); }); } else { if ($values['campo'] == "usuario") { $solicitudes->each(function ($solicitud) use($values, $mensajes) { $solicitud->asignarAnalista($values['usuario_asignacion_id']); //si salieron errores hacemos un merge $mensajes->errors->merge($solicitud->errors); }); } } } else { foreach ($validator->getMessageBag()->getMessages() as $campo => $mensaje) { $mensajes->addError($campo, $mensaje); } } return $mensajes; }