generated from mailsg/readme-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
164 additions
and
164 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,74 +1,74 @@ | ||
class CategoriesController < ApplicationController | ||
before_action :set_category, only: [:show, :edit, :update, :destroy] | ||
|
||
# GET /categories or /categories.json | ||
def index | ||
@user = current_user | ||
@categories = @user.category | ||
end | ||
|
||
# GET /categories/1 or /categories/1.json | ||
def show | ||
@category = Category.find(params[:id]) | ||
@expenses = @category.expense.order(created_at: :desc) | ||
@categories = current_user.category | ||
end | ||
|
||
# GET /categories/new | ||
def new | ||
@user = current_user | ||
@category = Category.new | ||
end | ||
|
||
# POST /categories or /categories.json | ||
def create | ||
@user = current_user | ||
@category = @user.category.new(category_params) | ||
|
||
respond_to do |format| | ||
if @category.save | ||
format.html { redirect_to categories_url, notice: 'Category created successfully.' } | ||
format.json { render :show, status: :created, location: @category } | ||
else | ||
format.html { render :new, status: :unprocessable_entity } | ||
format.json { render json: @category.errors, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
|
||
# PATCH/PUT /categories/1 or /categories/1.json | ||
def update | ||
respond_to do |format| | ||
if @category.update(category_params) | ||
format.html { redirect_to category_url(@category), notice: 'Category updated successfully .' } | ||
format.json { render :show, status: :ok, location: @category } | ||
else | ||
format.html { render :edit, status: :unprocessable_entity } | ||
format.json { render json: @category.errors, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
|
||
# DELETE /categories/1 or /categories/1.json | ||
def destroy | ||
@category = Category.find(params[:id]) | ||
@category.destroy | ||
|
||
respond_to do |format| | ||
format.html { redirect_to categories_url, notice: 'Category deleted successfully.' } | ||
format.json { head :no_content } | ||
end | ||
end | ||
|
||
private | ||
|
||
# Callbacks to share common setup between actions. | ||
def set_category | ||
@category = Category.find(params[:id]) | ||
end | ||
|
||
# Allow a list of trusted parameters. | ||
def category_params | ||
params.require(:category).permit(:name, :icon) | ||
end | ||
end | ||
class CategoriesController < ApplicationController | ||
before_action :set_category, only: %i[show edit update destroy] | ||
|
||
# GET /categories or /categories.json | ||
def index | ||
@user = current_user | ||
@categories = @user.category | ||
end | ||
|
||
# GET /categories/1 or /categories/1.json | ||
def show | ||
@category = Category.find(params[:id]) | ||
@expenses = @category.expense.order(created_at: :desc) | ||
@categories = current_user.category | ||
end | ||
|
||
# GET /categories/new | ||
def new | ||
@user = current_user | ||
@category = Category.new | ||
end | ||
|
||
# POST /categories or /categories.json | ||
def create | ||
@user = current_user | ||
@category = @user.category.new(category_params) | ||
|
||
respond_to do |format| | ||
if @category.save | ||
format.html { redirect_to categories_url, notice: 'Category created successfully.' } | ||
format.json { render :show, status: :created, location: @category } | ||
else | ||
format.html { render :new, status: :unprocessable_entity } | ||
format.json { render json: @category.errors, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
|
||
# PATCH/PUT /categories/1 or /categories/1.json | ||
def update | ||
respond_to do |format| | ||
if @category.update(category_params) | ||
format.html { redirect_to category_url(@category), notice: 'Category updated successfully .' } | ||
format.json { render :show, status: :ok, location: @category } | ||
else | ||
format.html { render :edit, status: :unprocessable_entity } | ||
format.json { render json: @category.errors, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
|
||
# DELETE /categories/1 or /categories/1.json | ||
def destroy | ||
@category = Category.find(params[:id]) | ||
@category.destroy | ||
|
||
respond_to do |format| | ||
format.html { redirect_to categories_url, notice: 'Category deleted successfully.' } | ||
format.json { head :no_content } | ||
end | ||
end | ||
|
||
private | ||
|
||
# Callbacks to share common setup between actions. | ||
def set_category | ||
@category = Category.find(params[:id]) | ||
end | ||
|
||
# Allow a list of trusted parameters. | ||
def category_params | ||
params.require(:category).permit(:name, :icon) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,90 +1,90 @@ | ||
class ExpensesController < ApplicationController | ||
before_action :set_expense, only: [:show, :edit, :update, :destroy] | ||
|
||
# GET /expenses or /expenses.json | ||
def index | ||
@category = Category.find(params[:category_id]) | ||
@expenses = @category.expense.all | ||
end | ||
|
||
# GET /expenses/new | ||
def new | ||
@author = current_user | ||
@category = Category.find(params[:category_id]) | ||
@expense = Expense.new | ||
end | ||
|
||
# POST /expenses or /expenses.json | ||
def create | ||
@author = current_user | ||
saved_expenses = [] | ||
category_ids = params[:expense][:category_ids].reject(&:empty?).map(&:to_i).uniq | ||
|
||
category_ids.each do |c_id| | ||
@category = Category.find(c_id) | ||
@expense = Expense.new(expense_params) | ||
@expense.author_id = current_user.id | ||
@category.expense << @expense | ||
|
||
if @expense.save | ||
saved_expenses << @expense | ||
else | ||
# Handle the case where an expense can't be saved | ||
respond_to do |format| | ||
format.html { render :new, status: :unprocessable_entity } | ||
format.json { render json: @expense.errors, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
|
||
save?(saved_expenses, category_ids) | ||
# Redirect to the first category's show page after all expenses have been processed | ||
end | ||
|
||
# PATCH/PUT /expenses/1 or /expenses/1.json | ||
def update | ||
respond_to do |format| | ||
if @expense.update(expense_params) | ||
format.html { redirect_to expense_url(@expense), notice: 'Expense updated successfully.' } | ||
format.json { render :show, status: :ok, location: @expense } | ||
else | ||
format.html { render :edit, status: :unprocessable_entity } | ||
format.json { render json: @expense.errors, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
|
||
# DELETE /expenses/1 or /expenses/1.json | ||
def destroy | ||
@expense.destroy | ||
|
||
respond_to do |format| | ||
format.html { redirect_to expenses_url, notice: 'Expense successfully deleted.' } | ||
format.json { head :no_content } | ||
end | ||
end | ||
|
||
private | ||
|
||
# Use callbacks to share common setup between actions. | ||
def set_expense | ||
@expense = Expense.find(params[:id]) | ||
end | ||
|
||
# Allow a list of trusted parameters. | ||
def expense_params | ||
params.require(:expense).permit(:name, :amount, :author_id) | ||
end | ||
|
||
def save?(saved_expenses, category_ids) | ||
if saved_expenses.present? | ||
redirect_to category_path(category_ids.first), notice: 'Expenses created successfully.' | ||
else | ||
# The case where no expenses were successfully saved | ||
respond_to do |format| | ||
format.html { render :new, status: :unprocessable_entity } | ||
format.json { render json: { error: 'No expenses saved.' }, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
end | ||
class ExpensesController < ApplicationController | ||
before_action :set_expense, only: %i[show edit update destroy] | ||
|
||
# GET /expenses or /expenses.json | ||
def index | ||
@category = Category.find(params[:category_id]) | ||
@expenses = @category.expense.all | ||
end | ||
|
||
# GET /expenses/new | ||
def new | ||
@author = current_user | ||
@category = Category.find(params[:category_id]) | ||
@expense = Expense.new | ||
end | ||
|
||
# POST /expenses or /expenses.json | ||
def create | ||
@author = current_user | ||
saved_expenses = [] | ||
category_ids = params[:expense][:category_ids].reject(&:empty?).map(&:to_i).uniq | ||
|
||
category_ids.each do |c_id| | ||
@category = Category.find(c_id) | ||
@expense = Expense.new(expense_params) | ||
@expense.author_id = current_user.id | ||
@category.expense << @expense | ||
|
||
if @expense.save | ||
saved_expenses << @expense | ||
else | ||
# Handle the case where an expense can't be saved | ||
respond_to do |format| | ||
format.html { render :new, status: :unprocessable_entity } | ||
format.json { render json: @expense.errors, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
|
||
save?(saved_expenses, category_ids) | ||
# Redirect to the first category's show page after all expenses have been processed | ||
end | ||
|
||
# PATCH/PUT /expenses/1 or /expenses/1.json | ||
def update | ||
respond_to do |format| | ||
if @expense.update(expense_params) | ||
format.html { redirect_to expense_url(@expense), notice: 'Expense updated successfully.' } | ||
format.json { render :show, status: :ok, location: @expense } | ||
else | ||
format.html { render :edit, status: :unprocessable_entity } | ||
format.json { render json: @expense.errors, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
|
||
# DELETE /expenses/1 or /expenses/1.json | ||
def destroy | ||
@expense.destroy | ||
|
||
respond_to do |format| | ||
format.html { redirect_to expenses_url, notice: 'Expense successfully deleted.' } | ||
format.json { head :no_content } | ||
end | ||
end | ||
|
||
private | ||
|
||
# Use callbacks to share common setup between actions. | ||
def set_expense | ||
@expense = Expense.find(params[:id]) | ||
end | ||
|
||
# Allow a list of trusted parameters. | ||
def expense_params | ||
params.require(:expense).permit(:name, :amount, :author_id) | ||
end | ||
|
||
def save?(saved_expenses, category_ids) | ||
if saved_expenses.present? | ||
redirect_to category_path(category_ids.first), notice: 'Expenses created successfully.' | ||
else | ||
# The case where no expenses were successfully saved | ||
respond_to do |format| | ||
format.html { render :new, status: :unprocessable_entity } | ||
format.json { render json: { error: 'No expenses saved.' }, status: :unprocessable_entity } | ||
end | ||
end | ||
end | ||
end |