diff --git a/app/controllers/front_controller.rb b/app/controllers/front_controller.rb index 15e45f93..859d015b 100644 --- a/app/controllers/front_controller.rb +++ b/app/controllers/front_controller.rb @@ -69,8 +69,10 @@ def search @parameter = params[:search].downcase search_term = "%#{@parameter}%" - software_records_columns = SoftwareRecord.columns.map { |column| "lower(#{column.name}) LIKE :search" } - @softwarerecords_results = SoftwareRecord.where(software_records_columns.join(' OR '), search: search_term) + software_records_columns = SoftwareRecord.columns.map { |column| "lower(software_records.#{column.name}) LIKE :search" } + @softwarerecords_results = SoftwareRecord.joins(:status) + .where.not(statuses: { status_type: 'Decommissioned' }) + .where(software_records_columns.join(' OR '), search: search_term) vendor_records_columns = VendorRecord.columns.map { |column| "lower(#{column.name}) LIKE :search" } @vendorrecords_results = VendorRecord.where(vendor_records_columns.join(' OR '), search: search_term) diff --git a/app/controllers/software_records_controller.rb b/app/controllers/software_records_controller.rb index ee95d904..192584fb 100644 --- a/app/controllers/software_records_controller.rb +++ b/app/controllers/software_records_controller.rb @@ -21,11 +21,14 @@ def index @params = request.query_parameters @software_records = if @params['filter_by'].to_s == 'software_types' && !@params['software_type_filter'].nil? && !@params['software_type_filter'].empty? - SoftwareRecord.where(software_type_id: @params['software_type_filter']).order("#{sort_column} #{sort_direction}") + SoftwareRecord.joins(:status).where(software_type_id: +@params['software_type_filter']).where.not(statuses: { status_type: 'Decommissioned' }).order("#{sort_column} #{sort_direction}") elsif @params['filter_by'].to_s == 'vendor_records' && !@params['vendor_record_filter'].nil? && !@params['vendor_record_filter'].empty? - SoftwareRecord.where(vendor_record_id: @params['vendor_record_filter']).order("#{sort_column} #{sort_direction}") + SoftwareRecord.joins(:status).where(vendor_record_id: +@params['vendor_record_filter']).where.not(statuses: { status_type: 'Decommissioned' }).order("#{sort_column} #{sort_direction}") else - SoftwareRecord.order("#{sort_column} #{sort_direction}") + SoftwareRecord.joins(:status).where.not(statuses: { status_type: 'Decommissioned' }).order("#{sort_column} +#{sort_direction}") end @vendor_records = VendorRecord.all @software_types = SoftwareType.all @@ -33,7 +36,7 @@ def index end def self.indesign_dashboard(user) - design_status = Status.where(status_type: 'Design') + design_status = Status.where(status_type: %w[Design Development]) design_filter = SoftwareRecord.where(status_id: 0) design_status.each do |design| design_filter = design_filter.or(SoftwareRecord.where(status_id: design.id)) @@ -158,16 +161,53 @@ def check_and_decrypt(sensitive_data) decrypt sensitive_data if sensitive_data.to_s.present? end + def list_decommissioned + $page_title = 'Decommissioned Software | UCL Application Portfolio' + @params = request.query_parameters + + @software_records = if @params['filter_by'].to_s == 'software_types' && !@params['software_type_filter'].nil? && + !@params['software_type_filter'].empty? + SoftwareRecord.joins(:status).where(software_type_id: @params['software_type_filter']).where(status: +'Decommissioned').order("#{sort_priority} #{sort_direction_priority}") + elsif @params['filter_by'].to_s == 'vendor_records' && !@params['vendor_record_filter'].nil? && + !@params['vendor_record_filter'].empty? + SoftwareRecord.joins(:status).where(vendor_record_id: @params['vendor_record_filter']).where(status: +'Decommissioned').order("#{sort_priority} #{sort_direction_priority}") + else + SoftwareRecord.joins(:status).where(statuses: { status_type: 'Decommissioned' }).order("#{sort_column} +#{sort_direction}") + end + @vendor_records = VendorRecord.all + @software_types = SoftwareType.all + @softwarerecords_count = SoftwareRecord.count + end + + def edit_decommissioned + @software_record = SoftwareRecord.find(params[:id]) + end + + def update_decommissioned + @software_record = SoftwareRecord.find(params[:id]) + if @software_record.update(software_record_params) + redirect_to list_decommissioned_path, notice: 'The Software title has been re-commissioned.' + else + render :edit_decommissioned + end + end + def list_upgrades $page_title = 'Maintenance Priority| UCL Application Portfolio' @params = request.query_parameters @software_records = if @params['filter_by'].to_s == 'software_types' && !@params['software_type_filter'].nil? && !@params['software_type_filter'].empty? - SoftwareRecord.where(software_type_id: @params['software_type_filter']).order("#{sort_priority} #{sort_direction_priority}") + SoftwareRecord.joins(:status).where(software_type_id: +@params['software_type_filter']).where.not(statuses: { status_type: 'Decommissioned' }).order("#{sort_priority} #{sort_direction_priority}") elsif @params['filter_by'].to_s == 'vendor_records' && !@params['vendor_record_filter'].nil? && !@params['vendor_record_filter'].empty? - SoftwareRecord.where(vendor_record_id: @params['vendor_record_filter']).order("#{sort_priority} #{sort_direction_priority}") + SoftwareRecord.joins(:status).where(vendor_record_id: +@params['vendor_record_filter']).where.not(statuses: { status_type: 'Decommissioned' }).order("#{sort_priority} #{sort_direction_priority}") else - SoftwareRecord.order("#{sort_priority} #{sort_direction_priority}") + SoftwareRecord.joins(:status).where.not(statuses: { status_type: 'Decommissioned' }).order("#{sort_priority} +#{sort_direction_priority}") end @vendor_records = VendorRecord.all @software_types = SoftwareType.all @@ -179,12 +219,15 @@ def list_road_map @params = request.query_parameters @software_records = if @params['filter_by'].to_s == 'software_types' && !@params['software_type_filter'].nil? && !@params['software_type_filter'].empty? - SoftwareRecord.where(software_type_id: @params['software_type_filter']).order("#{sort_priority} #{sort_direction_priority}") + SoftwareRecord.joins(:status).where(software_type_id: @params['software_type_filter']).where.not(status: +'Decommissioned').order("#{sort_priority} #{sort_direction_priority}") elsif @params['filter_by'].to_s == 'vendor_records' && !@params['vendor_record_filter'].nil? && !@params['vendor_record_filter'].empty? - SoftwareRecord.where(vendor_record_id: @params['vendor_record_filter']).order("#{sort_priority} #{sort_direction_priority}") + SoftwareRecord.joins(:status).where(vendor_record_id: @params['vendor_record_filter']).where.not(status: +'Decommissioned').order("#{sort_priority} #{sort_direction_priority}") else - SoftwareRecord.order("#{sort_column} #{sort_direction}") + SoftwareRecord.joins(:status).where.not(statuses: { status_type: 'Decommissioned' }).order("#{sort_column} +#{sort_direction}") end @vendor_records = VendorRecord.all @software_types = SoftwareType.all diff --git a/app/views/shared/_dashboard_menu.html.erb b/app/views/shared/_dashboard_menu.html.erb index 46124fe7..9416218e 100644 --- a/app/views/shared/_dashboard_menu.html.erb +++ b/app/views/shared/_dashboard_menu.html.erb @@ -19,8 +19,9 @@ View all Hosting Environments View all Change Requests
<%= @software_record.title %>
+<%= sortable "title", "Title" %> + <% if params[:direction] == "asc" || params[:direction] == nil %> + + <% else %> + + <% end %> | + + <% if current_user.role.to_s == "viewer" %> +Actions | + <% elsif current_user.role.to_s == "owner" %> +Actions | + <% else %> +Actions | + <% end %> +|||
---|---|---|---|---|---|---|
<%= software_record.title %> | + <% if current_user.role.to_s == "viewer" %> +<%= link_to 'View', software_record , { :class => "btn btn-success action-btn" }%> | + <% elsif current_user.role.to_s == "owner" %> +<%= link_to 'Change Status', edit_decommissioned_software_record_path(software_record), class: "btn btn-primary action-btn", style: +"white-space: nowrap;" %> | + <% else %> +<%= link_to 'Change Status', edit_decommissioned_software_record_path(software_record), class: "btn btn-primary action-btn", style: +"white-space: nowrap;" %> | + + <% end %> +