Current File : /home/getxxhzo/app.genicards.com/app/MediaLibrary/CustomPathGenerator.php
<?php

namespace App\MediaLibrary;

use App\Models\AboutUs;
use App\Models\Enquiry;
use App\Models\Blog;
use App\Models\Feature;
use App\Models\FrontTestimonial;
use App\Models\Gallery;
use App\Models\Language;
use App\Models\Nfc;
use App\Models\NfcOrders;
use App\Models\Product;
use App\Models\Setting;
use App\Models\SocialLink;
use App\Models\Subscription;
use App\Models\Template;
use App\Models\Testimonial;
use App\Models\User;
use App\Models\UserSetting;
use App\Models\Vcard;
use App\Models\VcardBlog;
use App\Models\VcardService;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use Spatie\MediaLibrary\Support\PathGenerator\PathGenerator;

/**
 * Class CustomPathGenerator
 */
class CustomPathGenerator implements PathGenerator
{
    public function getPath(Media $media): string
    {
        $path = '{PARENT_DIR}'.DIRECTORY_SEPARATOR.$media->id.DIRECTORY_SEPARATOR;

        switch ($media->collection_name) {
            case User::PROFILE:
                return str_replace('{PARENT_DIR}', User::PROFILE, $path);
            case Setting::PATH:
                return str_replace('{PARENT_DIR}', Setting::PATH, $path);
            case Vcard::PROFILE_PATH:
                return str_replace('{PARENT_DIR}', Vcard::PROFILE_PATH, $path);
            case Vcard::COVER_PATH:
                return str_replace('{PARENT_DIR}', Vcard::COVER_PATH, $path);
            case VcardService::SERVICES_PATH:
                return str_replace('{PARENT_DIR}', VcardService::SERVICES_PATH, $path);
            case Gallery::GALLERY_PATH:
                return str_replace('{PARENT_DIR}', Gallery::GALLERY_PATH, $path);
            case Testimonial::TESTIMONIAL_PATH:
                return str_replace('{PARENT_DIR}', Testimonial::TESTIMONIAL_PATH, $path);
            case Template::TEMPLATE_PATH:
                return str_replace('{PARENT_DIR}', Template::TEMPLATE_PATH, $path);
            case Feature::PROFILE:
                return str_replace('{PARENT_DIR}', Feature::PROFILE, $path);
            case Setting::FRONTPATH:
                return str_replace('{PARENT_DIR}', Setting::FRONTPATH, $path);
            case FrontTestimonial::PATH:
                return str_replace('{PARENT_DIR}', FrontTestimonial::PATH, $path);
            case AboutUs::PATH:
                return str_replace('{PARENT_DIR}', AboutUs::PATH, $path);
            case Product::PRODUCT_PATH:
                return str_replace('{PARENT_DIR}', Product::PRODUCT_PATH, $path);
            case VcardBlog::BLOG_PATH:
                return str_replace('{PARENT_DIR}', VcardBlog::BLOG_PATH, $path);
            case Subscription::ATTACHMENT_PATH:
                return str_replace('{PARENT_DIR}', Subscription::ATTACHMENT_PATH, $path);
            case SocialLink::SOCIAL_ICON:
                return str_replace('{PARENT_DIR}', SocialLink::SOCIAL_ICON, $path);
            case Subscription::NOTES_PATH:
                return str_replace('{PARENT_DIR}', Subscription::NOTES_PATH, $path);
            case Language::LANGUAGE_PATH:
                return str_replace('{PARENT_DIR}', Language::LANGUAGE_PATH, $path);
            case Nfc::NFC_PATH:
                return str_replace('{PARENT_DIR}', Nfc::NFC_PATH, $path);
            case Nfc::NFC_BACK_IMAGE:
                return str_replace('{PARENT_DIR}', Nfc::NFC_BACK_IMAGE, $path);
            case NfcOrders::LOGO_PATH:
                return str_replace('{PARENT_DIR}', NfcOrders::LOGO_PATH, $path);
            case UserSetting::LOGO_PATH:
                return str_replace('{PARENT_DIR}', UserSetting::LOGO_PATH, $path);
            case Blog::BLOGIMAGE:
                return str_replace('{PARENT_DIR}', Blog::BLOGIMAGE, $path);
            case Enquiry::ATTACHMENT:
                return str_replace('{PARENT_DIR}', Enquiry::ATTACHMENT, $path);
            case 'default':
                return '';
        }
    }

    public function getPathForConversions(Media $media): string
    {
        return $this->getPath($media).'thumbnails/';
    }

    public function getPathForResponsiveImages(Media $media): string
    {
        return $this->getPath($media).'rs-images/';
    }
}