public function index(Registration $Registration)
 {
     $registrations = $Registration->with('step', 'period', 'period.year')->orderBy('id', 'desc');
     $steps = RegistrationStep::lists('name', 'id')->toArray();
     $countries = Country::lists('name', 'id')->toArray();
     $search_fields = ['gender', 'registration_step_id', 'nationality_type', 'contact_country_id', 'social_status', 'social_job'];
     $years = AcademycycleYear::lists('name', 'id')->toArray();
     $genders = config('registration.genders');
     foreach ($search_fields as $field) {
         if (request($field)) {
             $registrations->whereIn($field, request($field));
         }
     }
     if (request('academycycle_year')) {
         $registrations->whereHas('period', function ($query) {
             $query->whereHas('year', function ($query2) {
                 $query2->whereIn('id', request('academycycle_year'));
             });
         });
     }
     if (request('national_id')) {
         $registrations->where('national_id', request('national_id'));
     }
     if (request('contact_email')) {
         $registrations->where('contact_email', request('contact_email'));
     }
     $registrations = $registrations->paginate(50);
     return view('registration::registrations.index', compact('registrations', 'steps', 'countries', 'years'));
 }
 public function form(RegistrationPeriod $PeriodModel, Country $CountryModel, Specialty $Specialty, Registration $Registration, RegistrationType $type)
 {
     $registration = $Registration->with('degrees', 'contactcountry', 'contactcity', 'contactcity.states', 'birthcountry', 'nationalitycity', 'jobcountry', 'jobcountry.cities')->find(registrar()->id);
     $specialties = $Specialty->pluck('name', 'id')->toArray();
     $registration_types = $type->pluck('title', 'id')->toArray();
     $countries = $CountryModel->all();
     $countries_list = ["" => ""] + $countries->pluck('name', 'id')->toArray();
     $codes_list = ["" => ""] + $countries->pluck('calling_code', 'id')->toArray();
     $stay_types = config('registration.stay_types');
     $social_status = ["" => ""] + config('registration.social_status');
     $social_job_status = ["" => "", 'unemployed' => 'بدون عمل', 'employed' => 'أعمل', 'retired' => 'متقاعد'];
     $years_list = ["" => ""] + array_combine(range(date("Y") - 80, date('Y')), range(date("Y") - 80, date('Y')));
     $computer_skills = ["" => "", 'very_low' => 'ضعيف جدا', 'low' => 'ضعيف', 'good' => 'جيد', 'great' => 'جيد جدا', 'excellent' => 'ممتاز'];
     $social_job_types = ["" => "", 'government' => 'عام', 'private' => 'خاص', 'free' => 'حر'];
     $social_jobs = ["" => "", 'unemployed' => 'بدون عمل', 'employed' => 'أعمل', 'retired' => 'متقاعد'];
     $references = ["" => "", 'iiswebsite' => 'موقع كلية العلوم الشرعية', 'iisewebsite' => 'موقع مركز التعليم عن بعد', 'iisfriend' => 'صديق يدرس بالكلية', 'iisefriend' => 'صديق يدرس بمركز التعليم عن بعد', 'other' => 'أخرى'];
     return view('registration::registrar.form', compact('registration', 'specialties', 'registration_types', 'period', 'years_list', 'countries', 'stay_types', 'countries_list', 'references', 'computer_skills', 'codes_list', 'social_job_types', 'social_status', 'social_jobs'));
 }
 public function actionBulk(Request $request, Registration $Registration)
 {
     $input = $request->all();
     if (empty($input['table_records'])) {
         return redirect()->route('registration.registrations.index');
     }
     $ids = $input['table_records'];
     $registration = Registration::find($ids[0]);
     $exceptions_message = '';
     switch ($input['submit']) {
         case 'delete':
             $Registration->destroy($ids);
             $message = trans('registration::registrations.delete_bulk_success');
             break;
         case 'update':
             foreach ($ids as $id) {
                 $registration = Registration::with('student')->findOrFail($id);
                 $current_step_id = $registration->registration_step_id;
                 $input = $request->all();
                 foreach ($input as $key => $value) {
                     if (empty($value)) {
                         $input[$key] = NULL;
                     }
                 }
                 if (!empty($input['registration_step_id']) and RegistrationStep::find($input['registration_step_id'])->files_done == 1) {
                     $registration->load('files');
                     if ($registration->files->whereLoose('valid', 0)->count()) {
                         $exceptions_message = 'لم يتم تغيير حالة بعض الطلبات بسبب توفرها على وثائق غير مكتملة';
                         continue;
                     }
                 }
                 $registration->fill($input);
                 if (!$registration->student and (!empty($input['registration_step_id']) and $input['registration_step_id'] != $current_step_id) and $registration->save()) {
                     event(new RegistrationStepChanged($registration, ['comment' => $input['comment'], 'notes' => request('registration_step_note_id')]));
                 }
             }
             $message = trans('registration::registrations.update_bulk_success');
             break;
     }
     $redirect = redirect()->route('registration.registrations.index', $registration->id)->with('success', $message);
     if ($exceptions_message) {
         $redirect->with('warning', $exceptions_message);
     }
     return $redirect;
 }