![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/clinic.corals.io/app/Repositories/ |
<?php namespace App\Repositories; use App\Models\Patient; use App\Models\Permission; use App\Models\Role; use App\Models\Staff; use App\Models\User; use App\Repositories\BaseRepository; use Exception; use Illuminate\Support\Arr; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; /** * Class StaffRepository * @package App\Repositories * @version August 6, 2021, 10:17 am UTC */ class StaffRepository extends BaseRepository { /** * @var array */ protected $fieldSearchable = [ 'first_name', 'last_name', 'email', 'phone_number', 'password', 'gender', 'role' ]; /** * Return searchable fields * * @return array */ public function getFieldsSearchable() { return $this->fieldSearchable; } /** * Configure the Model **/ public function model() { return Staff::class; } /** * @return mixed */ public function getRole() { $roles = Role::pluck('display_name', 'id')->except([User::ADMIN, User::DOCTOR, User::PATIENT]); return $roles; } /** * @param $input * * @return bool */ public function store($input) { try { DB::beginTransaction(); $input['email'] = setEmailLowerCase($input['email']); $input['password'] = Hash::make($input['password']); $input['type'] = User::STAFF; $staff = User::create($input); if (isset($input['role']) && ! empty($input['role'])) { $role = $staff->assignRole($input['role']); $role->givePermissionTo('manage_admin_dashboard'); } if (isset($input['profile']) && ! empty($input['profile'])) { $staff->addMedia($input['profile'])->toMediaCollection(Staff::PROFILE, config('app.media_disc')); } DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @param array $input * @param int $id * * @return bool */ public function update($input, $id) { try { DB::beginTransaction(); $staff = User::find($id); $input['email'] = setEmailLowerCase($input['email']); if (isset($input['password']) && ! empty($input['password'])) { $input['password'] = Hash::make($input['password']); }else{ unset($input['password']); } $input['type'] = User::STAFF; $staff->update($input); if (isset($input['role']) && ! empty($input['role'])) { $staff->syncRoles($input['role']); } if (isset($input['profile']) && ! empty($input['profile'])) { $staff->clearMediaCollection(Staff::PROFILE); $staff->media()->delete(); $staff->addMedia($input['profile'])->toMediaCollection(Staff::PROFILE, config('app.media_disc')); } DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } }