diff --git a/app/controllers/homies_controller.rb b/app/controllers/homies_controller.rb index 86ecc92..f93d5e9 100644 --- a/app/controllers/homies_controller.rb +++ b/app/controllers/homies_controller.rb @@ -21,9 +21,9 @@ class HomiesController < ApplicationController end end - def cash + def info importance = params[:importance].present? ? params[:importance].to_i : -1 - json_response(Homie.cash(importance)) + json_response(Homie.info(importance)) end def settle @@ -32,7 +32,7 @@ class HomiesController < ApplicationController homie = Homie.find(homie_id) if homie.settle(amount) - cash + info else error_response :bad_request end diff --git a/app/models/homie.rb b/app/models/homie.rb index 1c1efa4..be5ef9d 100644 --- a/app/models/homie.rb +++ b/app/models/homie.rb @@ -3,12 +3,14 @@ class Homie < ApplicationRecord has_many :work belongs_to :chip - def self.cash(importance) - totals = Homie.all.joins(:money_moves).group(:id).order(:id).sum(:amount) + def self.info(importance) + cash_totals = Homie.all.joins(:money_moves).group(:id).order(:id).sum(:amount) + work_totals = Homie.all.joins(:work).group(:id).order(:id).sum(:amount) Homie.where(["importance > ?", importance]).map do |homie| - total = totals.fetch(homie.id, 0) - { homie: homie, amount: total } + cash_total = cash_totals.fetch(homie.id, 0) + work_total = work_totals.fetch(homie.id, 0) + { homie: homie, amount: cash_total, work: work_total } end end diff --git a/client/src/cash/Cash.js b/client/src/cash/Cash.js index c3e2aac..a59ccd3 100644 --- a/client/src/cash/Cash.js +++ b/client/src/cash/Cash.js @@ -4,7 +4,7 @@ import './Cash.css'; import axios from 'axios'; import { MAKE_MONEY_MOVE } from '../RouteNames'; import { withRouter } from 'react-router-dom'; -import { formatMoney } from '../common/formatting'; +import { formatMoney, formatTime } from '../common/formatting'; import InputModal from "../common/InputModal"; import { errorToast } from "../common/errorHelpers"; import M from 'materialize-css'; @@ -16,7 +16,7 @@ const Cash = (props) => { useEffect( () => { const getCashForHomies = async () => { try { - const cash = await axios.get(`/api/homies/cash`); + const cash = await axios.get(`/api/homies/info`); setHomiesCash(cash.data); } catch (e) { console.log("Error fetching", e); @@ -45,6 +45,9 @@ const Cash = (props) => { { homieLine.homie.name } + + { formatTime(homieLine.work) } + { formatMoney(homieLine.amount) } @@ -71,6 +74,9 @@ const Cash = (props) => { Homie + + Work + Cash diff --git a/client/src/cash/MakeMoneyMove.js b/client/src/cash/MakeMoneyMove.js index b1b5ca0..8b8ccd5 100644 --- a/client/src/cash/MakeMoneyMove.js +++ b/client/src/cash/MakeMoneyMove.js @@ -16,7 +16,7 @@ const MakeMoneyMove = (props) => { useEffect(() => { const getCashForHomies = async () => { try { - const cash = await axios.get(`/api/homies/cash`); + const cash = await axios.get(`/api/homies/info`); setHomiesCash(cash.data); } catch (e) { console.log("Error fetching", e); diff --git a/config/routes.rb b/config/routes.rb index 7094a56..dbd5365 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,7 +7,7 @@ Rails.application.routes.draw do resources :chip_values, only: %i[create update destroy] resources :homies, param: :homie_id do collection do - get 'cash' + get 'info' end member do post 'settle'