Commit bb8d4e08 authored by Rafael Ravedutti Lucio Machado's avatar Rafael Ravedutti Lucio Machado
Browse files

Fix atendimentos report


Signed-off-by: Rafael Ravedutti Lucio Machado's avatarRafael Ravedutti Lucio Machado <rrlm13@inf.ufpr.br>
parent 52f8d8ea
......@@ -80,13 +80,13 @@ class ProfissionaisController < ApplicationController
return redirect_to :back, alert: "CEP inválido."
end
end
if params[:profissional][:cpf]
if params[:profissional][:cpf]
if Cidadao.where(:cpf => params[:profissional][:cpf]).size > 0
return redirect_to :back, alert: "Já existe um cidadão cadastrado com este CPF!"
end
end
@orgao = Orgao.ativo.order('nome')
@profissional = Profissional.new(profissional_params)
respond_to do |format|
......@@ -110,12 +110,12 @@ class ProfissionaisController < ApplicationController
@orgao = Orgao.ativo.order('nome')
@profissional = Profissional.find(params[:id])
if params[:profissional][:cpf]
if params[:profissional][:cpf]
if Cidadao.where(:cpf => params[:profissional][:cpf]).size > 0
return redirect_to :back, alert: "Já existe um cidadão cadastrado com este CPF!"
end
end
if params[:profissional][:cep]
if !valida_cep(params[:profissional][:cep])
return redirect_to :back, alert: "CEP inválido."
......@@ -226,7 +226,7 @@ class ProfissionaisController < ApplicationController
# GET /profissionais/atendimento
# GET /profissionais/meus_atendimentos
def atendimento
@link = "Meus Atendimentos"
@link = "Meus Atendimentos"
@search = Agendamento.search(params[:atendimentos])
@profissional = current_profissional
@order = params[:atendimentos][:s] if params[:atendimentos]
......@@ -268,13 +268,16 @@ def atendimento
.joins(:escala)
.where(:escalas => { :profissional_executor_id => @profissional.id })
#.order('horario_inicio_consulta DESC')
@profissional_orgaos_tipo_atendimentos = TipoAtendimento.ativo
@tipos_situacoes = TipoSituacao.select("id, descricao")
if !current_profissional.administradorsistema?
@atendimentos = @atendimentos.where(:escalas => { :orgao_id => @profissional.orgaos })
@profissional_orgaos_tipo_atendimentos = @profissional_orgaos_tipo_atendimentos.joins(:orgaos)
.where(:orgaos => { :id => @profissional.orgaos, :ativo => true }).uniq
end
if @limite_inicio and @limite_fim
@atendimentos = @atendimentos.where('horario_inicio_consulta BETWEEN ? AND ?', @limite_inicio.beginning_of_day, @limite_fim.end_of_day)
else
......@@ -290,46 +293,50 @@ def atendimento
else
@atendimentos = @atendimentos.order(horario_inicio_consulta: :desc)
end
@prefeitura = Prefeitura.first
@arrAtendimentos=[]
@arrAtendimentos = []
@agendamentos = @atendimentos.paginate(page: params[:page], per_page: 25)
if params[:atendimento_button]
if current_profissional.orgaos.empty?
@orgaos = ""
else
@orgaos = current_profissional.orgaos
end
unless params["atendimentos"]["orgao_id_eq"].nil? or params["atendimentos"]["orgao_id_eq"].empty?
orgId = @orgaos
@arrAtendimentos.push(@atendimentos.where(:escalas =>{:orgao_id => orgId}))
@arrAtendimentos.push(@atendimentos.where(:orgao_id => orgId))
else
@qtOrgaos=@prefeitura.orgaos.pluck(:id)
@qtOrgaos = @prefeitura.orgaos.pluck(:id)
@qtOrgaos.each do |orgId|
@atendAtual=@atendimentos.where(:escalas =>{:orgao_id => orgId})
@atendAtual = @atendimentos.where(:orgao_id => orgId)
unless @atendAtual.empty?
@arrAtendimentos.push(@atendAtual)
end
end
end
# Se foi escolhido um tipo de atendimento
if !params["atendimentos"]["escala_tipo_atendimento_id_eq"].nil? and !params["atendimentos"]["escala_tipo_atendimento_id_eq"].empty?
@p_tipo_atendimentos = TipoAtendimento.find(params["atendimentos"]["escala_tipo_atendimento_id_eq"])
end
# Se foi escolhido um tipo de atendimento
if !params["atendimentos"]["escala_tipo_atendimento_id_eq"].nil? and !params["atendimentos"]["escala_tipo_atendimento_id_eq"].empty?
@p_tipo_atendimentos = TipoAtendimento.find(params["atendimentos"]["escala_tipo_atendimento_id_eq"])
end
if @atendimentos.empty? or @atendimentos.nil?
return redirect_to :back ,alert: "Não há dados para emitir o relatório"
else
@report = AtendimentosReport.new(:page_size => 'A4', :page_layout => :portrait)
@report = @report.to_pdf( @prefeitura, @orgaos, @arrAtendimentos, @limite_inicio, @limite_fim, @p_cidadao, @p_local_atendimento, @p_tipo_atendimentos, @p_tipo_situacao, @profissional)
@report = @report.to_pdf(@prefeitura, @orgaos, @arrAtendimentos, @limite_inicio, @limite_fim, @p_cidadao, @p_local_atendimento, @p_tipo_atendimentos, @p_tipo_situacao, @profissional)
return send_data @report, filename: "atendimentos.pdf", type: "application/pdf"
end
else
else
respond_to do |format|
format.html # atendimento.html.erb
format.js # atendimento.js.erb
format.json {render json: @atendimentos}
format.html # atendimento.html.erb
format.js # atendimento.js.erb
format.json {render json: @atendimentos}
end
end
end
......
# coding: utf-8
class AtendimentosReport < Prawn::Document
def to_pdf( table_prefeitura, table_locais_atendimento, arrAtendimentos, data_inicio, data_fim, p_cidadao, p_local_atendimento, p_tipo_atendimento, p_tipo_situacao, p_profissional)
def to_pdf(table_prefeitura, table_locais_atendimento, arrAtendimentos, data_inicio, data_fim, p_cidadao, p_local_atendimento, p_tipo_atendimento, p_tipo_situacao, p_profissional)
@prefeitura = table_prefeitura
@orgaos = table_locais_atendimento
@data_inicio = data_inicio
......@@ -11,60 +11,63 @@ class AtendimentosReport < Prawn::Document
@p_tipo_situacao = p_tipo_situacao
@p_profissional = p_profissional
@atendimentos = arrAtendimentos
@atendimentos.each do |at| #Para cada orgao de atendimento
if at != @atendimentos.first
# Percorre todos os atendimentos
@atendimentos.each do |atendimento|
# Cria nova página no formulário se o atendimento não for o primeiro, pois
# cada atendimento ficará em uma página
if atendimento != @atendimentos.first
self.start_new_page
end
@atend=at
# Adiciona o cabeçalho do atendimento ao relatório
@atend = atendimento
header_report
# Nome dos atributos do atendimento no relatório
@atributos = ["CPF", "Nome", "Cartão SUS", "Núm. Ag.", "Tipo Atendimento", "Hora Inicio", "Hora Fim", "Situação"]
if @p_cidadao.present?
@atributos = ["Núm. Agend.", "Tipo Atendimento", "Hora Inicio", "Hora Fim", "Situação"]
num_atendimento = 5
if @p_tipo_atendimento.present?
# Número de colunas dos dados do atendimento
num_atendimentos = 5
# Se o tipo de atendimento faz parte da busca ele é omitido do relatório
if @p_tipo_atendimento.present?
@atributos.delete_if { |item| item.eql?("Tipo Atendimento") }
num_atendimento -= 1
end
num_atendimentos -= 1
end
if @p_tipo_situacao.present?
@atributos.delete_if { |item| item.eql?("Situação") }
num_atendimento -= 1
end
@localizadores = [{:content =>"Atendimento", :colspan => num_atendimento}]
else
num_atendimento = 5;
if @p_tipo_atendimento.present?
@atributos.delete_if { |item| item.eql?("Tipo Atendimento") }
num_atendimento -= 1
end
# Se o tipo de situação faz parte da busca ele é omitido do relatório
if @p_tipo_situacao.present?
@atributos.delete_if { |item| item.eql?("Situação") }
num_atendimentos -= 1
end
if @p_tipo_situacao.present?
@atributos.delete_if { |item| item.eql?("Situação") }
num_atendimento -= 1
end
@localizadores = [{:content =>"Cidadão", :colspan => 3} , {:content =>"Atendimento",:colspan => num_atendimento}]
# Conteúdo/seções do relatório
@localizadores = [{:content => "Atendimento", :colspan => num_atendimentos}]
# Se o cidadão faz parte da busca, então os dados dele são omitidos do relatório, caso
# contrário, adiciona a seção cidadão no mesmo
if @p_cidadao.present?
@atributos = ["Núm. Agend.", "Tipo Atendimento", "Hora Inicio", "Hora Fim", "Situação"]
else
@localizadores.unshift({:content => "Cidadão", :colspan => 3})
end
# Gera as linhas da tabela e o rodapé do relatório
line_table
footer
end
# Renderiza o relatório
render
end
def header_report
@orgaos_nomes = @orgaos.pluck(:nome)
@profissionais_orgaos = @orgaos_nomes.pop
#if @atend.is_a?(ActiveRecord::Relation)
# @id=@atend.select("orgaos.id").first.id
#else
@id=@atend.first.orgao_id
# end
@id = @atend.first.orgao_id
@orgaos_nomes.each do |orgao_nome|
@profissionais_orgaos += ', ' + orgao_nome
end
......@@ -96,7 +99,7 @@ class AtendimentosReport < Prawn::Document
end
table( @data, :width => 523) do
table(@data, :width => 523) do
cells_padding = 12
cells.width = 523
cells_height = 50
......@@ -125,22 +128,22 @@ class AtendimentosReport < Prawn::Document
if cidadao == nil and tipo_situacao == nil and atendimento != nil
columns(0).width = 74
columns(2).width = 65
columns(3).width = 35
columns(3).width = 35
columns(4).width = 45
columns(5).width = 45
columns(6).width = 65
columns(6).width = 65
elsif cidadao == nil and tipo_situacao == nil and atendimento == nil
columns(0).width = 74
columns(2).width = 65
columns(3).width = 35
columns(3).width = 35
columns(4).width = 65
columns(5).width = 45
columns(6).width = 45
columns(7).width = 65
columns(6).width = 45
columns(7).width = 65
elsif cidadao != nil and tipo_situacao == nil and atendimento == nil
columns(0).width = 45
columns(2).width = 45
columns(3).width = 45
columns(2).width = 45
columns(3).width = 45
columns(4).width = 65
elsif cidadao != nil and tipo_situacao == nil and atendimento != nil
columns(0).width = 45
......@@ -153,7 +156,7 @@ class AtendimentosReport < Prawn::Document
#columns(2).width = 65
#columns(3).width = 35
#columns(4).width = 45
#columns(5).width = 65
#columns(5).width = 65
end
self.cell_style = { size: 9} # Atenção o tamanho dos textos deste relatório é menor
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment