/** * Determina si una encuesta no expiro en su fecha de validez, luego determina si ya tiene una resolucion (en caso que no la crea) * ademas verifica que la resolcion no se le haya paso el tiempo de llenado * * @param Request $request * @param Encuesta $encuesta * * @return Resolucion */ private function getResolucion(Request $request, Encuesta $encuesta) { if ($encuesta->getFechaValidoHasta()->getTimestamp() < (new \DateTime(date('Y-m-d')))->getTimestamp()) { redirect()->to('resoluciones/error')->withInput(['message' => 'La encuesta que intentas llenar ya no esta disponible']); } $resolucion = Resolucion::findOrCreateForUser($encuesta, $request->user()); if ($resolucion->getFechaFin()->getTimestamp() < (new \DateTime())->getTimestamp()) { redirect()->to('resoluciones/error')->withInput(['message' => 'Ya expiro el tiempo de llenado para la encuesta solicitada']); } return $resolucion; }
/** * * @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; }); }
public static function delete(Encuesta $encuesta) { if ($encuesta->resoluciones()->count() > 0) { throw new \Exception("No se puede eliminar una encuesta con resoluciones"); } return DB::transaction(function () use($encuesta) { $encuesta->preguntas->each(function (Pregunta $pregunta) { $pregunta->solucionesPosibles->each(function (SolucionPosible $solucionPosible) { $solucionPosible->delete(); }); $pregunta->delete(); }); $encuesta->delete(); return true; }); }
public function anyAll() { $results = Encuesta::all(['id', 'titulo', 'tiempo_resolucion', 'termino', 'curso', 'user_id', 'cantidad_preguntas'])->each(function (Encuesta $encuesta) { $encuesta->creador_por = $encuesta->user->fullname; $encuesta->preguntas = $encuesta->preguntas()->count() . '/' . $encuesta->cantidad_preguntas; }); return ['data' => $results]; }
public function postResponder(Request $request, $id) { $resolucion = $this->getResolucion($request, Encuesta::findOrFail($id)); if (!is_object($resolucion)) { return redirect()->to('dashboard/error')->with(['message' => $resolucion]); } $resolucion->guardarRespuestas($request->all()); return view('dashboard.agradecer_respuesta'); }
/** * @param array $input * @return Encuesta */ private static function crearEncuestaDesdeInput(array $input) { $data = json_decode($input['data']); return Encuesta::forceCreate(['user_id' => Auth::user()->id, 'titulo' => $input['encuesta']['titulo'], 'curso' => $input['encuesta']['curso'], 'termino' => $input['encuesta']['termino'], 'descripcion' => $input['encuesta']['descripcion'] ?: null, 'html' => $data->survey->html, 'tiempo_resolucion' => $input['encuesta']['duracion'], 'tipo' => 'calificada', 'valido_hasta' => $input['encuesta']['valido_hasta'], 'cantidad_preguntas' => $input['encuesta']['cantidad_preguntas']]); }
public function getEliminar($encuesta) { $encuesta = Encuesta::findOrFail($encuesta); \App\Componentes\Encuestas\Editor::delete($encuesta); return redirect('consultas-encuestas'); }
public function search(Request $request) { $encuestas = Encuesta::where('Fecha_Encuesta', 'like', '%' . $request->Fecha . '%')->get(); return \View::make('encuesta/list', compact('encuestas')); }