mumuki-domain 9.17.0 → 9.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ddb5479d7f8ddd0c1c452f6a27f67ed5423a3d0aadca123e9aebddfed06d062
4
- data.tar.gz: e135a47bc3062fd705d316fd2eb7922dc45bec56620c35ac0ada0c77eac2ebd0
3
+ metadata.gz: 58b906585eb037f9120720bf77a34555343051e1aa2c87636a86208604247c2d
4
+ data.tar.gz: ac72f7c3a8e36c388fe4cbf0c7e1e3a51620c9a2a6a333222a033dfa56ab3176
5
5
  SHA512:
6
- metadata.gz: 4a1061815ce251506c410550ee976f552e5266da914845f2ae197a89a11d0f7713a4cbcc5e8ee8fcbef92668860bfda60de3d9fb14245c378d5a74096f849e5b
7
- data.tar.gz: d20d53b94de4eda7c28b90bbb0ff095f005c60ee0631a15eb1970d8b853010e4e7f3762662c127b3c674cca0aa1f939c5c9808dfa4ce946cbdd8b973e0419e86
6
+ metadata.gz: 254fa485adb9816805590f4fc60877b8e1626f152d7e335e419ac5402079ec9bd4f30a5fd85cab712e694c10f8aeb0a9829d762bd1ec01323ccec9525981d930
7
+ data.tar.gz: 5ef6dd8ed07d02d17c9c6049371bcd50a1235e7958d9a68ea41940121ff72c2f81c17beb9b9a69b2b5d70fc4c811df0bd1181cd18ebc28efbd9676d922d8d1a1
data/app/models/exam.rb CHANGED
@@ -49,7 +49,7 @@ class Exam < ApplicationRecord
49
49
  end
50
50
 
51
51
  def accessible_for?(user)
52
- (authorized?(user) && enabled_for?(user)) || user&.teacher_here?
52
+ (authorized?(user) && enabled_for?(user)) || user&.teacher_of?(course)
53
53
  end
54
54
 
55
55
  def timed?
@@ -76,6 +76,18 @@ class ExamRegistration < ApplicationRecord
76
76
  authorization_criterion.meets_criterion?(user, organization)
77
77
  end
78
78
 
79
+ def available_exams
80
+ return exams unless limited_authorization_requests?
81
+ counts = authorization_request_ids_counts
82
+ exams.select do |it|
83
+ counts[it.id].to_i < authorization_requests_limit
84
+ end
85
+ end
86
+
87
+ def limited_authorization_requests?
88
+ authorization_requests_limit.present?
89
+ end
90
+
79
91
  def multiple_options?
80
92
  exams.count > 1
81
93
  end
@@ -84,9 +96,39 @@ class ExamRegistration < ApplicationRecord
84
96
  end_time.past?
85
97
  end
86
98
 
99
+ def request_authorization!(user, exam)
100
+ with_available_exam exam do
101
+ authorization_requests.find_or_create_by! user: user do |it|
102
+ it.assign_attributes organization: organization, exam: exam
103
+ end
104
+ end
105
+ end
106
+
107
+ def update_authorization_request_by_id!(request_id, exam)
108
+ with_available_exam exam do
109
+ authorization_requests.update request_id, exam: exam
110
+ end
111
+ end
112
+
113
+ def authorization_request_ids_counts
114
+ authorization_requests.group(:exam_id).count
115
+ end
116
+
117
+ def exam_available?(exam)
118
+ available_exams.include? exam
119
+ end
120
+
121
+ def with_available_exam(exam, &block)
122
+ transaction do
123
+ raise Mumuki::Domain::GoneError unless exam_available?(exam)
124
+ block.call
125
+ end
126
+ end
127
+
87
128
  private
88
129
 
89
130
  def notify_registree!(registree)
90
131
  Notification.create_and_notify_via_email! organization: organization, user: registree, subject: :exam_registration, target: self
91
132
  end
133
+
92
134
  end
@@ -0,0 +1,5 @@
1
+ class AddAuthorizationRequestsLimitToExamRegistration < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :exam_registrations, :authorization_requests_limit, :integer
4
+ end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Mumuki
2
2
  module Domain
3
- VERSION = '9.17.0'
3
+ VERSION = '9.18.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumuki-domain
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.17.0
4
+ version: 9.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Leonardo Bulgarelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-23 00:00:00.000000000 Z
11
+ date: 2021-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.0'
117
+ version: '1.2'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.0'
124
+ version: '1.2'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: mumukit-platform
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -686,6 +686,7 @@ files:
686
686
  - db/migrate/20210707143002_add_assignment_id_to_message.rb
687
687
  - db/migrate/20210719145706_add_new_fields_to_notifications.rb
688
688
  - db/migrate/20210803175124_add_ignored_notifications_to_users.rb
689
+ - db/migrate/20210929223144_add_authorization_requests_limit_to_exam_registration.rb
689
690
  - lib/mumuki/domain.rb
690
691
  - lib/mumuki/domain/area.rb
691
692
  - lib/mumuki/domain/engine.rb