/** * * @param Encuesta $encuesta * @param User $user * * @return Resolucion */ public static function makeForUser(Encuesta $encuesta, User $user) { return DB::transaction(function () use($encuesta, $user) { $fecha = new \DateTime(); /** @var Resolucion $resolucion */ $resolucion = self::forceCreate(['user_id' => $user->id, 'encuesta_id' => $encuesta->id, 'fecha_inicio' => $fecha->format('Y-m-d H:i:s'), 'fecha_fin' => $fecha->modify("+{$encuesta->tiempo_resolucion} hours")->format('Y-m-d H:i:s'), 'tiempo' => $encuesta->tiempo_resolucion * 60 * 60, 'estado' => 'pendiente']); $rango = range(0, $encuesta->preguntas()->count() - 1); shuffle($rango); $indexs = array_slice($rango, 0, $encuesta->cantidad_preguntas); $preguntas = $encuesta->preguntas()->get(); foreach ($indexs as $index) { Respuesta::forceCreate(['resolucion_id' => $resolucion->id, 'pregunta_id' => $preguntas->get($index)->id, 'texto' => '']); } return $resolucion; }); }