| 
						
						
							
								
							
						
						
					 | 
					@ -6,7 +6,8 @@ publicWidget.registry.OnlineApplication = publicWidget.Widget.extend({ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    selector: '#online_appl_form', | 
					 | 
					 | 
					    selector: '#online_appl_form', | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    events: { | 
					 | 
					 | 
					    events: { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        'change select[name="course"]': '_onCourseChange', | 
					 | 
					 | 
					        'change select[name="course"]': '_onCourseChange', | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        'change select[name="department"]': '_onDepartmentChange', | 
					 | 
					 | 
					        'change select[name="semester"]': '_onSemesterChange', | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        'submit form': '_onFormSubmit', | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    }, | 
					 | 
					 | 
					    }, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					     init() { | 
					 | 
					 | 
					     init() { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        this._super(...arguments); | 
					 | 
					 | 
					        this._super(...arguments); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -16,27 +17,46 @@ publicWidget.registry.OnlineApplication = publicWidget.Widget.extend({ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ev.preventDefault(); | 
					 | 
					 | 
					        ev.preventDefault(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        var self = this | 
					 | 
					 | 
					        var self = this | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        var course = ev.currentTarget.value; | 
					 | 
					 | 
					        var course = ev.currentTarget.value; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        self.$el.find('select[name="department"]').find('option').remove() | 
					 | 
					 | 
					        self.$el.find('select[name="semester"]').find('option').remove() | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        self.$el.find('select[name="department"]').append("<option value=0></option>"); | 
					 | 
					 | 
					        self.$el.find('select[name="semester"]').append("<option value=0></option>"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					         self.$el.find('select[name="department"]').append("<option value=0></option>"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          const result = await this.orm.searchRead( | 
					 | 
					 | 
					          const result = await this.orm.searchRead( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            'university.department', | 
					 | 
					 | 
					            'university.semester', | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					            [['course_id', '=', parseInt(course)]],['name'] | 
					 | 
					 | 
					            [['department_id.course_id', '=', parseInt(course)]],['name'] | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        ) | 
					 | 
					 | 
					        ) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					         result.forEach(function(item){ | 
					 | 
					 | 
					         result.forEach(function(item){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    self.$el.find('select[name="department"]').append("<option value=" + item['id'] + ">" +item['name'] + "</option>"); | 
					 | 
					 | 
					                    self.$el.find('select[name="semester"]').append("<option value=" + item['id'] + ">" +item['name'] + "</option>"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                }) | 
					 | 
					 | 
					                }) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        }, | 
					 | 
					 | 
					        }, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					      async _onDepartmentChange(ev){ | 
					 | 
					 | 
					    async _onSemesterChange(ev){ | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        var self = this | 
					 | 
					 | 
					        var self = this | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        var department = ev.currentTarget.value; | 
					 | 
					 | 
					        var semester = ev.currentTarget.value; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        self.$el.find('select[name="semester"]').find('option').remove() | 
					 | 
					 | 
					        self.$el.find('select[name="department"]').find('option').remove() | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        self.$el.find('select[name="semester"]').append("<option value=0></option>"); | 
					 | 
					 | 
					        self.$el.find('select[name="department"]').append("<option value=0></option>"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					         const result = await this.orm.searchRead( | 
					 | 
					 | 
					         const result = await this.orm.searchRead( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            'university.semester', | 
					 | 
					 | 
					            'university.department', | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					            [['department_id', '=', parseInt(department)]],['name'] | 
					 | 
					 | 
					            [['semester_ids', 'in', [parseInt(semester)]]],['name'] | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        ) | 
					 | 
					 | 
					        ) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        result.forEach(function(item){ | 
					 | 
					 | 
					        result.forEach(function(item){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    self.$el.find('select[name="semester"]').append("<option value=" + item['id'] + ">" +item['name'] + "</option>"); | 
					 | 
					 | 
					                    self.$el.find('select[name="department"]').append("<option value=" + item['id'] + ">" +item['name'] + "</option>"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                }) | 
					 | 
					 | 
					                }) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					      } | 
					 | 
					 | 
					      }, | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    _onFormSubmit(ev) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ev.preventDefault(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        // Validate fields
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        const course = this.$('select[name="course"]').val(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        const semester = this.$('select[name="semester"]').val(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        const department = this.$('select[name="department"]').val(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if (!course || !semester || department==0) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            // If any required field is empty, show validation error
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            this._displayErrorMessage('Some Fields are Empty!'); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            return; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ev.currentTarget.submit(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    }, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    _displayErrorMessage(message) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        // Display error message near the submit button or form
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        const errorMessage = `<div class="alert alert-danger" role="alert">${message}</div>`; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        this.$('.form-error-message').html(errorMessage); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    }, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					}) | 
					 | 
					 | 
					}) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					
  |