%PDF- %PDF-
Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/app/Repositories/ |
Current File : //home/forge/api-takeaseat.eco-n-tech.co.uk/app/Repositories/ProgressRepository.php |
<?php namespace App\Repositories; use App\Models\User; class ProgressRepository { /** * Get the account progress percentage * * @param \App\Models\User $user */ public function getTotalProgress($user) : int { $percentage = ($this->getProfileProgress($user) + $this->getAvailabilityProgress($user) + $this->getVerificationProgress($user) + $this->getFinancialProgress($user) + $this->getSettingsProgress($user)) / 5; return round($percentage, 2); } /** * Get the account profile progress percentage * * @param \App\Models\User $user */ public function getProfileProgress(User $user) : int { $percentage = 0; if( $user->therapist->colour && $user->photo_url !== null ) { $percentage = $percentage + 16.66; } if( $user->therapist->description ) { $percentage = $percentage + 16.66; } if( count($user->products) > 0 ) { $percentage = $percentage + 16.66; } if( count($user->therapist->sessions) > 0 ) { $percentage = $percentage + 16.66; } if( count($user->therapist->specialisms) > 0 ) { $percentage = $percentage + 16.66; } if( $user->therapist->image_one_url !== null) { $percentage = $percentage + 16.66; } return round($percentage); } /** * Get the account availability progress percentage * * @param \App\Models\User $user */ public function getAvailabilityProgress(User $user) : int { return count($user->therapist->availability) > 0 ? 100 : 0; } /** * Get the account calendar progress percentage * * @param \App\Models\User $user */ public function getVerificationProgress(User $user) : int { $percentage = 0; if( count($user->therapist->qualifications) > 0 ) { $percentage = $percentage + 25; } if( count($user->therapist->memberships) > 0 ) { $percentage = $percentage + 25; } if( $user->therapist->insurance ) { $percentage = $percentage + 25; } if( $user->therapist->supervisor ) { $percentage = $percentage + 25; } return $percentage; } /** * Get the account calendar progress percentage * * @param \App\Models\User $user */ public function getFinancialProgress(User $user) : int { $percentage = 0; if ($user->hasRole('therapist')) { if( $user->subscribed(config('subscription.product_id')) ) { $percentage = $percentage + 33.33; } if( $user->stripe_connect_id !== null ) { $percentage = $percentage + 33.33; } if( $user->hasPaymentMethod() ) { $percentage = $percentage + 33.33; } } else { if( $user->hasPaymentMethod() ) { $percentage = $percentage + 100; } } return round($percentage); } /** * Get the account calendar progress percentage * * @param \App\Models\User $user */ public function getSettingsProgress(User $user) : int { $percentage = 0; if ($user->hasRole('therapist')) { if( $user->communication_settings !== null ) { $percentage = $percentage + 25; } if( $user->first_name !== null && $user->last_name !== null && $user->email !== null ) { $percentage = $percentage + 25; } if( $user->business_type !== null ) { $percentage = $percentage + 25; } if( count($user->addresses) > 0 ) { $percentage = $percentage + 25; } } else { if( $user->communication_settings !== null ) { $percentage = $percentage + 50; } if( $user->first_name !== null && $user->last_name !== null && $user->email !== null ) { $percentage = $percentage + 50; } } return round($percentage); } }