/**
  * Ajoute un nouveau commentaire pour une activité
  *
  * @param Requests\PostActivityRequest $request
  * @return JsonResponse
  */
 public function store(Requests\PostActivityRequest $request)
 {
     $activity = Activity::findOrFail($request->input('activity_id'));
     $this->authorize('comment', $activity);
     $comment = $activity->comments()->create(['user_id' => $request->user()->id, 'content' => $request->input('content')]);
     return view('activities.comment', compact('comment'));
 }
예제 #2
0
 /**
  * @param $id
  * @return JsonResponse|\Illuminate\Http\RedirectResponse
  */
 public function destroy($id)
 {
     $activity = Activity::find($id);
     $activityId = $activity->id;
     $this->authorize('delete', $activity);
     $activity->delete();
     return new JsonResponse(['id' => 'activity_' . $activityId, 'status' => 'success', 'message' => 'La publication a été supprimée !']);
 }
예제 #3
0
 /**
  * Profil public d'un utilisateur
  *
  * @param $username
  * @return $this|ModelNotFoundException
  */
 public function profile($username)
 {
     $user = User::where('username', $username)->first();
     if (!$user) {
         return new ModelNotFoundException('Cet utilisateur n\'exite pas');
     }
     $activities = Activity::with('user', 'comments', 'likes')->where('user_id', $user->id)->latest()->paginate(10);
     return view('users.user_view', compact('user', 'activities'));
 }
예제 #4
0
 /**
  * Retourne la liste des dernières activités ou la page d'accueil
  *
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function index()
 {
     if (Auth::check()) {
         $activities = Activity::with('user', 'comments', 'likes')->where(function ($query) {
             return $query->where('user_id', Auth::user()->id)->orWhereIn('user_id', Auth::user()->friends()->lists('id'));
         })->latest()->paginate(10);
         return view('timeline.index', compact('activities'));
     }
     return view('pages.front');
 }
예제 #5
0
 /**
  * Evènements
  */
 public static function boot()
 {
     parent::boot();
     // A la suppression d'une activité...
     Activity::deleting(function ($activity) {
         //  On supprime les likes
         $activity->likes()->delete();
         //  On supprime les likes des commentaires associés
         foreach ($activity->comments as $comment) {
             $comment->likes()->delete();
         }
     });
 }
예제 #6
0
 /**
  * Permet d'aimer une publication
  *
  * @param $id
  * @return JsonResponse
  */
 public function likeActivity($id)
 {
     $activity = Activity::findOrFail($id);
     if (Auth::user()->id != $activity->user->id && !Auth::user()->isFriendWith($activity->user)) {
         return new UnauthorizedException();
     }
     //  On check que l'utilisateur n'a pas liké la publication
     if (Auth::user()->hasLikedActivity($activity)) {
         $likeToRemove = $this->repository->getLikeByActivityId(Auth::user(), $activity);
         $removeLike = Like::findOrFail($likeToRemove->id);
         $removeLike->delete();
         $type = 'remove';
     } else {
         /*
         $like = $activity->likes()->create([]);
         Auth::user()->likes()->save($like);
         */
         $activity->likes()->create(['user_id' => Auth::user()->id]);
         $type = 'add';
     }
     return new JsonResponse(['status' => 'success', 'type' => $type]);
 }