BathHacked/energy-sparks

View on GitHub
app/controllers/admin/meter_statuses_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Admin
  class MeterStatusesController < AdminController
    before_action :set_admin_meter_status, only: %i[edit update destroy]

    def index
      @admin_meter_statuses = AdminMeterStatus.all.order('LOWER(label)')
    end

    def new
      @admin_meter_status = AdminMeterStatus.new
    end

    def edit
    end

    def create
      @admin_meter_status = AdminMeterStatus.new(admin_meter_status_params)
      respond_to do |format|
        if @admin_meter_status.save
          format.html { redirect_to admin_meter_statuses_path, notice: 'Meter status was successfully created.' }
        else
          format.html { render :new, status: :unprocessable_entity }
        end
      end
    end

    def update
      respond_to do |format|
        if @admin_meter_status.update(admin_meter_status_params)
          format.html { redirect_to admin_meter_statuses_path, notice: 'Meter status was successfully updated.' }
        else
          format.html { render :edit, status: :unprocessable_entity }
        end
      end
    end

    def destroy
      respond_to do |format|
        # Delete button is hidden in the ui when there are associated meters and school groups but
        # this is left here as a fallback
        if @admin_meter_status.school_groups.count.zero? && @admin_meter_status.meters.count.zero?
          @admin_meter_status.destroy
          notice = 'Meter status was successfully deleted.'
        else
          notice = 'Meter status cannot be deleted while it has associated school groups or meters.'
        end
        format.html { redirect_to admin_meter_statuses_path, notice: notice }
      end
    end

    private

    def set_admin_meter_status
      @admin_meter_status = AdminMeterStatus.find(params[:id])
    end

    def admin_meter_status_params
      params.require(:admin_meter_status).permit(:label)
    end
  end
end