Task Types

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.

Het toevoegen van een nieuw taak type

  1. Controleer of er al een TaskTypesSeeder beschikbaar is in het project, zo niet maak een nieuwe class genaamd TaskTypesSeeder aan en laat deze class de compass core Tasks\TypesSeeder extenden
  2. Roep in de run method van de seeder de functie $this->addTaskType aan, met deze functie is het toevoegen van vertalingen versimpeld
  3. Definieer het nieuwe taak type zoals in het volgende voorbeeld. De views en class zijn optioneel
    $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'                                       
    ]);                                                             
  4. Als er een class toegevoegd wordt aan het taak type moet de class de interface 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 werken met custom blades

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

Taskable Model Interface

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;

Het direct aanroepen van een taak type met een voorgedefinieerde resource

  1. Voeg de het volgende component toe op de gewenste plek
    <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