Skip to content

Commit 2b47fe5

Browse files
committed
Merge branch 'main' of https://github.com/espoo-dev/med_system_backend into feat/add-logout-button-views
2 parents ad22e4f + b21300a commit 2b47fe5

21 files changed

+305
-515
lines changed

app/controllers/api/v1/event_procedures_controller.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ class EventProceduresController < ApiController
88

99
def index
1010
authorized_scope = policy_scope(EventProcedure)
11-
event_procedures = EventProcedures::List.result(
11+
listed_event_procedures = EventProcedures::List.result(
1212
scope: authorized_scope,
1313
params: event_procedure_permitted_query_params
14-
).event_procedures
14+
)
15+
event_procedures = listed_event_procedures.event_procedures
16+
event_procedures_unpaginated = listed_event_procedures.event_procedures_unpaginated
1517

16-
total_amount_cents = EventProcedures::TotalAmountCents.call(event_procedures: event_procedures)
18+
total_amount_cents = EventProcedures::TotalAmountCents.call(event_procedures: event_procedures_unpaginated)
1719

1820
render json: {
1921
total: total_amount_cents.total,

app/operations/event_procedures/list.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ class List < Actor
66
input :params, type: Hash, default: -> { {} }
77

88
output :event_procedures, type: Enumerable
9+
output :event_procedures_unpaginated, type: Enumerable
910

1011
def call
11-
self.event_procedures = filtered_query.order(date: :desc).page(params[:page]).per(params[:per_page])
12+
self.event_procedures_unpaginated = filtered_query.order(date: :desc)
13+
self.event_procedures = event_procedures_unpaginated.page(params[:page]).per(params[:per_page])
1214
end
1315

1416
private

app/operations/event_procedures/total_amount_cents.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,19 @@ class TotalAmountCents < Actor
99
output :unpaid, type: String
1010

1111
def call
12-
procedures_by_id = Procedure.where(id: event_procedures.pluck(:procedure_id)).index_by(&:id)
13-
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)
12+
self.total = calculate_amount(event_procedures)
13+
self.payd = calculate_amount(event_procedures.select(&:payd))
14+
self.unpaid = calculate_amount(event_procedures.reject(&:payd))
1715
end
1816

1917
def convert_money(amount_cents)
2018
Money.new(amount_cents, "BRL").format
2119
end
2220

23-
def calculate_amount(filtered_event_procedures, procedures_by_id)
21+
def calculate_amount(filtered_event_procedures)
2422
total_cents = filtered_event_procedures.sum do |event_procedure|
25-
procedures_by_id[event_procedure.procedure_id]&.amount_cents.to_i
23+
result = BuildTotalAmountCents.call(event_procedure: event_procedure)
24+
result.total_amount_cents
2625
end
2726
convert_money(total_cents)
2827
end

config/initializers/prawn.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# frozen_string_literal: true
2+
3+
Prawn::Fonts::AFM.hide_m17n_warning = true if defined?(Prawn::Fonts::AFM)

lib/tasks/persist_in_database.rake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace :procedures do
1010
instance = Scripts::PopulateProcedures.new(path_file)
1111
instance.run!
1212

13-
puts "Procedures added in database"
13+
Rails.logger.warn "Procedures added in database"
1414
rescue StandardError => e
1515
raise StandardError, e.message
1616
end

lib/tasks/port_values_2008.rake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ namespace :port_values_2008 do
1717
)
1818
end
1919

20-
puts "Port values imported successfully"
20+
Rails.logger.warn "Port values imported successfully"
2121
end
2222
end

spec/operations/event_procedures/list_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,5 +103,22 @@
103103

104104
it { expect(result.event_procedures).to eq [EventProcedure.last] }
105105
end
106+
107+
describe "event_procedures_unpaginated" do
108+
context "when there are event procedures outside of pagination" do
109+
let!(:event_procedures) { create_list(:event_procedure, 11) }
110+
111+
it "returns all event procedures" do
112+
result = described_class.result(
113+
scope: EventProcedure.all,
114+
params: { page: "1", per_page: "5" }
115+
)
116+
event_procedures_paginated = result.event_procedures
117+
event_procedures_unpaginated = result.event_procedures_unpaginated
118+
expect(event_procedures_unpaginated).to match_array(event_procedures)
119+
expect(event_procedures_paginated.count).to eq(5)
120+
end
121+
end
122+
end
106123
end
107124
end

spec/operations/event_procedures/total_amount_cents_spec.rb

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,28 @@
1010
expect(described_class.result(event_procedures: [event_procedure])).to be_success
1111
end
1212

13-
it "returns the amount_cents total, paid and unpaid of event_procedures" do
13+
it "correctly calculates total, paid and unpaid amounts" do
1414
user = create(:user)
15-
procedure_5000 = create(:procedure, amount_cents: 5000)
16-
procedure_2000 = create(:procedure, amount_cents: 2000)
17-
payd_amount_cents = create_list(
15+
procedure_5000 = create(:procedure, amount_cents: 5000, custom: true, user: user)
16+
procedure_2000 = create(:procedure, amount_cents: 2000, custom: true, user: user)
17+
paid_event_procedures = create_list(
1818
:event_procedure, 3,
1919
procedure: procedure_5000,
2020
user: user,
21-
payd: true
21+
payd: true,
22+
urgency: false
2223
)
23-
unpayd_event_procedure = create_list(
24+
unpaid_event_procedures = create_list(
2425
:event_procedure, 2,
2526
procedure: procedure_2000,
2627
user: user,
27-
payd: false
28+
payd: false,
29+
urgency: false
2830
)
29-
event_procedures = payd_amount_cents + unpayd_event_procedure
31+
32+
event_procedures = paid_event_procedures + unpaid_event_procedures
3033
total_amount_cents = described_class.call(event_procedures: event_procedures)
34+
3135
expect(total_amount_cents.total).to eq("R$190.00")
3236
expect(total_amount_cents.payd).to eq("R$150.00")
3337
expect(total_amount_cents.unpaid).to eq("R$40.00")

spec/requests/api/v1/event_procedures_dashboard_request_spec.rb

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,9 @@
88
let(:params) { { start_date: "01/06/2000", end_date: "05/06/2000" } }
99

1010
describe "authentication" do
11-
context "when user is not authenticated" do
12-
let(:params) { {} }
13-
let(:headers) { {} }
14-
15-
it "returns unauthorized" do
16-
do_request
17-
expect(response).to have_http_status(:unauthorized)
18-
end
19-
20-
it "returns error message" do
21-
do_request
22-
expect(response.parsed_body["error_description"]).to eq(["Invalid token"])
23-
end
11+
include_context "when user is not authenticated" do
12+
let(:path) { "/api/v1/event_procedures_dashboard/amount_by_day" }
13+
let(:http_method) { :get }
2414
end
2515

2616
context "when user is authenticated as not admin" do

0 commit comments

Comments
 (0)