Show work hours on dashboard #20

Merged
bilal.catic merged 4 commits from show-work-hours-on-dashboard into master 2020-10-06 08:59:34 +02:00
5 changed files with 19 additions and 11 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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) => {
<td className="cash-cell-left">
<a href={`/homie/${homieLine.homie.id}/flow`}>{ homieLine.homie.name }</a>
</td>
<td className="cash-cell-left">
{ formatTime(homieLine.work) }
</td>
<td className="cash-cell-right">
{ formatMoney(homieLine.amount) }
</td>
@@ -71,6 +74,9 @@ const Cash = (props) => {
<th>
Homie
</th>
<th>
Work
</th>
<th>
Cash
</th>

View File

@@ -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);

View File

@@ -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'