Files
sure/app/controllers/recurring_transactions_controller.rb
soky srm f1991eaefe Recurring scoping implementation (#1300)
* Recurring scoping implementation

* FIX tests and reviews
2026-03-26 19:01:35 +01:00

78 lines
2.2 KiB
Ruby

class RecurringTransactionsController < ApplicationController
layout "settings"
def index
@recurring_transactions = Current.family.recurring_transactions
.accessible_by(Current.user)
.includes(:merchant)
.order(status: :asc, next_expected_date: :asc)
@family = Current.family
end
def update_settings
Current.family.update!(recurring_settings_params)
respond_to do |format|
format.html do
flash[:notice] = t("recurring_transactions.settings_updated")
redirect_to recurring_transactions_path
end
end
end
def identify
count = RecurringTransaction.identify_patterns_for!(Current.family)
respond_to do |format|
format.html do
flash[:notice] = t("recurring_transactions.identified", count: count)
redirect_to recurring_transactions_path
end
end
end
def cleanup
count = RecurringTransaction.cleanup_stale_for(Current.family)
respond_to do |format|
format.html do
flash[:notice] = t("recurring_transactions.cleaned_up", count: count)
redirect_to recurring_transactions_path
end
end
end
def toggle_status
@recurring_transaction = Current.family.recurring_transactions.accessible_by(Current.user).find(params[:id])
if @recurring_transaction.active?
@recurring_transaction.mark_inactive!
message = t("recurring_transactions.marked_inactive")
else
@recurring_transaction.mark_active!
message = t("recurring_transactions.marked_active")
end
respond_to do |format|
format.html do
flash[:notice] = message
redirect_to recurring_transactions_path
end
end
end
def destroy
@recurring_transaction = Current.family.recurring_transactions.accessible_by(Current.user).find(params[:id])
@recurring_transaction.destroy!
flash[:notice] = t("recurring_transactions.deleted")
redirect_to recurring_transactions_path
end
private
def recurring_settings_params
{ recurring_transactions_disabled: params[:recurring_transactions_disabled] == "true" }
end
end