Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -298,8 +298,12 @@ GEM
racc (~> 1.4)
nokogiri (1.19.4-arm-linux-musl)
racc (~> 1.4)

nokogiri (1.19.4-arm64-darwin)
racc (~> 1.4)
nokogiri (1.19.4-x86_64-linux-gnu)
racc (~> 1.4)

nokogiri (1.19.4-x86_64-linux-musl)
racc (~> 1.4)
ostruct (0.6.3)
Expand Down
72 changes: 43 additions & 29 deletions app/controllers/dashboards_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,58 +3,72 @@
class DashboardsController < ApplicationController
before_action :require_login


layout "admin_layout", only: [ :admin, :admin_gerenciamento, :admin_avaliacao ]

# tela de admin
def admin
end

# tela de gerenciamento
def admin_gerenciamento
@turmas = Turma.all
@turmas = Turma.all
@discentes = Discente.all
@docentes = Docente.all
@docentes = Docente.all
end

# importação do json
def importar_json
# codigo de auxilio
if params["json"].blank?
puts "ERRO: O parâmetro 'json' veio vazio!"
flash[:error] = "Por favor, selecione um arquivo JSON."
redirect_to admin_gerenciamento_dashboard_path and return
end

puts "Arquivo recebido com sucesso: #{params["json"].original_filename}"
return redirecionar_json_vazio if json_vazio?

# Chama o service
resultado = Importer::AcademicDataImporter.import!(params["json"])
registrar_arquivo_recebido

if resultado
puts "SUCESSO: O Service Object terminou sem erros."
if importar_dados_json
flash[:success] = "JSON importado com sucesso!"
else
puts "AVISO: O Service retornou falso."
flash[:alert] = "Ocorreu um problema ao importar o JSON."
end

redirect_to admin_gerenciamento_dashboard_path

rescue => e
puts "EXCEÇÃO CAPTURADA NO CONTROLLER: #{e.message}"
puts e.backtrace.first(2)
flash[:error] = "Ocorreu um erro na importação: #{e.message}"
redirect_to admin_gerenciamento_dashboard_path
rescue StandardError => e
tratar_erro_importacao(e)
end


def admin_avaliacao
end

def discente
end

private

# tela de avaliações
def admin_avaliacao
def json_vazio?
params[:json].blank?
end

def discente
def redirecionar_json_vazio
puts "ERRO: O parâmetro 'json' veio vazio!"
flash[:error] = "Por favor, selecione um arquivo JSON."
redirect_to admin_gerenciamento_dashboard_path
end

def registrar_arquivo_recebido
puts "Arquivo recebido com sucesso: #{params[:json].original_filename}"
end

def importar_dados_json
resultado = Importer::AcademicDataImporter.import!(params[:json])

if resultado
puts "SUCESSO: O Service Object terminou sem erros."
true
else
puts "AVISO: O Service retornou falso."
false
end
end

def tratar_erro_importacao(erro)
puts "EXCEÇÃO CAPTURADA NO CONTROLLER: #{erro.message}"
puts erro.backtrace.first(2)

flash[:error] = "Ocorreu um erro na importação: #{erro.message}"
redirect_to admin_gerenciamento_dashboard_path
end
end
2 changes: 1 addition & 1 deletion app/controllers/envio_formularios_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def set_formulario

def mensagem_erro_validacao(questoes, respostas_params)
return "Todos os campos obrigatórios devem ser preenchidos" if campos_vazios?(questoes, respostas_params)
return "Por favor, insira um valor válido entre 1 e 5" if valores_invalidos?(questoes, respostas_params)
"Por favor, insira um valor válido entre 1 e 5" if valores_invalidos?(questoes, respostas_params)
end

def campos_vazios?(questoes, respostas_params)
Expand Down
89 changes: 58 additions & 31 deletions app/controllers/formularios_controller.rb
Original file line number Diff line number Diff line change
@@ -1,66 +1,93 @@
# app/controllers/formularios_controller.rb
class FormulariosController < ApplicationController
before_action :exigir_discente!
before_action :set_formulario, only: [ :show ]

# GET /formularios
def index
@turmas = discente_atual.turmas

turmas_ids = discente_atual.turmas.pluck(:id)
respondidos_ids = discente_atual.envio_formularios.pluck(:formulario_id)
base = Formulario.where(turma_id: turmas_ids).includes(:turma, :template)

