/** * 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')); }
/** * @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 !']); }
/** * 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')); }
/** * 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'); }
/** * 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(); } }); }
/** * 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]); }