Met de task types is het aanmaken van taken op basis van een resource versimpeld. De resource kan direct aan de taak gekoppeld worden waardoor wijzigingen aan de kant van de resource de status van een taak ook kunnen beinvloeden.
TaskTypesSeeder
aan en laat deze class de compass core Tasks\TypesSeeder extenden$this->addTaskType
aan, met deze functie is het toevoegen van vertalingen versimpeld$this->addTaskType(function () {
return Type::query()->updateOrCreate([
'system_name' => 'crm_call_customer'
], [
'title' => 'Call appointment',
'icon' => 'fa-phone',
// Bij het koppelen van een resource wordt gecontroleerd of het een instanceof de class is
'class' => OrganisationRelationInterface::class,
// Met deze parameter kun je het opgeven van een resource verplicht stellen
'class_required' => 1,
'blade_create' => 'compass.crm::tasks.customers.create',
'blade_show' => 'compass.crm::tasks.customers.show',
'blade_edit' => 'compass.crm::tasks.customers.edit',
]);
}, [
'nl' => 'Belafspraak'
]);
TaskableInterface
implementeren. Wanneer je de methods niet nodig hebt kunnen de methods lege waarden teruggeven. Voor een definitie van de methods zie het kopje "Taskable Model Interface"Het is mogelijk om custom blades toe te voegen. Deze kunnen toegevoegd worden zoals in voorbeeld van stap 3 in de instructies van het toevoegen van een nieuw taak type.
In de create blade kan het mogelijk zijn dat de resource die gekoppeld moet worden al beschikbaar is. De resource kan al aangeleverd worden met het tasks.button component van de core.
<?php
if (!empty($settings)) {
$customer = $settings->taskableType::find($settings->taskableId);
}
?>
@if(!empty($customer))
{{ Form::hidden('taskable_type', $settings->taskableType) }}
{{ Form::hidden('taskable_id', $settings->taskableId) }}
/** Display data of resource */
<a href="{{ $customer->detailsRoute }}" target="_blank">{{ $customer->name }}</a>
<a href="tel:{{ $customer->phone }}">{{ $customer->phone }}</a>
@else
<div class="card topline">
<div class="card-header">
<label for="taskable_type">{{ __('compass.crm::labels.Select relation') }}</label>
</div>
<div class="card-body">
<x-compass-crm.relatables.input name="taskable" :label="false"/>
</div>
</div>
<x-compass-crm.relatables.side-panel/>
@endif
Method | Beschrijving |
---|---|
getTaskTitleAttribute(?string $value): ?string | Titel voor de taak |
getTaskDescriptionAttribute(?string $value): ?string | Beschrijving voor de taak |
getTaskEstimateAttribute(?string $value): ?int | De ingeschatte tijd benodigd voor de taak in minuten |
getTaskExpiresAtAttribute(?Carbon $value): ?Carbon | Het moment waarvoor de taak afgerond moet zijn |
getTaskDetailsRouteAttribute(?string $value): ?string; | Een URL waar naar gelinkt kan worden om de resource te bekijken |
taskCreated(Task $task): void; | Wordt aangeroepen wanneer de taak is aangemaakt |
taskCompleted(Task $task): void; | Wordt aangeroepen wanneer de taak is afgerond |
taskOpened(Task $task): void; | Wordt aangeroepen wanneer de taak is geopend/heropend |
taskAssigned(Task $task): void; | Wordt aangeroepen wanneer de taak is toegekend aan een gebruiker |
taskChanged(Task $task): void; | Wordt aangeroepen wanneer de taak is gewijzigd |
taskDeleted(Task $task): void; | Wordt aangeroepen wanneer de taak is verwijderd |
In de edit en show blade is de taskable resource beschikbaar onder $task->taskable
;
<x-compass-core.tasks.button class="ml-1"
taskType="crm_call_customer"
:title="__('compass.crm::tasks.Call appointment')"
:taskTitle="__('compass.financial::tasks.call_customer_about_invoice', [
'customer' => $taskCustomerName,
'invoice' => $invoice->number
])"
:taskableType="$taskCustomerType"
:taskableId="$taskCustomerId"/>
Parameter | Beschrijving |
---|---|
taskType | Het taak type op basis van de system_name van het taak type |
title | De titel van de knop |
taskTitle | De voorgedefinieerde titel die alvast wordt ingevuld in het taak toevoegen formulier |
taskableType | De class van de resource |
taskableId | Het ID van de resource |