# frozen_string_literal: true class RulesController < ApplicationController before_action :set_rule, only: [:show, :edit, :update, :disable, :enable] before_action :authorize_rule # GET /rules def index @rules = Rule.includes(:project).order(created_at: :desc) @rule_types = Rule::RULE_TYPES @actions = Rule::ACTIONS end # GET /rules/new def new @rule = Rule.new @rule_types = Rule::RULE_TYPES @actions = Rule::ACTIONS end # POST /rules def create @rule = Rule.new(rule_params) @rule_types = Rule::RULE_TYPES @actions = Rule::ACTIONS if @rule.save redirect_to @rule, notice: 'Rule was successfully created.' else render :new, status: :unprocessable_entity end end # GET /rules/:id def show end # GET /rules/:id/edit def edit @rule_types = Rule::RULE_TYPES @actions = Rule::ACTIONS end # PATCH/PUT /rules/:id def update if @rule.update(rule_params) redirect_to @rule, notice: 'Rule was successfully updated.' else render :edit, status: :unprocessable_entity end end # POST /rules/:id/disable def disable reason = params[:reason] || "Disabled manually" @rule.disable!(reason: reason) redirect_to @rule, notice: 'Rule was successfully disabled.' end # POST /rules/:id/enable def enable @rule.enable! redirect_to @rule, notice: 'Rule was successfully enabled.' end private def set_rule @rule = Rule.find(params[:id]) end def authorize_rule # Add authorization logic here if needed # For now, allow all authenticated users end def rule_params params.require(:rule).permit( :rule_type, :action, :conditions, :metadata, :expires_at, :enabled, :source ) end end