Exemplo n.º 1
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $events = SemesterEvent::classroom()->count();
     if (!$events) {
         return redirect()->route('students.profile.index')->with('warning', trans('students::profile.classrooms.choose_classroom_expired'));
     }
     return $next($request);
 }
Exemplo n.º 2
0
 public function index()
 {
     $available_classrooms = Classroom::select('classrooms.attendees_limit', 'classrooms.name', 'classrooms.code', 'classrooms.id', 'classrooms.teacher_id', 'classrooms.subject_subject_id', 'classrooms.day', 'classrooms.hour')->join('subject_subjects as subsub', 'subsub.id', '=', 'classrooms.subject_subject_id')->join('student_subjects as stusub', function ($join) {
         $join->on('stusub.subject_id', '=', 'subsub.id')->where('stusub.student_id', '=', student()->id);
     })->whereIn('classrooms.gender', [student()->gender, 'b'])->whereHas('students', function ($query) {
         return $query->havingRaw('COUNT(students.id) < attendees_limit');
     })->whereNotIn('subject_subject_id', function ($query) {
         $query->select('classrooms.subject_subject_id')->from('classrooms')->join('classroom_students as clastud', function ($join) {
             $join->on('clastud.classroom_id', '=', 'classrooms.id')->where('clastud.student_id', '=', student()->id);
         });
     })->with('teacher', 'subject', 'students')->groupBy('teacher_id', 'subject_subject_id')->get();
     //return $available_classrooms;
     $event = SemesterEvent::classroom()->first();
     $chosen_classrooms = Classroom::whereHas('students', function ($query) {
         $query->where('students.id', student()->id);
     })->get();
     return view('students::classrooms.index', compact('available_classrooms', 'chosen_classrooms', 'event'));
 }
Exemplo n.º 3
0
 public function index()
 {
     $events = SemesterEvent::select('as.start_at', 'as.finish_at', 'as.order', 'ast.name', 'ast.category', 'ast.instructions')->join('academycycle_semesterevent_types as ast', 'ast.id', '=', 'as.type_id')->where('semester_id', $this->semester->id)->from('academycycle_semesterevents as as')->get();
     $events->each(function ($event) {
         $event->instructions = explode("\n", $event->instructions);
         switch ($event->category) {
             case 'delay':
                 $event->reasons = [['text' => '', 'title' => 'الولادة / رعاية مولود جديد'], ['text' => '', 'title' => 'المرض'], ['desc' => '(الأب، الأم، الزوج، الأخ، الأخت، الابن، الابنة)', 'title' => 'مرض أحد الأقارب من الدرجة الأولى'], ['text' => '', 'title' => 'السفر لدواعي العمل'], ['text' => '', 'title' => 'ظروف عائلية'], ['text' => '', 'title' => 'السفر لأسباب شخصية'], ['text' => '', 'title' => 'ظروف العمل'], ['text' => '', 'title' => 'اخرى']];
                 break;
             case 'withdraw':
                 $event->reasons = [['text' => '', 'title' => 'الولادة / رعاية مولود جديد'], ['text' => '', 'title' => 'المرض'], ['desc' => '(الأب، الأم، الزوج، الأخ، الأخت، الابن، الابنة)', 'title' => 'مرض أحد الأقارب من الدرجة الأولى'], ['text' => '', 'title' => 'السفر لدواعي العمل'], ['text' => '', 'title' => 'ظروف عائلية'], ['text' => '', 'title' => 'السفر لأسباب شخصية'], ['text' => '', 'title' => 'ظروف العمل'], ['text' => '', 'title' => 'اخرى']];
                 break;
             case 'quran_recording_excuses':
                 $event->reasons = [['text' => '', 'title' => 'الولادة / رعاية مولود جديد'], ['text' => '', 'title' => 'المرض'], ['desc' => '(الأب، الأم، الزوج، الأخ، الأخت، الابن، الابنة)', 'title' => 'مرض أحد الأقارب من الدرجة الأولى'], ['text' => '', 'title' => 'السفر لدواعي العمل'], ['text' => '', 'title' => 'ظروف عائلية'], ['text' => '', 'title' => 'السفر لأسباب شخصية'], ['text' => '', 'title' => 'ظروف العمل'], ['text' => '', 'title' => 'اخرى']];
                 break;
             default:
                 $event->reasons = [];
                 break;
         }
     });
     return response()->json($events, 200, [], JSON_NUMERIC_CHECK);
 }
