bluelemons/diputados

View on GitHub
app/admin/proyectos.rb

Summary

Maintainability
A
1 hr
Test Coverage
# encoding: utf-8

ActiveAdmin.register Proyecto do
  menu :label => "Expedientes"
  before_filter :only => :index do |controller|
    @per_page = 1000 if ['application/pdf', 'application/xml'].include?(request.format)
  end

  actions :index, :show#, :destroy

  scope :all, :default => true
  scope :week
  scope :month

  controller do
    respond_to :html, :xml, :json, :pdf

    def index(options={}, &block)
      super(options) do |format|
        block.call(format) if block
        format.pdf {
          report = ExpedientesReport.new.listado @proyectos
          send_file report, :type => "application/vnd.oasis.opendocument.text"
        }
      end
    end
  end

  filter :numero
  filter :tipo, :as => :select, :collection => Expediente::TiposColection
  filter :ley
  filter :estado
  filter :comision, :as => :select, :collection => Proc.new { Comision.all }
  filter :fechaentr
  filter :autor, :as => :select,
    :collection => Proc.new { Diputado.pluck(:nombre).concat(Senado.pluck(:nombre)).sort }
  filter :firmantes
  filter :descrip, :label => "Descripcion"

  index do
    column :numero
    column("Tipo"){ |x| x.tipo_format }
    column :pasada
    column :fechaentr
    column :descrip, :html_descrip
    default_actions
  end

  member_action :print do
    report = ExpedientesReport.new.detalle(params)
    send_file(report, :type => "application/vnd.oasis.opendocument.text")
  end

  action_item(:only =>[:show]) do
    link_to("Imprimir", print_admin_proyecto_path(proyecto))
  end

  show :title=> :clave do
    div(:id => "xtabs") do
      ul do
        li link_to "Detalles", "#xtabs-1"
        li link_to "Asunto entrado", "#xtabs-2" if proyecto.asunto
        li link_to "Pase por comisiones", "#xtabs-3"
        li link_to "Tratamiento en Sesion", "#xtabs-4"
        li link_to "Preferencia", "#xtabs-5" if proyecto.prefers.count > 0
      end

      div(:id => "xtabs-1") do
        attributes_table_for proyecto,
          :tema, :descrip, :entrada, :autor, :firmantes, :periodo, :estado,
          :final
          #,:expte, :marca, :etiq

        panel "Archivos: los archivos txt son de uso interno." do
          table_for proyecto.assets do
            column "Nombre" do |a|
              link_to a.asset_file_name, a.asset.url
            end
            if current_ability.can? :manage, Asset
              column "Borrar" do |asset|
                link_to("Borrar", [proyecto, asset], :confirm => "seguro?", :method => :delete)
              end
            end
          end

          if can? :manage, Asset
            div do
              render :partial => 'assets/add_form',
                     :locals => { :adjuntable => proyecto, :asset => proyecto.assets.build }
            end
          end

          # temporal acceso a los archivos del disco
          ul do
            proyecto.archivos_digitales.each do |archivo|
              li link_to(archivo.basename, "/#{archivo}")
            end
          end
        end
      end

      div(:id => "xtabs-2") do

        attributes_table_for proyecto.asunto,
          :asuntoentr, :numreunion, :numsesion

        panel "Comisiones Asignadas" do
          ol do
            proyecto.comisiones_asignadas.each do |comision|
              li comision.nombre
            end
          end
        end

        proyecto.reasignments.each do |reasignment|
          panel "Vuelta a comisiĆ³n" do
            ol do
              reasignment.each do |comision|
                li comision.nombre
              end
            end
          end
        end

      end if proyecto.asunto

      div(:id => "xtabs-3") do
        proyecto.estados.each do |estado|
          panel estado.comision.try(:name) do
            div "<b>Entrada </b> #{estado.fechaent}".html_safe
            estado.dictamenes.each do |dictamen|
              div do
                b dictamen[:tipo]
                div dictamen[:dictamen]
                div dictamen[:fecha]
              end
            end
            div "<b>Salida </b>#{estado.fechasal}".html_safe
          end
        end
      end

      div(:id => "xtabs-4") do
        if proyecto.sesion
          proyecto.sesions.each do |sesion|
            h2 "Periodo: #{sesion.periodo}"
            attributes_table_for sesion,
              :ordendia, :fechaordia, :numreunion, :numsesion,
              :fechases, :tratamiento, :resultado
          end
        else
          "Este proyecto no ha sido tratado en sesion"
        end
      end

      div(:id => "xtabs-5") do
        proyecto.prefers.each do |pre|
          attributes_table_for pre, :fechasol, :fechapref, :tratado
        end
      end

    end

  end

end