Skip to content

Commit fe2218b

Browse files
authored
Merge pull request #10 from IgorG0mes/feat/ru-0008/qrcode-generator-for-visitor
[FEAT][RU-0008] QRcode generator for Visitor
2 parents cfd42ee + c14a3f4 commit fe2218b

File tree

5 files changed

+48
-4
lines changed

5 files changed

+48
-4
lines changed

app/controllers/students_controller.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ def regenerate_qr
4141
redirect_to @student, notice: "Novo QR Code gerado e salvo para #{@student.name}."
4242
end
4343

44-
4544
private
4645

4746
def set_student

app/controllers/visitors_controller.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
class VisitorsController < ApplicationController
22
before_action :authenticate_user!
3-
before_action :set_visitor, only: [ :show, :edit, :update ]
3+
before_action :set_visitor, only: [ :show, :edit, :update, :regenerate_qr ]
4+
before_action :require_admin, only: [:regenerate_qr]
45

56
def index
67
@visitors = Visitor.all
@@ -34,6 +35,12 @@ def update
3435
end
3536
end
3637

38+
def regenerate_qr
39+
QrCodeGeneratorService.generate_and_assign(@visitor)
40+
41+
redirect_to @visitor, notice: "Novo QR Code gerado e salvo para #{@visitor.name}."
42+
end
43+
3744
private
3845

3946
def set_visitor

app/models/visitor.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,24 @@
1+
require "rqrcode"
2+
13
class Visitor < ApplicationRecord
24
has_many :access_logs, as: :personable
35
after_create :generate_qr_code
46

7+
def generate_qr_code_svg
8+
return unless qr_code_hash.present?
9+
10+
qrcode = RQRCode::QRCode.new(qr_code_hash)
11+
12+
qrcode.as_svg(
13+
color: "000",
14+
shape_rendering: "crispEdges",
15+
module_size: 6,
16+
standalone: true,
17+
viewbox: "0 0 300 300"
18+
)
19+
.html_safe
20+
end
21+
522
private
623
def generate_qr_code
724
QrCodeGeneratorService.generate_and_assign(self)

app/views/visitors/show.html.erb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,22 @@
55
<p><strong>E-mail:</strong> <%= @visitor.email %></p>
66
<p><strong>QR Code Hash (Chave):</strong> <code><%= @visitor.qr_code_hash %></code></p>
77

8-
<hr>
8+
<div style="float: left; margin-left: 20px;">
9+
<% if @visitor.qr_code_hash.present? %>
10+
<h2>QR Code de Acesso</h2>
11+
<%= @visitor.generate_qr_code_svg %>
12+
<p class="text-center">Chave: <code><%= @visitor.qr_code_hash %></code></p>
13+
<% else %>
14+
<p>QR Code ainda não gerado. Edite e salve para forçar a geração.</p>
15+
<% end %>
16+
<% if current_user.role&.name == 'admin' %>
17+
<%= link_to 'Gerar Novo QR Code', regenerate_qr_visitor_path(@visitor),
18+
data: { turbo_method: :post, turbo_confirm: 'Isso invalidará o QR Code antigo. Continuar?' },
19+
style: "color: orange;" %>
20+
<% end %>
21+
</div>
22+
23+
<hr style="clear: both;">
924

1025
<%= link_to 'Editar', edit_visitor_path(@visitor) %> |
1126
<%= link_to 'Voltar para a Lista', visitors_path %>

config/routes.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,14 @@
99
resources :students do
1010
post :regenerate_qr, on: :member
1111
end
12-
resources :visitors
12+
13+
resources :visitors do
14+
post :regenerate_qr, on: :member
15+
end
16+
1317
resources :meals
18+
1419
resources :daily_menus
20+
1521
resources :access_logs, only: [:index, :destroy]
1622
end

0 commit comments

Comments
 (0)