<?php

namespace OCA\OrganizationFolders\Command;

use OC\Core\Command\Base;
use OCP\IDateTimeFormatter;

use OCA\OrganizationFolders\Service\OrganizationFolderService;
use OCA\OrganizationFolders\Service\ResourceService;
use OCA\OrganizationFolders\Service\ResourceMemberService;
use OCA\OrganizationFolders\OrganizationProvider\OrganizationProviderManager;
use OCA\OrganizationFolders\Interface\TableSerializable;

abstract class BaseCommand extends Base {

	public function __construct(
		private readonly IDateTimeFormatter $dateTimeFormatter,
        protected readonly OrganizationFolderService $organizationFolderService,
        protected ResourceService $resourceService,
		protected ResourceMemberService $resourceMemberService,
		protected OrganizationProviderManager $organizationProviderManager,
	) {
		parent::__construct();
	}

	protected function formatTableSerializable(TableSerializable $serializable, ?array $params = null): array {
		return $serializable->tableSerialize($params);
	}

    protected function formatTableSerializables(array $serializables, ?array $params = null): array {
		$result = [];
		foreach($serializables as $serializable) {
			$result[] = $serializable->tableSerialize($params);
		}
		return $result;
	}
}