Exemplo n.º 1
0
 /**
  * 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();
 }