<?php

namespace App\Providers;

use Illuminate\Support\Collection;
use Illuminate\Support\ServiceProvider;
use LdapRecord\Configuration\DomainConfiguration;
use LdapRecord\Laravel\LdapRecord;

use App\Ldap\LdapUserRepository;

class AppServiceProvider extends ServiceProvider
{
	/**
	 * Register any application services.
	 */
	public function register(): void
	{
		// Add a new option available to be set in the configuration:
		DomainConfiguration::extend('name', $default = null);

		// Use our LdapUserRepository to support multiple baseDN querying
		LdapRecord::locateUsersUsing(LdapUserRepository::class);
	}

	/**
	 * Bootstrap any application services.
	 */
	public function boot(): void
	{
		$this->loadViewsFrom(__DIR__.'/../../resources/themes/architect/views/','architect');

		// Enable pluck on collections to work on private values
		Collection::macro('ppluck',
			fn($attr)=>$this
				->map(fn($item)=>$item->{$attr})
				->values());
	}
}