/** * Muestra la pagina principal o home del sitio. * * @return view */ public function index() { // Si estoy logeado, muestro el timeline o muro if (Auth::check()) { // Recojo mis estados y los de mis amigos, ordeno y pagino $estados = Status::noRespuesta()->where(function ($query) { return $query->where('usuario_id', Auth::user()->id)->orWhereIn('usuario_id', Auth::user()->amigos()->lists('id')); })->orderBy('created_at', 'desc')->paginate(7); return view('timeline.index')->with('estados', $estados); } return view('home'); }
/** * Responder a un estado. * * @param Request $request * @param int $estadoId Id del estado al que estamos respondiendo * @return redirect */ public function postRespuesta(Request $request, $estadoId) { $this->validate($request, ["respuesta-{$estadoId}" => 'required|max:1000'], ['required' => 'No has introducido la respuesta...']); $estado = Status::noRespuesta()->find($estadoId); // Si no existe ese estado if (!$estado) { return redirect()->route('home'); } // Si no son amigos y no me estoy respondiendo a mi mismo if (!Auth::user()->esAmigoDe($estado->usuario) && Auth::user()->id !== $estado->usuario->id) { return redirect()->route('home'); } // Crear el nuevo estado y asociarle una clave ajena correspondiente (id del estado padre en este caso) $respuesta = Status::create(['body' => $request->input("respuesta-{$estadoId}")])->usuario()->associate(Auth::user()); // Guardar la respuesta $estado->respuestas()->save($respuesta); return redirect()->back(); }