/**
  * Remove the specified article from storage.
  *
  * @param  int $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     /*
      * --------------------------------------------------------------------------
      * Delete article activity
      * --------------------------------------------------------------------------
      * Find and destroy then create new instance of Activity and insert delete
      * article activity, finally redirect to list of articles.
      */
     $article = Article::findOrFail($id);
     if ($article->delete()) {
         Activity::create(['contributor_id' => Auth::user()->id, 'activity' => Activity::deleteArticleActivity(Auth::user()->username, $article->title, $article->slug)]);
         return redirect(route('account.article.index'))->with(['status' => 'warning', 'message' => Lang::get('alert.article.delete', ['title' => $article->title])]);
     }
     return redirect()->back()->withErrors(['error' => Lang::get('alert.error.database')]);
 }
 /**
  * Rate a article between 1 to 5.
  *
  * @param  \Illuminate\Http\Request $request
  * @return \Illuminate\Http\Response
  */
 public function rate(Request $request)
 {
     $article_id = $request->input('article_id');
     $rate = $request->input('rate');
     $ipAddress = $request->ip();
     $article = Article::findOrFail($article_id);
     $isRated = $article->ratings()->whereIp($ipAddress)->count();
     if ($isRated) {
         $rating = Rating::whereArticleId($article_id)->whereIp($ipAddress)->firstOrFail();
         $rating->rate = $rate;
     } else {
         $rating = new Rating();
         $rating->article_id = $request->input('article_id');
         $rating->ip = $ipAddress;
         $rating->rate = $request->input('rate');
     }
     $result = $rating->save();
     return response()->json(['request_id' => uniqid(), 'status' => $result ? 'success' : 'failure', 'message' => $result ? round($article->ratings()->avg('rate')) : Lang::get('database.generic'), 'timestamp' => Carbon::now()], $result ? 200 : 500);
 }
 /**
  * Remove the specified article from storage.
  *
  * @param Request $request
  * @param  int $id
  * @return \Illuminate\Http\Response
  */
 public function destroy(Request $request, $id)
 {
     /*
      * --------------------------------------------------------------------------
      * Delete article
      * --------------------------------------------------------------------------
      * Check if selected variable is not empty so user intends to select multiple
      * rows at once, and prepare the feedback message according the type of
      * deletion action.
      */
     if (!empty(trim($request->input('selected')))) {
         $article_ids = explode(',', $request->input('selected'));
         $delete = Article::whereIn('id', $article_ids)->delete();
         $message = Lang::get('alert.article.delete_all', ['count' => $delete]);
     } else {
         $article = Article::findOrFail($id);
         $message = Lang::get('alert.article.delete', ['title' => $article->title]);
         $delete = $article->delete();
     }
     if ($delete) {
         return redirect(route('admin.article.index'))->with(['status' => 'warning', 'message' => $message]);
     } else {
         return redirect()->back()->withErrors(['error' => Lang::get('alert.error.database')]);
     }
 }