KyivKrishnaAcademy/ved_akadem_students

View on GitHub
app/interactions/ui/examination_result_updating_interaction.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
40%
module Ui
  class ExaminationResultUpdatingInteraction < BaseInteraction
    def init
      @status = resource.valid? ? :ok : :unprocessable_entity

      resource.save
      increment_indirect_counters
    end

    def as_json(_opts = {})
      @as_json ||= if resource.valid? && resource.persisted?
        {
          examinationResult: {
            id: resource.id,
            score: resource.score,
            examinationId: resource.examination_id,
            studentProfileId: resource.student_profile_id
          }
        }
      else
        errors_json(resource)
      end
    end

    def increment_indirect_counters
      return unless resource.id_previously_changed?

      Course.update_counters(resource.course.id, examination_results_count: 1)
    end
  end
end