@formularios_pendentes = formularios_pendentes(base, respondidos_ids)
@formularios_respondidos = formularios_respondidos(base)
@formularios_fechados = formularios_fechados(base, respondidos_ids)
@formularios_pendentes = formularios_pendentes
@formularios_respondidos = formularios_respondidos
@formularios_fechados = formularios_fechados
end

# GET /formularios/:id
def show
if discente_atual.ja_respondeu?(@formulario)
redirect_to minha_resposta_formulario_path(@formulario),
notice: "Você já respondeu este formulário."
return
end

return redirect_to formularios_path, alert: "O prazo para responder este formulário já encerrou." unless @formulario.aberto?
return redirect_to formularios_path, alert: "Você não tem acesso a este formulário." unless discente_atual.turmas.include?(@formulario.turma)
return redirect_to_minha_resposta if formulario_respondido?
return redirect_formulario_fechado unless @formulario.aberto?
return redirect_sem_acesso_formulario unless discente_tem_acesso_ao_formulario?

@questoes = @formulario.questoes.includes(questao_template: :opcao_questoes)
end

# GET /formularios/:id/minha_resposta
def minha_resposta
@formulario = Formulario.find(params[:id])
@envio = discente_atual.envio_formularios.find_by(formulario: @formulario)
@envio = discente_atual.envio_formularios.find_by(formulario: @formulario)

return redirect_to formularios_path, alert: "Você ainda não respondeu este formulário." unless @envio
return redirect_to formularios_path, alert: "Você não tem acesso a este formulário." unless discente_atual.turmas.include?(@formulario.turma)
return redirect_sem_resposta unless @envio
return redirect_sem_acesso_formulario unless discente_atual.turmas.include?(@formulario.turma)

@respostas = @envio.respostas.includes(questao: { questao_template: :opcao_questoes })
end

private

def turmas_ids
@turmas_ids ||= discente_atual.turmas.pluck(:id)
end

def respondidos_ids
@respondidos_ids ||= discente_atual.envio_formularios.pluck(:formulario_id)
end

def formularios_base
@formularios_base ||= Formulario.where(turma_id: turmas_ids).includes(:turma, :template)
end

def formularios_pendentes
formularios_base.abertos.where.not(id: respondidos_ids).order(prazo: :asc)
end

def formularios_respondidos
formularios_base
.joins(:envio_formularios)
.where(envio_formularios: { discente_id: discente_atual.id })
.order("envio_formularios.enviado_em desc")
end

def formularios_fechados
formularios_base.fechados.where.not(id: respondidos_ids).order(prazo: :desc)
end

def set_formulario
@formulario = Formulario.find(params[:id])
rescue ActiveRecord::RecordNotFound
redirect_to formularios_path, alert: "Formulário não encontrado." and return
end

def formularios_pendentes(base, respondidos_ids)
base.abertos.where.not(id: respondidos_ids).order(prazo: :asc)
def formulario_respondido?
discente_atual.ja_respondeu?(@formulario)
end

def formularios_respondidos(base)
base
.joins(:envio_formularios)
.where(envio_formularios: { discente_id: discente_atual.id })
.order("envio_formularios.enviado_em desc")
def redirect_to_minha_resposta
redirect_to minha_resposta_formulario_path(@formulario),
notice: "Você já respondeu este formulário."
end

def redirect_formulario_fechado
redirect_to formularios_path,
alert: "O prazo para responder este formulário já encerrou."
end

def redirect_sem_acesso_formulario
redirect_to formularios_path,
alert: "Você não tem acesso a este formulário."
end

def redirect_sem_resposta
redirect_to formularios_path,
alert: "Você ainda não respondeu este formulário."
end

def formularios_fechados(base, respondidos_ids)
base.fechados.where.not(id: respondidos_ids).order(prazo: :desc)
def discente_tem_acesso_ao_formulario?
discente_atual.turmas.include?(@formulario.turma)
end
end
5 changes: 2 additions & 3 deletions app/mailers/user_mailer.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
class UserMailer < ApplicationMailer

def primeiro_acesso(usuario)
@usuario = usuario

@url_definir_senha = definir_senha_url(email: @usuario.email)

mail(
to: @usuario.email,
subject: 'Bem-vindo ao CAMAAR! Defina sua senha de acesso'
subject: "Bem-vindo ao CAMAAR! Defina sua senha de acesso"
)
end
end
1 change: 0 additions & 1 deletion app/models/turma.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,3 @@ class Turma < ApplicationRecord
validates :codigo, presence: true
validates :nome, presence: true
end

Loading
Loading