ministryofjustice/Claim-for-Crown-Court-Defence

View on GitHub
app/views/shared/_determinations_form.html.haml

Summary

Maintainability
Test Coverage
= form_for(claim, url: case_workers_claim_path(claim), as: :claim) do |f|
  = hidden_field_tag :messages, 'true'
  .fx-assesment-hook
    #claim-status
      %h2#radio-control-heading.govuk-heading-l{ 'aria-describedby': 'radio-control-heading radio-control-legend' }
        = t('.assessment_summary')

      - if current_user_is_caseworker?
        .js-cw-claim-action
          = f.govuk_radio_buttons_fieldset(:state, legend: { text: t('.update_the_claim_status') }, inline: true) do
            - claim.valid_transitions_for_detail_form.each do |key, label|
              .multiple-choice
                = f.govuk_radio_button :state, key, label: { text: label }, checked: params['claim'].present? && params['claim']['state']&.to_sym == key
          %div
            = validation_error_message(@error_presenter, :determinations)

      = govuk_table( id: 'determinations', class: 'js-cw-claim-assessment', data: { apply_vat: "#{claim.apply_vat}", vat_url: vat_path(format: :json), submitted_date: claim.vat_date(:db), scheme: claim.agfs? ? 'agfs' : 'lgfs' }) do
        = govuk_table_caption(class: 'govuk-visually-hidden') do
          %h3.govuk-heading-m
            = t('.assessment_summary')

        = govuk_table_thead do
          = govuk_table_row do
            = govuk_table_th do
              = t('shared.description')

            = govuk_table_th_numeric do
              = t('shared.determinations_table.claimed_by', type: claim.external_user_description)

            = govuk_table_th_numeric do
              = t('shared.determinations_table.laa_heading')
              - if claim.opened_for_redetermination?
                .govuk-hint= t('.laa_heading_hint')

        = govuk_table_tbody do
          // CASEWORKER
          - if current_user_is_caseworker? && @claim.enable_assessment_input?
            // ASSESSMENT INPUT
            = f.fields_for :assessment do |af|
              = render partial: 'case_workers/claims/determination_fields', locals: { f: af, claim: claim }

          - elsif current_user_is_caseworker? && @claim.enable_determination_input?
            // DETERMINATION INPUT
            = f.fields_for :redeterminations, claim.redeterminations.build do |rf|
              = render partial: 'case_workers/claims/determination_fields', locals: { f: rf, claim: claim }

          - elsif claim.redeterminations.any?
            // REDETERMINATION
            = render partial: 'shared/determination_amounts', locals: { claim: claim, determination: claim.redeterminations.last }

          - else
            // ELSE
            = render partial: 'shared/determination_amounts', locals: { claim: claim, determination: claim.assessment }

    // CASE WORKER ACTIONS
    - if current_user_is_caseworker?
      .js-cw-claim-rejection-reasons.hidden{ class: error_class(@error_presenter, :rejected_reason) }
        %div
          = validation_error_message(@error_presenter, :rejected_reason)
        %a#rejected_reason
        = f.govuk_check_boxes_fieldset :state_reason, legend: { text: t('.reason_for_rejection') } do
          - ClaimStateTransitionReason.reject_reasons_for(@claim).each do |reason|
            .multiple-choice
              - if reason.code == 'other'
                = f.govuk_check_box :state_reason,
                  reason.code,
                  checked: params[:claim].present? && params[:claim][:state_reason].include?(reason.code),
                  label: { text: reason.description } do
                  %a#rejected_reason_other
                  = f.govuk_text_field :reject_reason_text,
                    label: { text: t('.reason_text') },
                    hint: { text: t('.reason_hint') }
                  %div
                    = validation_error_message(@error_presenter, :rejected_reason_other)
              - else
                = f.govuk_check_box :state_reason,
                  reason.code,
                  checked: params[:claim].present? && params[:claim][:state_reason].include?(reason.code),
                  label: { text: reason.description }

      .js-cw-claim-refuse-reasons.hidden{ class: error_class(@error_presenter, :refused_reason) }
        %div
          = validation_error_message(@error_presenter, :refused_reason)
        %a#refused_reason
        = f.govuk_check_boxes_fieldset :state_reason, legend: { text: t('.reason_for_refusal') } do
          - ClaimStateTransitionReason.refuse_reasons_for(@claim).each do |reason|
            .multiple-choice
              - if reason.code == 'other_refuse'
                = f.govuk_check_box :state_reason,
                  reason.code,
                  checked: params[:claim].present? && params[:claim][:state_reason].include?(reason.code),
                  label: { text: reason.description } do
                  %a#refused_reason_other
                  = f.govuk_text_field :refuse_reason_text,
                    label: { text: t('.reason_text') },
                    hint: { text: t('.reason_hint') }
                  %div
                    = validation_error_message(@error_presenter, :refused_reason_other)
              - else
                = f.govuk_check_box :state_reason,
                  reason.code,
                  checked: params[:claim].present? && params[:claim][:state_reason].include?(reason.code),
                  label: { text: reason.description }


      %p
        = govuk_button(t('.update'), id: 'button')