/home/techb158/ileadtechnology.com/SSM/app/Repositories/communication
NameSizeModeActions
CommunicationRepository.php181010644editdlrm
EmailRepository.php95950644editdlrm
MeetingRepository.php294230644editdlrm
PushNotificationRepository.php96930644editdlrm
SMSRepository.php99010644editdlrm
Edit: /home/techb158/ileadtechnology.com/SSM/app/Repositories/communication/SMSRepository.php (9901B)
employee_category = $employee_category; $this->department = $department; $this->course_group = $course_group; $this->student_record = $student_record; $this->employee = $employee; $this->communication = $communication; } /** * Send SMS * * @param array $params * @return null */ public function submit($params = array()) { $sms = gv($params, 'sms'); $includes = gv($params, 'includes'); $excludes = gv($params, 'excludes'); $includes = explode("\n", $includes); $includes = array_filter($includes, 'trim'); $excludes = explode("\n", $excludes); $excludes = array_filter($excludes, 'trim'); $numbers = $this->getAudienceNumber($params); foreach ($includes as $include) { $numbers[] = $include; } $numbers = array_filter($numbers); $numbers = array_diff($numbers, $excludes); if (! $numbers) { throw ValidationException::withMessages(['message' => trans('communication.could_not_find_any_audience')]); } $params['recipient_numbers'] = $numbers; $params['included_numbers'] = $includes; $params['excluded_numbers'] = $excludes; $options['individual_students'] = array_unique(gv($params, 'individual_students', [])); $options['individual_employees'] = array_unique(gv($params, 'individual_employees', [])); $communication = $this->communication->create($params); $communication->options = $options; $communication->save(); $numbers = collect($numbers); foreach ($numbers->chunk(config('config.max_sms_per_chunk')) as $chunk) { SendSMS::dispatch($chunk, $sms); } return count($numbers); } /** * Send SMS * * @param array $params * @return array */ public function getAudienceNumber($params = array()) { $audience = gv($params, 'audience'); $student_numbers = array(); if (in_array($audience, ['everyone','selected_course','selected_batch']) || gv($params, 'individual_students', [])) { $student_numbers = $this->getStudentNumber($params); } $employee_numbers = array(); if (in_array($audience, ['everyone','selected_department','selected_employee_category']) || gv($params, 'individual_employees', [])) { $employee_numbers = $this->getEmployeeNumber($params); } $numbers = array_merge($student_numbers, $employee_numbers); $numbers = array_unique($numbers); return $numbers; } public function getStudentNumber($params = array()) { $course_id = gv($params, 'course_id'); $batch_id = gv($params, 'batch_id'); $course_id = is_array($course_id) ? $course_id : ($course_id ? explode(',', $course_id) : []); $batch_id = is_array($batch_id) ? $batch_id : ($batch_id ? explode(',', $batch_id) : []); $individual_students = array_unique(gv($params, 'individual_students', [])); $include_alternate_number = gbv($params, 'include_alternate_number'); $selected_student_record_ids = array(); if (in_array(gv($params, 'audience'), ['selected_course', 'selected_batch'])) { $query = $this->student_record->filterBySession()->whereNull('date_of_exit'); if (gv($params, 'audience') == 'selected_course') { $query->whereHas('batch', function($q) use($course_id) { $q->whereIn('course_id', $course_id); }); } if (gv($params, 'audience') == 'selected_batch') { $query->whereIn('batch_id', $batch_id); } $selected_student_record_ids = $query->get()->pluck('id')->all(); } $individual_student_record_ids = $this->student_record->whereIn('id', $individual_students)->get()->pluck('id')->all(); $total_student_record_ids = array_merge($selected_student_record_ids, $individual_student_record_ids); $student_records = $this->student_record->select(['id','student_id'])->with(['student:id,student_parent_id,contact_number,emergency_contact_number','student.parent:id,first_guardian_contact_number_1,first_guardian_contact_number_2,second_guardian_contact_number_1,second_guardian_contact_number_2'])->whereIn('id', $total_student_record_ids)->get(); $numbers = array(); foreach ($student_records as $student_record) { $numbers[] = $student_record->student->contact_number; if ($include_alternate_number) { $numbers[] = $student_record->student->emergency_contact_number; $numbers[] = $student_record->student->parent->first_guardian_contact_number_1; $numbers[] = $student_record->student->parent->first_guardian_contact_number_2; $numbers[] = $student_record->student->parent->second_guardian_contact_number_1; $numbers[] = $student_record->student->parent->second_guardian_contact_number_2; } } $numbers = array_unique($numbers); return $numbers; } public function getEmployeeNumber($params = array()) { $employee_category_id = gv($params, 'employee_category_id'); $department_id = gv($params, 'department_id'); $employee_category_id = is_array($employee_category_id) ? $employee_category_id : ($employee_category_id ? explode(',', $employee_category_id) : []); $department_id = is_array($department_id) ? $department_id : ($department_id ? explode(',', $department_id) : []); $individual_employees = array_unique(gv($params, 'individual_employees', [])); $include_alternate_number = gbv($params, 'include_alternate_number'); $selected_employee_ids = array(); if (in_array(gv($params, 'audience'), ['selected_employee_category', 'selected_department'])) { $query = $this->employee->whereHas('employeeTerms', function ($q) { $q->where(function ($q1) { $q1->whereNull('date_of_leaving')->where('date_of_joining', '<=', date('Y-m-d')); })->orWhere(function ($q2) { $q2->whereNotNull('date_of_leaving')->where('date_of_joining', '<=', date('Y-m-d'))->where('date_of_leaving', '>=', date('Y-m-d')); }); }); if (gv($params, 'audience') == 'selected_employee_category') { $query->whereHas('employeeDesignations', function ($q) use ($employee_category_id) { $q->where('date_effective', '<=', date('Y-m-d'))->where(function ($q1) { $q1->where('date_end', '=', null)->orWhere(function ($q2) { $q2->where('date_end', '!=', null)->where('date_end', '>=', date('Y-m-d')); }); })->whereHas('designation', function($q) use ($employee_category_id) { $q->whereHas('employeeCategory',function($q1) use ($employee_category_id) { $q1->whereIn('employee_category_id', $employee_category_id); }); }); }); } if (gv($params, 'audience') == 'selected_department') { $query->whereHas('employeeDesignations', function ($q) use ($department_id) { $q->where('date_effective', '<=', date('Y-m-d'))->where(function ($q1) { $q1->where('date_end', '=', null)->orWhere(function ($q2) { $q2->where('date_end', '!=', null)->where('date_end', '>=', date('Y-m-d')); }); })->whereIn('department_id', $department_id); }); } $selected_employee_ids = $query->get()->pluck('id')->all(); } $individual_employee_ids = $this->employee->whereIn('id', $individual_employees)->get()->pluck('id')->all(); $total_employee_ids = array_merge($selected_employee_ids, $individual_employee_ids); $employees = $this->employee->whereIn('id', $total_employee_ids)->select(['id','contact_number','alternate_contact_number','emergency_contact_number'])->get(); $numbers = array(); foreach ($employees as $employee) { $numbers[] = $employee->contact_number; if ($include_alternate_number) { $numbers[] = $employee->alternate_contact_number; $numbers[] = $employee->emergency_contact_number; } } $numbers = array_unique($numbers); return $numbers; } }