%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/app/Repositories/
Upload File :
Create Path :
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);
    }
}

Zerion Mini Shell 1.0