Exemplo n.º 4
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if (student()) {
         $menu = Menu::make('StudentSidebarMenu', function ($menu) {
         });
         $menu->add('الرئيسية', ['route' => 'students.profile.index'])->data('order', 1)->prepend('<i class="fa fa-home"></i>');
         $events = SemesterEvent::classroom()->count();
         if ($events) {
             $menu->add(trans(trans('students::profile.classrooms.choose_sessions_classrooms')), ['route' => 'students.profile.classrooms.index'])->prepend('<i class="fa fa-bell animated infinite swing"></i>')->data('order', 1);
         }
         $centers = ExamCenterPeriod::where('start_at', '<', date('Y-m-d H:i:s'))->where('finish_at', '>', date('Y-m-d H:i:s'))->where('semester_id', semester()->id)->count();
         if ($centers) {
             $menu->add(trans(trans('students::profile.exams.choose_exam_center')), ['route' => 'students.profile.centers.index'])->prepend('<i class="fa fa-bell animated infinite swing"></i>')->data('order', 2);
         }
         $menu->add(trans('students::profile.subjects.header'), ['route' => 'students.profile.subjects.index'])->data('order', 10)->prepend('<i class="fa fa-briefcase"></i>');
         $menu->add(trans('students::profile.sessions.header'), ['route' => 'students.profile.sessions.index'])->data('order', 20)->prepend('<i class="fa fa-video-camera"></i>');
         $menu->add(trans('students::profile.tickets.header'), ['route' => 'students.profile.tickets.index'])->data('order', 30)->prepend('<i class="fa fa-comment"></i>');
         $menu->add(trans('orders::order.menu'), ['route' => 'orders.index'])->prepend('<i class="fa fa-pencil-square-o"></i>');
         $menu->add(trans('الأسئلة الشائعة'), ['route' => 'students.faq.index'])->data('order', 40)->prepend('<i class="fa fa-briefcase"></i>');
     }
     return $next($request);
 }
Exemplo n.º 5
0
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     Year::created(function ($year) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'year', 'reference_id' => $year->id]);
     });
     Year::updated(function ($year) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'year', 'reference_id' => $year->id]);
     });
     Year::deleted(function ($year) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'year', 'reference_id' => $year->id]);
     });
     Semester::created(function ($semester) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semester', 'reference_id' => $semester->id]);
     });
     Semester::updated(function ($semester) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semester', 'reference_id' => $semester->id]);
     });
     Semester::deleted(function ($semester) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semester', 'reference_id' => $semester->id]);
     });
     SemesterEvent::created(function ($semesterEvent) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semesterEvent', 'reference_id' => $semesterEvent->id]);
     });
     SemesterEvent::updated(function ($semesterEvent) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semesterEvent', 'reference_id' => $semesterEvent->id]);
     });
     SemesterEvent::deleted(function ($semesterEvent) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semesterEvent', 'reference_id' => $semesterEvent->id]);
     });
     SemesterEventType::created(function ($semesterEventType) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semesterEventType', 'reference_id' => $semesterEventType->id]);
     });
     SemesterEventType::updated(function ($semesterEventType) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semesterEventType', 'reference_id' => $semesterEventType->id]);
     });
     SemesterEventType::deleted(function ($semesterEventType) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'semesterEventType', 'reference_id' => $semesterEventType->id]);
     });
 }
