diff --git a/app/controllers/homies_controller.rb b/app/controllers/homies_controller.rb index 38fc39e..8415da4 100644 --- a/app/controllers/homies_controller.rb +++ b/app/controllers/homies_controller.rb @@ -26,6 +26,19 @@ class HomiesController < ApplicationController json_response(Homie.cash(importance)) end + def settle + homie_id = params[:homy_id].to_i + homie = Homie.find(homie_id) + + if homie.settle + json_response [] + else + error_response :bad_request + end + rescue StandardError + error_response :bad_request + end + private def homie_params diff --git a/app/models/homie.rb b/app/models/homie.rb index f09ff31..16aab9c 100644 --- a/app/models/homie.rb +++ b/app/models/homie.rb @@ -10,4 +10,18 @@ class Homie < ApplicationRecord { homie: homie, amount: total } end end + + def settle + total = MoneyMove.where(homie_id: id).all.sum(:amount) + all_money_moves = MoneyMove.where(homie_id: id).all + + transaction do + all_money_moves.destroy_all + + MoneyMove.create_settle_record(id, total) + end + true + rescue StandardError => e + false + end end diff --git a/app/models/money_move.rb b/app/models/money_move.rb index 41a16e1..50b7e7b 100644 --- a/app/models/money_move.rb +++ b/app/models/money_move.rb @@ -13,6 +13,16 @@ class MoneyMove < ApplicationRecord end end + def self.create_settle_record(homie_id, amount) + new_desc = "Settled on #{DateTime.now.utc}" + settle_record = MoneyMove.new( + homie_id: homie_id, + amount: amount, + description: new_desc + ) + settle_record.save + end + class << self private diff --git a/config/routes.rb b/config/routes.rb index 19d93cc..73f5e0e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,6 +8,7 @@ Rails.application.routes.draw do collection do get 'cash' end + delete 'settle' end end end