<?php

namespace App\Http\Controllers;

use App\Developer;
use App\ResidentialComplex;
use App\SeoContent;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;

class SiteMapController extends Controller
{
    private $sitemap;

    public function sitemap(Request $request)
    {
        $this->sitemap = Sitemap::create();
        $this->developer();
        $this->residentialComplex();
        $this->pages();

        return $this->sitemap->toResponse($request);
    }

    protected function developer()
    {
        foreach (Developer::query()->where('enabled', 1)->whereNull('deleted_at')->get() as $developer) {
            $this->sitemap->add(Url::create($urlFront = env('URL_FRONT') . "/developer/" . $developer->code)->setLastModificationDate(Carbon::yesterday())->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY)->setPriority(1));
        }
    }

    protected function residentialComplex()
    {
        foreach (ResidentialComplex::query()->where('enabled', 1)->whereNull('deleted_at')->get() as $residentialComplex) {
            $this->sitemap->add(Url::create(env('URL_FRONT') . "/residential-complex/" . $residentialComplex->code)->setLastModificationDate(Carbon::yesterday())->setChangeFrequency(Url::CHANGE_FREQUENCY_MONTHLY)->setPriority(0.5));
        }
    }

    protected function pages()
    {
        $staticPages = SeoContent::query()->where('is_static', 1)->whereNull('deleted_at')->get();
        foreach ($staticPages as $staticPage) {
            $this->sitemap->add(Url::create(env('URL_FRONT') . "/" . $staticPage->code)->setLastModificationDate(Carbon::today())->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)->setPriority(0.9));
        }
        $dynamicPages = SeoContent::query()->where('is_static', 0)->whereNull('deleted_at')->get();
        foreach ($dynamicPages as $dynamicPage) {
            $this->sitemap->add(Url::create(env('URL_FRONT') . "/residential-complexes/" . $dynamicPage->code)->setLastModificationDate(Carbon::today())->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)->setPriority(0.9));
        }
    }
}