Exemplo n.º 6
0
 public function getBeforeMidExamCertificate($background = false)
 {
     $student = Student::select('students.*')->joinTermName()->findOrFail($this->student_id);
     $exams = Exam::inCurrentSemester()->ofStudent($this->student_id)->select('ss.name', 'exams.start_at', 'exams.finish_at')->where('exams.type', 'midterm')->where('exams.active', 1)->groupBy('exams.id')->get();
     // dd($exams->toArray());
     $event = SemesterEvent::ofType('mid_term_test')->inSemester()->first();
     if (!$event) {
         return false;
     }
     $pdf = $this->preparePdf($background);
     // ---- >
     $html = '<h2>إلى من يهمه الأمر</h2>';
     $pdf->writeHTMLCell(210, 20, 0, 50, $html, 0, 0, false, true, "C");
     $pdf->SetFontSize(12);
     $html = 'بتاريخ : ' . Date::now()->format('l d F Y');
     $pdf->writeHTMLCell(60, 10, 150, 40, $html, 0, 0, false, true, "C");
     $pdf->SetFontSize(15, 'B');
     $html = '<table cellpadding="3">
   <tr><td align="right">إسم لطالب</td><td align="right">' . $student->name . '</td></tr>
   <tr><td align="right">الرقم الجامعي</td><td align="right">' . $student->code . '</td></tr>
   <tr><td align="right">تاريخ الإلتحاق</td><td align="right">' . Date::parse($student->created_at)->format('l d F Y') . '</td></tr>
   <tr><td align="right">السنة الدراسية</td><td align="right">' . $student->year_name . '</td></tr>
 </table>';
     $pdf->writeHTMLCell(100, 20, 10, 80, $html, 0, 0, false, true, "R");
     $pdf->SetFontSize(15, 'B');
     $pdf->writeHTMLCell(170, 20, 20, 125, view('students::documents._beforemidexamcertificate', compact('event', 'exams', 'student'))->render(), 0, 0, false, true, "R");
     $html = "<div>\nوقد أعطي له هذا الخطاب بناء على طلبه دون أدنى مسئولية على المركز.\n</div>\n<div>\nوتفضلوا بقبول وافر التحية\n</div>";
     $pdf->SetFontSize(20, 'B');
     $pdf->writeHTMLCell(130, 5, 38, 170, $html, 0, 0, false, true, "C");
     $pdf->SetFontSize(15, 'B');
     $html = '<table border="0" width="100%"><tbody><tr><td>القبول والتسجيل</td></tr>
 <tr><td>مركز التعليم عن بعد - كلية العلوم الشرعية</td></tr></tbody></table>';
     $pdf->writeHTMLCell(130, 5, 100, 250, $html, 0, 0, false, true, "C");
     ob_clean();
     return $pdf;
 }
Exemplo n.º 7
0
 public function classrooms($student_id = 0)
 {
     $student = Student::find($student_id);
     $available_classrooms = Classroom::select('classrooms.attendees_limit', 'classrooms.name', 'classrooms.code', 'classrooms.id', 'classrooms.teacher_id', 'classrooms.subject_subject_id', 'classrooms.day', 'classrooms.hour')->join('student_subjects as stusub', function ($join) use($student) {
         $join->on('stusub.subject_id', '=', 'classrooms.subject_subject_id')->where('stusub.state', '=', 'study')->where('stusub.student_id', '=', $student->id);
     })->whereIn('classrooms.gender', [$student->gender, 'b'])->whereHas('students', function ($query) use($student) {
         return $query->havingRaw('COUNT(students.id) < attendees_limit');
     })->whereNotIn('subject_subject_id', function ($query) use($student) {
         $query->select('classrooms.subject_subject_id')->from('classrooms')->join('classroom_students as clastud', function ($join) use($student) {
             $join->on('clastud.classroom_id', '=', 'classrooms.id')->where('clastud.student_id', '=', $student->id);
         });
     })->with('teacher', 'subject', 'students')->groupBy('classrooms.id')->get();
     //return $available_classrooms;
     $event = SemesterEvent::classroom()->first();
     $chosen_classrooms = Classroom::whereHas('students', function ($query) use($student) {
         $query->where('students.id', $student->id);
     })->get();
     // // dd($student->id);
     // # code...
     // $studentcalss = Student::with('classrooms','subjects')->where('id',$student->id)->first();
     // // dd($studentcalss);
     //    $subjects = Subject::with('classroom')->Student($student->id)->get();
     //    // $classrooms = $studentcalss->classrooms->pluck('subject_subject_id' ,'name' )->toArray();
     //    // dd($subjects);
     //    // $subjects = $studentcalss;
     //    // dd($studentcalss);
     return view('students::subjects.classroom', compact('available_classrooms', 'chosen_classrooms', 'event', 'subjects', 'student', 'classrooms', 'studentcalss'));
 }
