<?php

namespace App\Services;

use App\Models\Add;
use Illuminate\Database\Eloquent\Builder;
use App\Services\DataService;
use App\Libs\Database\Eloquent\Collection\ContentTypeCollection;
use Illuminate\Support\Facades\DB;

class AddDataService extends DataService
{
    /**
     * Gets adds
     *
     * @return App\Libs\Database\Eloquent\Collection\ContentTypeCollection
     */
    public function list(): ContentTypeCollection
    {
        /** @var Builder $query */
        $query = Add::full()->where('status', 'published');
        $query->with(['image', 'video']);

        $query->orderBy('website_objects.position', 'asc');
        return $query->get();
    }


    /**
     * Resets all the values for the entry screen field to 0
     * @param int $exceptionId
     */
    public function resetEntryScreen($exceptionId = null): void
    {
        if ($exceptionId) {
            DB::table('adds')
                ->where('id', '<>', $exceptionId)
                ->update(['entry_screen' => 0]);
        } else {
            DB::table('adds')->update(['entry_screen' => 0]);
        }
    }


    /**
     * Gets adds
     *
     * @return App\Libs\Database\Eloquent\Collection\ContentTypeCollection
     */
    public function getEentryScreenAds(): ContentTypeCollection
    {
        /** @var Builder $query */
        $query = Add::full()->where('status', 'published')
            ->where('in_agenda', true);
        $query->with(['image', 'video']);

        $query->orderBy('website_objects.position', 'asc');
        return $query->get();
    }
}
