@@ -9,54 +9,22 @@ class TotalAmountCents < Actor
99 output :unpaid , type : String
1010
1111 def call
12- procedures = Procedure . where ( id : event_procedures . pluck ( :procedure_id ) )
12+ procedures_by_id = Procedure . where ( id : event_procedures . pluck ( :procedure_id ) ) . index_by ( & :id )
1313
14- self . total = calculate_total ( procedures )
15- self . payd = calculate_payd ( procedures )
16- self . unpaid = calculate_unpayd ( procedures )
14+ self . total = calculate_amount ( event_procedures , procedures_by_id )
15+ self . payd = calculate_amount ( event_procedures . select ( & :payd ) , procedures_by_id )
16+ self . unpaid = calculate_amount ( event_procedures . reject ( & :payd ) , procedures_by_id )
1717 end
1818
1919 def convert_money ( amount_cents )
2020 Money . new ( amount_cents , "BRL" ) . format
2121 end
2222
23- def calculate_total ( user_procedures )
24- procedures_by_id = { }
25- user_procedures . each do |procedure |
26- procedures_by_id [ procedure . id ] = procedure
23+ def calculate_amount ( filtered_event_procedures , procedures_by_id )
24+ total_cents = filtered_event_procedures . sum do |event_procedure |
25+ procedures_by_id [ event_procedure . procedure_id ] &.amount_cents . to_i
2726 end
28- total = 0
29- event_procedures . each do |event_procedure |
30- procedure = procedures_by_id [ event_procedure . procedure_id ]
31- total += procedure . amount_cents if procedure
32- end
33- convert_money ( total )
34- end
35-
36- def calculate_payd ( user_procedures )
37- procedures_by_id = { }
38- user_procedures . each do |procedure |
39- procedures_by_id [ procedure . id ] = procedure
40- end
41- total = 0
42- event_procedures . select ( &:payd ) . each do |event_procedure |
43- procedure = procedures_by_id [ event_procedure . procedure_id ]
44- total += procedure . amount_cents if procedure
45- end
46- convert_money ( total )
47- end
48-
49- def calculate_unpayd ( user_procedures )
50- procedures_by_id = { }
51- user_procedures . each do |procedure |
52- procedures_by_id [ procedure . id ] = procedure
53- end
54- total = 0
55- event_procedures . reject ( &:payd ) . each do |event_procedure |
56- procedure = procedures_by_id [ event_procedure . procedure_id ]
57- total += procedure . amount_cents if procedure
58- end
59- convert_money ( total )
27+ convert_money ( total_cents )
6028 end
6129 end
6230end
0 commit comments