NIT-dgp/cat-forum

View on GitHub
app/controllers/dislike_count_replies_controller.rb

Summary

Maintainability
A
3 hrs
Test Coverage
class DislikeCountRepliesController < ApplicationController
  before_action :set_dislike_count_reply,
                only: [:show, :edit, :update, :destroy]
  before_action :authenticate_user!
  # GET /dislike_count_replies
  # GET /dislike_count_replies.json
  def index
    @dislike_count_replies = DislikeCountReply.all
  end

  # GET /dislike_count_replies/1
  # GET /dislike_count_replies/1.json
  def show
  end

  # GET /dislike_count_replies/new
  def new
    @dislike_count_reply = DislikeCountReply.new
  end

  # GET /dislike_count_replies/1/edit
  def edit
  end

  # POST /dislike_count_replies
  # POST /dislike_count_replies.json
  def create
    @user = User.find(current_user.id)
    @reply = Reply.find(params[:reply_id])
    @dislike_count_reply = @user.add_reply_dislike(@reply.id)
    @reply_user = @reply.user
    respond_to do |format|
      if @dislike_count_reply.save
        if current_user != @reply_user
          @reply_user.update_attributes(points: @reply_user.points -= 15)
          @badge = @reply_user.update_badge(@reply_user.id)
          @reply_user.update_attributes(badge: @badge)
        end
        format.html { redirect_to(action: 'index', controller: 'reply') }
        format.js
        format.json do
          render :show,
                 status: :created,
                 location: @dislike_count_reply
        end
      else
        format.html { render :new }
        format.json do
          render json: @dislike_count_reply.errors,
                 status: :unprocessable_entity
        end
      end
    end
  end

  # PATCH/PUT /dislike_count_replies/1
  # PATCH/PUT /dislike_count_replies/1.json
  def update
    respond_to do |format|
      if @dislike_count_reply.update(dislike_count_reply_params)
        format.html do
          redirect_to @dislike_count_reply,
                      notice: 'Dislike count reply was successfully updated.'
        end
        format.json do
          render :show,
                 status: :ok,
                 location: @dislike_count_reply
        end
      else
        format.html { render :edit }
        format.json do
          render json: @dislike_count_reply.errors,
                 status: :unprocessable_entity
        end
      end
    end
  end

  # DELETE /dislike_count_replies/1
  # DELETE /dislike_count_replies/1.json
  def destroy
    @dislike_count_reply.destroy
    respond_to do |format|
      format.html do
        redirect_to dislike_count_replies_url,
                    notice: 'Dislike count reply was successfully destroyed.'
      end
      format.json { head :no_content }
    end
  end

  private

  # Use callbacks to share common setup or constraints between actions.
  def set_dislike_count_reply
    @dislike_count_reply = DislikeCountReply.find(params[:id])
  end

  # Never trust parameters from the scary internet,
  # only allow the white list through.
  def dislike_count_reply_params
    params.require(:dislike_count_reply).permit(:reply_id, :user_id)
  end
end