@@ -17,6 +17,8 @@ def after_insert(self):
1717 def validate (self ):
1818 self .validate_owner ()
1919 self .validate_duplicate_members ()
20+ self .validate_payment ()
21+ self .validate_self_enrollment ()
2022 self .validate_seat_availability ()
2123 self .validate_course_enrollment ()
2224
@@ -28,6 +30,32 @@ def validate_owner(self):
2830 if "Moderator" not in roles and "Batch Evaluator" not in roles :
2931 frappe .throw (_ ("You must be a Moderator or Batch Evaluator to enroll users in a batch." ))
3032
33+ def validate_payment (self ):
34+ paid_batch = frappe .db .get_value ("LMS Batch" , self .batch , "paid_batch" )
35+ if paid_batch :
36+ payment = frappe .db .exists (
37+ "LMS Payment" ,
38+ {
39+ "payment_for_document_type" : "LMS Batch" ,
40+ "payment_for_document" : self .batch ,
41+ "member" : self .member ,
42+ "payment_received" : True ,
43+ },
44+ )
45+ if not payment :
46+ frappe .throw (_ ("Payment is required to enroll in this batch." ))
47+ else :
48+ self .payment = payment
49+
50+ def validate_self_enrollment (self ):
51+ allow_self_enrollment = frappe .db .get_value ("LMS Batch" , self .batch , "allow_self_enrollment" )
52+ if not allow_self_enrollment and not self .is_admin ():
53+ frappe .throw (_ ("Enrollment in this batch is restricted. Please contact the Administrator." ))
54+
55+ def is_admin (self ):
56+ roles = frappe .get_roles (frappe .session .user )
57+ return "Course Creator" in roles or "Moderator" in roles or "Batch Evaluator" in roles
58+
3159 def validate_duplicate_members (self ):
3260 if frappe .db .exists (
3361 "LMS Batch Enrollment" ,
@@ -52,6 +80,7 @@ def validate_course_enrollment(self):
5280 enrollment = frappe .new_doc ("LMS Enrollment" )
5381 enrollment .course = course .course
5482 enrollment .member = self .member
83+ enrollment .enrollment_from_batch = self .batch
5584 enrollment .save ()
5685
5786 def add_member_to_live_class (self ):
0 commit comments