Subversion-Projekte lars-tiefland.webanos.marine-sales.de

Revision

Revision 485 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

<?php

    namespace App\Models;

    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Database\Eloquent\Relations\BelongsTo;
    use Illuminate\Database\Eloquent\Relations\HasMany;
    use Illuminate\Support\Collection;
    use Spatie\Sluggable\HasSlug;
    use Spatie\Sluggable\SlugOptions;

    /**
     * App\Models\Directory
     *
     * @property int $id
     * @property int|null $directory_id
     * @property string $name
     * @property string $slug
     * @property string $kennung
     * @property int $articlemaster
     * @property int $status
     * @property string $url
     * @property string $description
     * @property string $short_line_1
     * @property string $created_by
     * @property string $updated_by
     * @property \Illuminate\Support\Carbon|null $created_at
     * @property \Illuminate\Support\Carbon|null $updated_at
     * @property-read Directory|null $directory
     * @property-read \App\Models\Manufacturer|null $manufacturer
     * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\DirectoryMedium> $medium
     * @property-read int|null $medium_count
     * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\DirectoryTemplate> $template
     * @property-read int|null $template_count
     * @method static \Database\Factories\DirectoryFactory factory( $count = null, $state = [] )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory newModelQuery()
     * @method static \Illuminate\Database\Eloquent\Builder|Directory newQuery()
     * @method static \Illuminate\Database\Eloquent\Builder|Directory query()
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereArticlemaster( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereCreatedAt( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereCreatedBy( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereDescription( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereDirectoryId( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereId( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereKennung( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereName( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereShortLine1( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereSlug( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereStatus( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereUpdatedAt( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereUpdatedBy( $value )
     * @method static \Illuminate\Database\Eloquent\Builder|Directory whereUrl( $value )
     * @mixin \Eloquent
     */
    class Directory extends Model
    {
        use HasFactory, HasSlug;

        /**
         * Get the options for generating the slug.
         */
        public function getSlugOptions(): SlugOptions
        {
            return SlugOptions::create()
                ->generateSlugsFrom( 'name' )
                ->saveSlugsTo( 'slug' )
                ->usingLanguage( 'de' )
                ->doNotGenerateSlugsOnUpdate()
                ->skipGenerateWhen( fn() => $this->id < 0 );
        }

        public function directory(): BelongsTo
        {
            return $this->belongsTo( Directory::class );
        }

        function medium(): HasMany
        {
            return $this->hasMany( DirectoryMedium::class )->orderBy( "rank" );
        }

        function items(): HasMany
        {
            return $this->hasMany( Item::class )->orderBy( "id", "DESC" );
        }

        function template(): HasMany
        {
            return $this->hasMany( DirectoryTemplate::class );
        }

        public function manufacturer(): BelongsTo
        {
            return $this->belongsTo( Manufacturer::class );
        }

        public function shopPosition(): Collection
        {
            $pos = collect(); //$pos = "Sie sind hier: <a href=\"/\">Startseite</a> <span class='breadcrumb-trenner'> &raquo; </span>";
            $path = getPath( $_SESSION['navigation']['position'] )->reverse();
            foreach ( $path as $dir )
            {
                $pos[] = $dir;
            }

            return $pos;
        }

    }