Skip to content

Commit 4d4f7bb

Browse files
mattfegMatheus Ferreira
andauthored
Feature - MedicalShifts Total/Paid/Unpaid values gets filter by PDF report filter (#243)
* Changes total/payd/unpayd amount cents to return only values based on filter * Refacts specs for Medical Shifts to correctly test the changes --------- Co-authored-by: Matheus Ferreira <ferreira@Matheuss-MacBook-Air.local>
1 parent d0fd234 commit 4d4f7bb

File tree

12 files changed

+21
-126
lines changed

12 files changed

+21
-126
lines changed

app/controllers/api/v1/medical_shifts_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def index
3333
params: params.permit(:page, :per_page, :month, :year, :payd, :hospital_name).to_h
3434
).medical_shifts
3535

36-
amount_cents = MedicalShifts::TotalAmountCents.call(user_id: current_user.id, month: params[:month])
36+
amount_cents = MedicalShifts::TotalAmountCents.call(medical_shifts: medical_shifts)
3737

3838
render json: {
3939
total: amount_cents.total,

app/controllers/api/v1/pdf_reports_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def medical_shifts_pdf
5252
scope: authorized_scope,
5353
params: permitted_query_params
5454
).medical_shifts
55-
total_amount_cents = MedicalShifts::TotalAmountCents.call(user_id: current_user.id, month: params[:month])
55+
total_amount_cents = MedicalShifts::TotalAmountCents.call(medical_shifts: medical_shifts)
5656

5757
PdfGeneratorService.new(
5858
relation: medical_shifts,

app/operations/medical_shifts/total_amount_cents.rb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22

33
module MedicalShifts
44
class TotalAmountCents < Actor
5-
input :user_id, type: Integer
6-
input :month, type: String, allow_nil: true
5+
input :medical_shifts
76

87
output :total, type: String
98
output :payd, type: String
109
output :unpaid, type: String
1110

1211
def call
13-
self.total = Money.new(SumTotalAmountQuery.call(user_id:, month:), "BRL").format
14-
self.payd = Money.new(SumPaydAmountQuery.call(user_id:, month:), "BRL").format
15-
self.unpaid = Money.new(SumUnpaidAmountQuery.call(user_id:, month:), "BRL").format
12+
self.total = Money.new(medical_shifts.sum(&:amount_cents), "BRL").format
13+
self.payd = Money.new(medical_shifts.select(&:payd).sum(&:amount_cents), "BRL").format
14+
self.unpaid = Money.new(medical_shifts.reject(&:payd).sum(&:amount_cents), "BRL").format
1615
end
1716
end
1817
end

app/queries/medical_shifts/sum_payd_amount_query.rb

Lines changed: 0 additions & 19 deletions
This file was deleted.

app/queries/medical_shifts/sum_total_amount_query.rb

Lines changed: 0 additions & 19 deletions
This file was deleted.

app/queries/medical_shifts/sum_unpaid_amount_query.rb

Lines changed: 0 additions & 19 deletions
This file was deleted.

spec/operations/medical_shifts/total_amount_cents_spec.rb

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,28 @@
66
describe ".result" do
77
it "is successful" do
88
user = create(:user)
9+
medical_shift = create(:medical_shift, amount_cents: 1000, payd: true, user:, start_date: "25/02/2023")
910

10-
expect(described_class.result(user_id: user.id, month: nil)).to be_success
11+
expect(described_class.call(medical_shifts: [medical_shift])).to be_success
1112
end
1213

1314
it "returns the total, payd and unpaid amount_cents of money" do
1415
user = create(:user)
15-
_medical_shift = create(:medical_shift, amount_cents: 1000, payd: true, user:, start_date: "25/02/2023")
16+
medical_shift = create(:medical_shift, amount_cents: 1000, payd: true, user:, start_date: "25/02/2023")
1617
_medical_shift2 = create(:medical_shift, amount_cents: 1000, payd: true, user:, start_date: "25/03/2023")
17-
_payd_medical_shift = create(:medical_shift, amount_cents: 2000, payd: true, user:, start_date: "25/02/2023")
18+
payd_medical_shift = create(:medical_shift, amount_cents: 2000, payd: true, user:, start_date: "25/02/2023")
1819
_payd_medical_shift2 = create(:medical_shift, amount_cents: 2000, payd: true, user:, start_date: "25/03/2023")
19-
_unpaid_medical_shift = create(:medical_shift, amount_cents: 1500, payd: false, user:, start_date: "25/02/2023")
20+
unpaid_medical_shift = create(:medical_shift, amount_cents: 1500, payd: false, user:, start_date: "25/02/2023")
2021
_unpaid_medical_shift2 = create(:medical_shift, amount_cents: 1500, payd: false, user:, start_date: "25/03/2023")
2122

22-
result = described_class.call(user_id: user.id, month: "2")
23+
result = described_class.call(
24+
medical_shifts:
25+
[
26+
medical_shift,
27+
payd_medical_shift,
28+
unpaid_medical_shift
29+
]
30+
)
2331

2432
expect(result.total).to eq("R$45.00")
2533
expect(result.payd).to eq("R$30.00")

spec/pdfs/medical_shifts_report_pdf_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
it "generates a report with the correct content" do
77
user = create(:user)
88
pdf = Prawn::Document.new
9-
amount = MedicalShifts::TotalAmountCents.call(user_id: user.id, month: nil)
109
medical_shifts = create_list(:medical_shift, 3, user_id: user.id)
10+
amount = MedicalShifts::TotalAmountCents.call(medical_shifts: medical_shifts)
1111

1212
described_class.new(pdf: pdf, amount: amount, items: medical_shifts, title: "Plantões", email: user.email).generate
1313
rendered_pdf = pdf.render

spec/queries/medical_shifts/sum_payd_amount_query_spec.rb

Lines changed: 0 additions & 19 deletions
This file was deleted.

spec/queries/medical_shifts/sum_total_amount_query_spec.rb

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)