Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Modules\Admin\Controllers;
- use App\Http\Controllers\Controller;
- use App\Traits\ResponseTrait;
- use App\User;
- use Illuminate\Support\Facades\File;
- use Illuminate\Http\Request;
- use App\Ouch\OuchAPI;
- use Illuminate\Support\Facades\DB;
- use Yajra\DataTables\Facades\DataTables;
- use Illuminate\Support\Facades\Config;
- use \App\Services\RegistrationService;
- class DoctorsController extends Controller
- {
- private $ouch;
- use ResponseTrait;
- public function __construct(RegistrationService $registrationService)
- {
- $this->ouch = new OuchAPI();
- $this->registrationService = $registrationService;
- }
- public function index()
- {
- try {
- return view('Admin::doctors-listing');
- } catch (\Exception $ex) {
- \Illuminate\Support\Facades\Log::info($ex->getMessage() . 'on line no. ' . $ex->getLine());
- }
- }
- public function getDoctors()
- {
- $users = DB::table('users')
- ->join('doctor_details', 'users.id', '=', 'doctor_details.user_doctor_id')
- ->join('specialities', 'doctor_details.speciality_id', '=', 'specialities.id')
- ->select([
- 'users.id',
- 'users.name',
- 'users.email',
- 'users.is_active',
- 'specialities.name AS speciality'
- ]);
- $users->where('users.role', 'D');
- $responseBody = array();
- return DataTables::of($users)
- ->addColumn('action', function ($m) {
- $responseBody['id'] = $m->id;
- $responseBody['is_active'] = $m->is_active;
- return view('Admin::doctors-listing-actions')->with($responseBody);
- })
- ->filterColumn('speciality', function ($query, $keyword) {
- $sql = "specialities.name like ?";
- $query->whereRaw($sql, ["%{$keyword}%"]);
- })
- ->addColumn('rating', function ($m) {
- return getDoctorRatings($m->id);
- })->make();
- }
- public function add(Request $request)
- {
- try {
- $all_specialities = $this->ouch->get('/api/specialities?limit=20&order=name ASC', true, false, false);
- $statusCode = $all_specialities->getStatusCode();
- $responseBody['specialities'] = json_decode($all_specialities->getBody(), true);
- $languages = $this->ouch->get("/api/languages?limit=20&order=name ASC", true, false);
- $responseBody['languages'] = json_decode($languages->getBody(), true);
- $responseBody['current_year'] = date("Y");
- $responseBody['start_year'] = Config::get('constants.QUALIFICATION_START_YEAR');
- $responseBody['titles'] = \Illuminate\Support\Facades\Config::get('constants.USER_TITLE');
- $responseBody['proficiency'] = \Illuminate\Support\Facades\Config::get('constants.PROFICIENCY');
- if ($statusCode == 200) {
- return view('Admin::doctors-add')->with($responseBody);
- }
- } catch (\Exception $ex) {
- \Illuminate\Support\Facades\Log::info($ex->getMessage() . 'on line no. ' . $ex->getLine());
- }
- }
- public function store(Request $request)
- {
- try {
- $data = array();
- $data['title'] = $request->get('user_title');
- $data['name'] = $request->get('name');
- $data['email'] = $request->get('email');
- $data['mobile'] = $request->get('mobile');
- $random_password = $this->generatePassword();
- $data['password'] = $random_password;
- $gender = $request->get('gender');
- $data['gender'] = ($gender == 'Male' ? 'M' : ($gender == 'Female' ? 'F' : 'O'));
- $data['is_active'] = false;
- $data['doctordetails'][0]['user_clinic_id'] = $request->get('selected_clinic_id');
- $data['doctordetails'][0]['speciality_id'] = $request->get('speciality');
- $data['doctordetails'][0]['professional_statement'] = $request->has('professional_statement') ? $request->get('professional_statement') : '';
- $user = new User();
- $data['doctordetails'][0]['year_of_experience'] = $user->calculateYearsOfExperience(date("Y-m-d", strtotime($request->get('start_date_of_practice'))));
- $data['doctordetails'][0]['start_date_of_practice'] = date("Y-m-d", strtotime($request->get('start_date_of_practice')));
- if ($request->has('membership') && $request->get('membership') != '') {
- for ($i = 0; $i < count($request->get('membership')); $i++) {
- $data['tags'][$i]['tag_id'] = $request->get('membership')[$i];
- }
- }
- if (($request->has('doc_degree_name') && $request->get('doc_degree_name') != '') && ($request->has('doc_start_year') && $request->get('doc_start_year') != '')) {
- for ($i = 0; $i < count($request->get('doc_degree_name')); $i++) {
- $data['qualifications'][$i]['degree'] = $request->get('doc_degree_name')[$i];
- $data['qualifications'][$i]['from_to_year'] = $request->get('doc_start_year')[$i];
- }
- }
- if (($request->has('language_name') && $request->get('language_name') != '') && ($request->has('proficiency_name') && $request->get('proficiency_name') != '')) {
- for ($i = 0; $i < count($request->get('language_name')); $i++) {
- $data['user_languages'][$i]['language_id'] = $request->get('language_name')[$i];
- $data['user_languages'][$i]['proficiency'] = $request->get('proficiency_name')[$i];
- }
- }
- if (($request->has('doc_certificate_name') && $request->get('doc_certificate_name') != '') && ($request->has('doc_certificate_date') && $request->get('doc_certificate_date') != '')) {
- for ($i = 0; $i < count($request->get('doc_certificate_name')); $i++) {
- $data['certificates'][$i]['name'] = $request->get('doc_certificate_name')[$i];
- $data['certificates'][$i]['date'] = date("Y-m-d", strtotime($request->get('doc_certificate_date')[$i]));
- }
- }
- if ($request->has('profile_image') && $request->get('profile_image') != null) {
- $data['profile_image'] = $this->saveProfileImage($request->get('profile_image'));
- }
- $req = $this->ouch->post('/api/doctors', $data, null, false);
- $statusCode = $req->getStatusCode();
- $responseBody = json_decode($req->getBody());
- if ($statusCode == 201) {
- $this->registrationService->sendDoctorCredentials($request->get('email'), $random_password);
- $request->session()->flash('message.level', 'success');
- $request->session()->flash('message.content', __('custom.DOCTOR_ADD_SUCCESS'));
- } else if (isset($responseBody->errors)) {
- $errors = $this->parseErrors($responseBody->errors);
- $request->session()->flash('message.level', 'danger');
- $request->session()->flash('message.content', implode('', $errors->all(':message<br>')));
- return redirect()->back();
- }
- return redirect()->route('admin.doctors');
- } catch (\Exception $ex) {
- $request->session()->flash('message.level', 'danger');
- $request->session()->flash('message.content', __('custom.DOCTOR_ADD_FAILURE'));
- return redirect()->back();
- }
- }
- public function generatePassword()
- {
- try {
- $password_length = Config::has('constants.RANDOM_PASSWORD_LENGTH') ? Config::get('constants.RANDOM_PASSWORD_LENGTH') : 8;
- return app('App\Http\Controllers\API\UserController')->generateToken($password_length);
- } catch (\Exception $ex) {
- \Illuminate\Support\Facades\Log::info($ex->getMessage() . 'on line no. ' . $ex->getLine());
- }
- }
- public function getTags($langauge_id = 1, Request $request)
- {
- try {
- return \App\Tag::select('id', 'name')
- ->where('language_id', $langauge_id)
- ->where('name', 'LIKE', $request->get('value') . '%')
- ->get();
- } catch (\Exception $ex) {
- \Illuminate\Support\Facades\Log::info($ex->getMessage() . 'on line no. ' . $ex->getLine());
- }
- }
- public function addTag(Request $request)
- {
- try {
- $tag = $this->ouch->post('/api/tags', $request->all(), null, false);
- return $tag;
- } catch (\Exception $ex) {
- \Illuminate\Support\Facades\Log::info($ex->getMessage() . 'on line no. ' . $ex->getLine());
- }
- }
- public function saveProfileImage($file_data)
- {
- try {
- $file_name = 'image_' . microtime() . '.png';
- @list($type, $file_data) = explode(';', $file_data);
- @list(, $file_data) = explode(',', $file_data);
- $directory = '/img/doctor_logo';
- $path = public_path() . $directory;
- if (!File::exists($path)) {
- File::makeDirectory($path, 0775, $recursive = true, $force = false);
- }
- if ($file_data != "") {
- File::put($path . '/' . $file_name, base64_decode($file_data));
- }
- return $directory . '/' . $file_name;
- } catch (Exception $ex) {
- return false;
- }
- }
- public function status($id, $status, Request $request)
- {
- try {
- $is_active = $status ? false : true;
- $update_status = $this->ouch->put('/api/doctors/status/' . $id, ['is_active' => $is_active], true, false, false);
- $statusCode = $update_status->getStatusCode();
- $responseBody = json_decode($update_status->getBody());
- if ($statusCode == 200) {
- $request->session()->flash('message.level', 'success');
- $request->session()->flash('message.content', __('custom.DOCTOR_STATUS_UPDATE_SUCCESS'));
- } else if (isset($responseBody->errors)) {
- $errors = $this->parseErrors($responseBody->errors);
- $request->session()->flash('message.level', 'danger');
- $request->session()->flash('message.content', implode('', $errors->all(':message')));
- } else {
- $request->session()->flash('message.level', 'danger');
- $request->session()->flash('message.content', __('custom.DOCTOR_STATUS_UPDATE_FAILED'));
- }
- return redirect()->route('admin.doctors');
- } catch (\Exception $ex) {
- \Illuminate\Support\Facades\Log::info($ex->getMessage() . 'on line no. ' . $ex->getLine());
- }
- }
- }
Add Comment
Please, Sign In to add comment