Exemplo n.º 8
0
 public function create($event_type, $type, SemesterEvent $SemesterEvent)
 {
     $current_semester_id = semester()->id;
     $student_id = student()->id;
     $semesters = Semester::with('year')->get();
     $semester_id = [];
     /////////////////////////////////////delay/////////////////////////////
     if ($event_type == 'delay') {
         // get delay order period
         //dd($semesters);
         $delay_semester_events = $SemesterEvent->where('semester_id', '=', $current_semester_id)->whereHas('event_type', function ($query) {
             $query->where('academycycle_semesterevent_types.category', 'delay');
         })->first();
         // get delay order for student in current semeter if exist and not refuse or cancel
         $delayOrders = new DelayOrders();
         $student_delay_order = $delayOrders->where('semester_id', '=', $current_semester_id)->where('student_id', '=', $student_id)->whereNotIn('state', array('الغاء بناء على طلب الطالب', 'الغاء لعدم الاستكمال', 'رفض'))->first();
         if ($student_delay_order and $type == 0) {
             return redirect()->route('student.orders.list', $event_type);
         } else {
             //check if period available
             if ($type == 0) {
                 foreach ($semesters as $semester) {
                     if ($semester->active == 1) {
                         $semester_id[$semester->id] = $semester->year->name . " --  " . $semester->name;
                     }
                 }
                 return view('orders::delay.create', compact('semester_id'));
             } elseif ($type == '1') {
                 // bring all semester
                 foreach ($semesters as $semester) {
                     $semester_id[$semester->id] = $semester->year->name . " --  " . $semester->name;
                 }
                 return view('orders::delay.create', compact('semester_id'));
             } else {
                 return redirect()->route('orders.index');
             }
         }
         //////////////////////////////////////withdraw/////////////////////////////
     } elseif ($event_type == 'withdraw') {
         // get delay order period
         $withdraw_semester_events = $SemesterEvent->where('semester_id', '=', $current_semester_id)->whereHas('event_type', function ($query) {
             $query->where('academycycle_semesterevent_types.category', 'withdraw');
         })->first();
         // get withdraw order for student in current semeter if exist and not refuse or cancel
         $withdrawOrders = new WithdrawOrders();
         $student_withdraw_order = $withdrawOrders->where('semester_id', '=', $current_semester_id)->where('student_id', '=', $student_id)->whereNotIn('state', array('الغاء بناء على طلب الطالب', 'الغاء لعدم الاستكمال', 'رفض'))->first();
         if ($student_withdraw_order) {
             return redirect()->route('student.orders.list', $event_type);
         } else {
             //check if period available
             if ($type == 0) {
                 foreach ($semesters as $semester) {
                     if ($semester->active == 1) {
                         $semester_id[$semester->id] = $semester->year->name . " --  " . $semester->name;
                     }
                 }
                 return view('orders::withdraw.create', compact('semester_id'));
             } elseif ($type == '1') {
                 //  all semester
                 foreach ($semesters as $semester) {
                     $semester_id[$semester->id] = $semester->year->name . " --  " . $semester->name;
                 }
                 return view('orders::withdraw.create', compact('semester_id'));
             } else {
                 return redirect()->route('orders.index');
             }
         }
         /////////////////////////////////////Equal/////////////////////////////
     } elseif ($event_type == 'equal_subject') {
         // get equal_subject order period
         $equal_subject_semester_events = $SemesterEvent->where('semester_id', '=', $current_semester_id)->whereHas('event_type', function ($query) {
             $query->where('academycycle_semesterevent_types.category', 'equal_subject');
         })->first();
         // get delay order for student in current semeter if exist and not review
         $equalOrders = new EqualOrders();
         $student_equal_subject_order = $equalOrders->where('semester_id', '=', $current_semester_id)->where('student_id', '=', $student_id)->whereNotIn('state', array('الغاء بناء على طلب الطالب', 'الغاء لعدم الاستكمال', 'رفض', 'مكتمل'))->first();
         if ($student_equal_subject_order) {
             return redirect()->route('student.orders.list', $event_type);
         } else {
             //check if period available
             //if($equal_subject_semester_events->start_at <= date("Y-m-d") && $equal_subject_semester_events->finish_at >= date("Y-m-d")){
             $country_list = Country::pluck('name', 'id')->toArray();
             return view('orders::equal.create', compact('country_list'));
             //}else{
             //return redirect()->route('orders.index');
             //}
         }
         ///////////////////////////////////////////excuse/////////////////////////////
     } elseif ($event_type == 'excuse') {
         // same same
         return view('orders::delay.excuse');
     }
 }
Exemplo n.º 9
0
 public function ac_print($semester_id)
 {
     $sem_events = SemEvent::where('semester_id', $semester_id)->with('event_type')->orderBy('order')->get();
     //return $sem_events;
     $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
     $pdf->SetFont('dejavusans', '', 6, '', 'false');
     $pdf->setRTL('enable', $resetx = true);
     $pdf->SetPrintHeader(false);
     $pdf->SetPrintFooter(true);
     $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
     $pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
     $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
     $pdf->startPageGroup();
     $pdf->AddPage();
     $pdf->writeHTML(view('academycycle::semesterevents.print', compact('sem_events'))->render());
     $filename = 'academycycle.pdf';
     ob_clean();
     $pdf->output($filename, 'D');
     return redirect()->back();
     //return redirect()->back()->with('success', trans('exams::exams.download_success'));
 }