initial commit
This commit is contained in:
273
src/Controller/LearninghubController.php
Normal file
273
src/Controller/LearninghubController.php
Normal file
@@ -0,0 +1,273 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
|
||||
use App\Model\Entity\Log;
|
||||
use Cake\I18n\FrozenTime;
|
||||
use Cake\Database\Expression\QueryExpression;
|
||||
use Cake\I18n\FrozenDate;
|
||||
|
||||
|
||||
/**
|
||||
* Student Controller
|
||||
*
|
||||
* @property \App\Model\Table\FeedBacksTable $Feedbacks
|
||||
* @property \App\Model\Table\StudentsTable $Students
|
||||
* @property \App\Model\Table\StudentSessionsTable $StudentSessions
|
||||
* @property \App\Model\Table\StudentCoursesTable $StudentCourses
|
||||
* @property \App\Model\Table\CoursesTable $Courses
|
||||
* @property \App\Model\Table\SessionsTable $Sessions
|
||||
* @property \App\Model\Table\PersonalizesTable $Personalizes
|
||||
* @property \App\Model\Table\AgentsTable $Agents
|
||||
* @property \App\Model\Table\CourseSemesterFeesTable $CourseSemesterFees
|
||||
* @property \App\Model\Table\CourseSemesterSubjectsTable $CourseSemesterSubjects
|
||||
*/
|
||||
class LearninghubController extends AppController
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
}
|
||||
public function about()
|
||||
{
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
}
|
||||
public function acreditation()
|
||||
{
|
||||
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
}
|
||||
public function accomodation()
|
||||
{
|
||||
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
}
|
||||
public function applicationProcess()
|
||||
{
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
|
||||
}
|
||||
public function applyForm()
|
||||
{
|
||||
|
||||
$this->loadModel('Students');
|
||||
$this->loadModel('StudentSessions');
|
||||
$this->loadModel('StudentCourses');
|
||||
$this->loadModel('Courses');
|
||||
$this->loadModel('Sessions');
|
||||
$sessions = $this->Sessions->find('list', [
|
||||
'keyField' => 'id',
|
||||
'valueField' => 'name'
|
||||
])->where(['status'=>1])->toArray();
|
||||
$courses = $this->Courses->find('list', [
|
||||
'keyField' => 'id',
|
||||
'valueField' => 'name'
|
||||
])->where(['status'=>1])->toArray();
|
||||
|
||||
if ($this->request->is('post')) {
|
||||
|
||||
$student = $this->Students->newEntity();
|
||||
$student_request = $this->request->getData();
|
||||
$student_request['date_of_birth'] = $student_request["date_year"]."-".$student_request["date_month"]."-".$student_request["date_day"];
|
||||
// $student_request['reference_number'] = STUDENT_ID_PREFIX . time() . rand(0, 9999);
|
||||
$student = $this->Students->patchEntity($student, $student_request);
|
||||
$student['updated_at'] = FrozenTime::now();
|
||||
$student['created_at'] = FrozenTime::now();
|
||||
$student['current_checklist_id'] = 1;
|
||||
$errors = $student->errors();
|
||||
|
||||
if (empty($errors)) {
|
||||
if ($this->Students->save($student)) {
|
||||
|
||||
$student_session = $this->StudentSessions->newEntity();
|
||||
$student_session_request['student_id'] = $student['id'];
|
||||
$student_session_request['session_id'] = $student_request['session_id'];
|
||||
$student_session = $this->StudentSessions->patchEntity($student_session, $student_session_request);
|
||||
$this->StudentSessions->save($student_session);
|
||||
|
||||
$student_course = $this->StudentCourses->newEntity();
|
||||
$student_course_request['student_id'] = $student['id'];
|
||||
$student_course_request['course_id'] = $student_request['course_id'];
|
||||
$student_course_request['enrollment_date'] = FrozenTime::now();
|
||||
$student_course = $this->StudentCourses->patchEntity($student_course, $student_course_request);
|
||||
$this->StudentCourses->save($student_course);
|
||||
|
||||
$session = $sessions[$student_request['session_id']];
|
||||
$course = $courses[$student_request['course_id']];
|
||||
$this->registration_email($student,$session,$course);
|
||||
|
||||
$this->Flash->success(__('Registration Successful!'));
|
||||
}
|
||||
}else {
|
||||
$errorMessages = [];
|
||||
foreach ($errors as $field => $fieldErrors) {
|
||||
foreach ($fieldErrors as $error) {
|
||||
$errorMessages[] = ucfirst($field) . ': ' . $error;
|
||||
}
|
||||
}
|
||||
$allErrors = implode(' ', $errorMessages);
|
||||
$this->log(['request'=> $this->request->getData(),'Student Registration failed'=> $errors]);
|
||||
$this->Flash->error(__($allErrors), ['escape' => false]);
|
||||
}
|
||||
}
|
||||
$this->set(compact('sessions','courses'));
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
|
||||
}
|
||||
public function courses()
|
||||
{
|
||||
$this->loadModel('Courses');
|
||||
$courses = $this->Courses->find('all')
|
||||
->contain(['CourseCategories', 'QualificationTypes'])
|
||||
->where(['Courses.status' => 1, 'Courses.course_category_id !=' => ENGLISH_COURSE_CATEGORY_ID]);
|
||||
$this->set(compact('courses'));
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
|
||||
}
|
||||
public function verification()
|
||||
{
|
||||
$message = '';
|
||||
$student = [];
|
||||
|
||||
if ($this->request->is('post')) {
|
||||
|
||||
$this->loadModel('Students');
|
||||
$this->loadModel('StudentSessions');
|
||||
$this->loadModel('StudentCourses');
|
||||
$this->loadModel('Courses');
|
||||
$this->loadModel('Sessions');
|
||||
$student_request = $this->request->getData();
|
||||
$dateOfBirth = FrozenDate::createFromFormat('d-m-Y', $student_request['date_of_birth']);
|
||||
$student = $this->Students->find()
|
||||
->select(['id', 'reference_number', 'first_name', 'surname', 'nationality','passport_number','date_of_birth'])
|
||||
->where(['status' => 1,'current_checklist_id'=>7, 'reference_number' => $student_request['reference_number'], 'date_of_birth' => $dateOfBirth ])
|
||||
->first();
|
||||
|
||||
$student_session = $this->StudentSessions->find()
|
||||
->select(['id','session_id'])
|
||||
->where(['student_id' => $student['id']])
|
||||
->first();
|
||||
|
||||
|
||||
$student_course = $this->StudentCourses->find()
|
||||
->select(['id','course_id'])
|
||||
->where(['student_id' => $student['id']])
|
||||
->first();
|
||||
|
||||
$session = $this->Sessions->find()
|
||||
->where(['id' => $student_session['session_id']])
|
||||
->first();
|
||||
|
||||
$course = $this->Courses->find()
|
||||
->where(['id' => $student_course['course_id']])
|
||||
->first();
|
||||
|
||||
if(empty($student)){
|
||||
$message = "Sorry! You have not been enrolled ";
|
||||
}
|
||||
$this->set(compact('student','session','course','message'));
|
||||
}
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
|
||||
}
|
||||
public function contact()
|
||||
{
|
||||
if ($this->request->is('post')) {
|
||||
$this->loadModel('Feedbacks');
|
||||
$request = $this->request->getData();
|
||||
$feedback = $this->Feedbacks->newEntity();
|
||||
$feedback = $this->Feedbacks->patchEntity($feedback, $request);
|
||||
$errors = $feedback->errors();
|
||||
$feedback['created_at'] = FrozenTime::now();
|
||||
if (empty($errors)) {
|
||||
if ($this->Feedbacks->save($feedback)) {
|
||||
$this->Flash->success(__('Thank you for contacting us!'));
|
||||
return $this->redirect(['action' => 'contact']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
|
||||
}
|
||||
private function registration_email($student,$session,$course){
|
||||
$this->loadModel('Personalizes');
|
||||
$personalize = $this->Personalizes->find()->where(['member_id'=> DEFAULT_MEMBER_ID])->first();
|
||||
$template_content = array(
|
||||
'student_name' => $student['title'].' '.$student['first_name'],
|
||||
'student_email' => $student['email'],
|
||||
'phone_number' => $student['phone_number'],
|
||||
// 'reference_number' => $student['reference_number'],
|
||||
'course_name' => $course,
|
||||
'registration_date' => $student['created_at']->i18nFormat('dd MMMM yyyy')
|
||||
);
|
||||
|
||||
$this->sendEmail(MANDRILL_TEMPLATE_STUDENT_CONFIRMATION, $template_content, $student->email, 'Registration Confirmation', "", $personalize);
|
||||
$this->sendEmail(MANDRILL_TEMPLATE_STUDENT_CONFIRMATION_FOR_ADMIN, $template_content, ADMIN_EMAIL_LEARNING_HUB, 'Registration Confirmation', "", $personalize);
|
||||
}
|
||||
|
||||
public function agent()
|
||||
{
|
||||
$this->loadModel('Agents');
|
||||
$agents = $this->Agents->find('all');
|
||||
$this->set(compact('agents'));
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
}
|
||||
|
||||
public function viewCourses($slug)
|
||||
{
|
||||
|
||||
$slug = str_replace('-', ' ', $slug);
|
||||
|
||||
$this->loadModel('Courses');
|
||||
$this->loadModel('CourseSemesterFees');
|
||||
$this->loadModel('CourseSemesterSubjects');
|
||||
$course = $this->Courses->find()
|
||||
->where(function (QueryExpression $exp) use ($slug) {
|
||||
return $exp->eq(
|
||||
'LOWER(Courses.name)',
|
||||
strtolower($slug)
|
||||
);
|
||||
})
|
||||
->andWhere(['Courses.status' => 1])
|
||||
->contain(['CourseCategories', 'QualificationTypes'])
|
||||
->first();
|
||||
$course_fee = $this->CourseSemesterFees->find()
|
||||
->where(['course_id' => $course->id])
|
||||
->first();
|
||||
|
||||
$course_subjects = $this->CourseSemesterSubjects->find()
|
||||
->where(['course_id' => $course->id])->all();
|
||||
|
||||
$mandatoryCount =0 ;
|
||||
$optionalCount =0;
|
||||
if(!empty($course_subjects)) {
|
||||
$mandatoryCount = collection($course_subjects)
|
||||
->filter(function ($subject) {
|
||||
return !empty($subject['is_mandatory']) && $subject['is_mandatory'] == 1;
|
||||
})
|
||||
->count();
|
||||
$optionalCount = collection($course_subjects)
|
||||
->filter(function ($subject) {
|
||||
return !empty($subject['is_mandatory']) && $subject['is_mandatory'] == 2;
|
||||
})
|
||||
->count();
|
||||
}
|
||||
|
||||
$this->set(compact('course', 'course_fee', 'course_subjects','mandatoryCount','optionalCount'));
|
||||
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
}
|
||||
|
||||
public function viewEnglishCourses()
|
||||
{
|
||||
$this->viewBuilder()->layout("customer_layout");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user