diff --git a/app/controllers/money_moves_controller.rb b/app/controllers/money_moves_controller.rb
index 9b892bb..2d7a83d 100644
--- a/app/controllers/money_moves_controller.rb
+++ b/app/controllers/money_moves_controller.rb
@@ -17,6 +17,9 @@ class MoneyMovesController < ApplicationController
else
error_response(:bad_request)
end
+
+ rescue StandardError
+ error_response(:bad_request)
end
def money_move_params
diff --git a/app/models/money_move.rb b/app/models/money_move.rb
index 50b7e7b..b542c50 100644
--- a/app/models/money_move.rb
+++ b/app/models/money_move.rb
@@ -4,13 +4,15 @@ class MoneyMove < ApplicationRecord
def self.create_move(params)
return false unless valid_money_move?(params)
- move_from = create_move_from(params) if double_money_move?(params)
- move_to = create_move_to(params)
+ move_from = create_move_from(params) if params[:from_homie_id].present?
+ move_to = create_move_to(params) if params[:to_homie_id].present?
MoneyMove.transaction do
move_from.save! if move_from.present?
- move_to.save!
+ move_to.save! if move_to.present?
end
+
+ true
end
def self.create_settle_record(homie_id, amount)
@@ -27,24 +29,27 @@ class MoneyMove < ApplicationRecord
private
def valid_money_move?(params)
- params[:amount].present? && params[:to_homie_id].present?
- end
-
- def double_money_move?(params)
- params[:from_homie_id].present? && params[:to_homie_id].present?
+ params[:amount].present? && (params[:to_homie_id].present? || params[:from_homie_id].present?)
end
def from_source_name(params)
- if double_money_move?(params)
+ if params[:from_homie_id].present?
Homie.find(params[:from_homie_id]).name
else
'External'
end
end
+ def to_source_name(params)
+ if params[:to_homie_id].present?
+ Homie.find(params[:to_homie_id]).name
+ else
+ 'External'
+ end
+ end
+
def create_move_from(params)
- to_homie_name = Homie.find(params[:to_homie_id]).name
- new_desc = "[#{to_homie_name}] #{params[:description]}".lstrip
+ new_desc = "[#{to_source_name(params)}] #{params[:description]}".lstrip
MoneyMove.new(
homie_id: params[:from_homie_id],
amount: -params[:amount].to_d,
diff --git a/client/src/cash/MakeMoneyMove.js b/client/src/cash/MakeMoneyMove.js
index ac8f499..b1b5ca0 100644
--- a/client/src/cash/MakeMoneyMove.js
+++ b/client/src/cash/MakeMoneyMove.js
@@ -7,9 +7,9 @@ import axios from 'axios';
const MakeMoneyMove = (props) => {
const [selectedFrom, setSelectedFrom] = useState("");
- const [selectedTo, setSelectedTo] = useState("");
+ const [selectedTo, setSelectedTo] = useState("-1");
const [homiesCash, setHomiesCash] = useState([]);
- const [amountToMove, setAmountToMove] = useState(null);
+ const [amountToMove, setAmountToMove] = useState('');
const [moveDescription, setMoveDescription] = useState("");
const [submitInProgress, setSubmitInProgress] = useState(false);
@@ -40,9 +40,26 @@ const MakeMoneyMove = (props) => {
const handleFromHomieChange = (e) => {
setSelectedFrom(e.target.value);
+
+ if (selectedTo === e.target.value) {
+ setSelectedTo('-1');
+ }
};
- const filteredHomieCashes = homiesCash.filter((homieCash) => homieCash.homie.id !== parseInt(selectedFrom));
- const filteredHomieOptions = filteredHomieCashes.map(homieToOptionMapper);
+
+ const notSayingOption =
+
+ const filteredHomieOptions = () => {
+ if (selectedFrom === ''){
+ return homiesCash.map(homieToOptionMapper);
+ }else{
+ const filteredHomieCashes = homiesCash.filter((homieCash) => homieCash.homie.id !== parseInt(selectedFrom));
+ return [
+ notSayingOption,
+ ...filteredHomieCashes.map(homieToOptionMapper)
+ ];
+ }
+
+ }
const handleToHomieChange = (e) => {
setSelectedTo(e.target.value);
@@ -84,7 +101,7 @@ const MakeMoneyMove = (props) => {
const formComplete = () => (
selectedFrom !== selectedTo &&
- selectedTo !== "" &&
+ selectedTo !== '-1' &&
amountToMove > 0
);
@@ -101,16 +118,16 @@ const MakeMoneyMove = (props) => {
-
+
-
+