File: D:/HostingSpaces/SBogers10/zelfverkopen.komma.pro/app/KommaApp/Customers/Kms/CustomerSection.php
<?php
/**
*
*
* @author Komma <info@komma.pro>
* @copyright (c) 2012-2016, Komma
*/
namespace App\KommaApp\Customers\Kms;
//The new object oriented attributes
use App\KommaApp\Kms\Core\Attributes\AutocompleteInput;
use App\KommaApp\Kms\Core\Attributes\Select;
use App\KommaApp\Kms\Core\Sections\AllUsedLanguagesTabsDirector;
use App\KommaApp\Kms\Core\Sections\CurrentSiteLanguagesTabsDirector;
use App\KommaApp\Kms\Core\Sections\NoLanguageTabsDirector;
use App\KommaApp\Kms\Core\Sections\Section;
use App\KommaApp\Kms\Core\Sections\SiteSection;
use App\KommaApp\Routes\RouteService;
use App\KommaApp\Sites\Kms\SiteService;
use App\KommaApp\Users\Models\Role;
use App\KommaApp\Users\Roles;
use App\KommaApp\Kms\Core\Attributes\Attribute;
use App\KommaApp\Kms\Core\Attributes\Dynamic;
use App\KommaApp\Kms\Core\Attributes\Images;
use App\KommaApp\Kms\Core\Attributes\Models\DynamicContentBlockSettings;
use App\KommaApp\Kms\Core\Attributes\Models\DynamicFullImageBlockSettings;
use App\KommaApp\Kms\Core\Attributes\Models\DynamicFullTextBlockSettings;
use App\KommaApp\Kms\Core\Attributes\Models\DynamicMultipleImagesBlockSettings;
use App\KommaApp\Kms\Core\Attributes\Models\DynamicMultipleImageTabSettings;
use App\KommaApp\Kms\Core\Attributes\Models\DynamicTwoColumnBlockSettings;
use App\KommaApp\Kms\Core\Attributes\Models\DynamicVideoBlockSettings;
use App\KommaApp\Kms\Core\Attributes\Models\ImageProperty;
use App\KommaApp\Kms\Core\Attributes\OnOff;
use App\KommaApp\Kms\Core\Attributes\Seperator;
use App\KommaApp\Kms\Core\Attributes\TextArea;
use App\KommaApp\Kms\Core\Attributes\TextField;
use App\KommaApp\Kms\Core\Attributes\Title;
use App\KommaApp\Kms\Core\Kms;
use App\KommaApp\Kms\Core\Sections\SectionTabGroups;
use App\KommaApp\Kms\Core\Sections\SectionTabItem;
use App\KommaApp\Kms\Core\Sections\SectionTabsBuilder;
use App\KommaApp\Kms\Core\ValidationSet;
use Illuminate\Database\Eloquent\Collection;
class CustomerSection extends Section
{
protected $title = "Klanten";
protected $subTitle = "Overzicht";
protected $slug = "customers";
public $showSave = 'all';
public $showDelete = 'all';
public $showCreate = 'all';
private $siteService;
/**
* PageSection constructor.
* @param Kms $kms
* @param CustomerService $sectionService
* @param RouteService $routeService
*/
// function __construct(Kms $kms, PageRepository $repository)
function __construct(CustomerService $sectionService, RouteService $routeService, SiteService $siteService)
{
$sectionTabDirector = new NoLanguageTabsDirector(new SectionTabsBuilder()); //Can make tabs for us. also see KmsSection::__construct
$this->siteService = $siteService;
parent::__construct($sectionService, $routeService, $sectionTabDirector);
}
/**
* Generates the attributes for this section. They all must extend the App\KommaApp\Kms\Core\Attributes\Attribute class
* This is the place where you need to setup your sections appearance. Just make sure you build an array of attributes
* and put each attribute in a AbstractSectionTabItem with a SectionTabGroups constant to link them to a tab.
*
* @see PageRepository::saveModel()
* @return Collection A collection of SectionTabItems
*/
protected function generateAttributes(): Collection
{
// \Log::info("PageSection::Generating attributes");
//*****************************************************************************************\\
//*** Define attribute validation sets ***\\
//*****************************************************************************************\\
$requiredValidationSet = (new ValidationSet())
->setRules('required')
->setMessages(['required' => __('validation.required')]);
//*****************************************************************************************\\
//*** Generate the attributes ***\\
//*****************************************************************************************\\
$attributes = [];
$attributes[] = (new OnOff())
->setLabelText(__('kms/global.status'))
// ->switchOn()
->mapValueFrom(Attribute::ValueFromModel, 'status');
$categories = $this->getSectionService()->getGenderSelect();
$attributes[] = (new Select())
->setItems($categories)
->setLabelText(__('kms/orders.gender'))
->mapValueFrom(Attribute::ValueFromModel, 'gender');
$attributes[] = (new TextField(__('kms/orders.lastName')))
->setPlaceholderText(__('kms/orders.enterLastName'))
->setValidationSet($requiredValidationSet)
->mapValueFrom(Attribute::ValueFromModel, 'last_name');
$attributes[] = (new TextField(__('kms/orders.email')))
->setPlaceholderText(__('kms/orders.enterEmail'))
->setValidationSet($requiredValidationSet)
->mapValueFrom(Attribute::ValueFromModel, 'email');
$attributes[] = (new TextField(__('kms/orders.phone')))
->setPlaceholderText(__('kms/orders.enterPhone'))
->setValidationSet($requiredValidationSet)
->mapValueFrom(Attribute::ValueFromModel, 'phone');
$attributes[] = new Seperator();
$attributes[] = (new TextField(__('kms/orders.zip')))
->setPlaceholderText(__('kms/orders.enterZip'))
->setValidationSet($requiredValidationSet)
->mapValueFrom(Attribute::ValueFromModel, 'zip');
$attributes[] = (new TextField(__('kms/orders.houseNumber')))
->setPlaceholderText(__('kms/orders.enterHouseNumber'))
->setValidationSet($requiredValidationSet)
->mapValueFrom(Attribute::ValueFromModel, 'house_number');
$attributes[] = (new TextField(__('kms/orders.houseNumberAddition')))
->mapValueFrom(Attribute::ValueFromModel, 'house_number_addition');
$attributes[] = (new TextField(__('kms/orders.street')))
->setPlaceholderText(__('kms/orders.enterStreet'))
->setValidationSet($requiredValidationSet)
->mapValueFrom(Attribute::ValueFromModel, 'street');
$attributes[] = (new TextField(__('kms/orders.city')))
->setPlaceholderText(__('kms/orders.enterCity'))
->setValidationSet($requiredValidationSet)
->mapValueFrom(Attribute::ValueFromModel, 'city');
//****************************************************************************************************************************************\\
//*** Put the all attributes in a SectionTabItem so we can track for which tab they are. And then put SectionTabItems in a Collection ***\\
//****************************************************************************************************************************************\\
$tabItems = new Collection();
foreach($attributes as $attribute) $tabItems->push(new SectionTabItem($attribute, SectionTabGroups::General));
return $tabItems;
}
/**
* This method will stop the load entities of the kmsSiteSection
*
* @return array
*
*/
public function loadEntities(){
return [];
}
}