public function scopeSortedBy()

in app/Models/Contact/Contact.php [462:492]


    public function scopeSortedBy(Builder $builder, $criteria)
    {
        switch ($criteria) {
            case 'firstnameAZ':
                return $builder->orderBy('first_name', 'asc');
            case 'firstnameZA':
                return $builder->orderBy('first_name', 'desc');
            case 'lastnameAZ':
                return $builder->orderBy('last_name', 'asc');
            case 'lastnameZA':
                return $builder->orderBy('last_name', 'desc');
            case 'lastactivitydateNewtoOld':
                $builder->leftJoin('activity_contact', 'contacts.id', '=', 'activity_contact.contact_id');
                $builder->leftJoin('activities', 'activity_contact.activity_id', '=', 'activities.id');
                $builder->groupBy('contacts.id');
                $builder->orderBy('activities.happened_at', 'desc');
                $builder->select(['*', 'contacts.id as id']);

                return $builder;
            case 'lastactivitydateOldtoNew':
                $builder->leftJoin('activity_contact', 'contacts.id', '=', 'activity_contact.contact_id');
                $builder->leftJoin('activities', 'activity_contact.activity_id', '=', 'activities.id');
                $builder->groupBy('contacts.id');
                $builder->orderBy('activities.happened_at', 'asc');
                $builder->select(['*', 'contacts.id as id']);

                return $builder;
            default:
                return $builder->orderBy('first_name', 'asc');
        }
    }