PHP code example of avangero / deal-cmd-package

1. Go to this page and download the library: Download avangero/deal-cmd-package library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

avangero / deal-cmd-package example snippets


use Avangero\DealCmdPackage\Application\Services\CommandProcessor;
use Avangero\DealCmdPackage\Domain\Services\CommandParser;
use Avangero\DealCmdPackage\Domain\ValueObjects\DealId;

// Реализуйте интерфейсы доменного слоя под вашу систему:
// - DealRepositoryInterface
// - MessageSenderInterface
// - LoggerInterface (можно адаптировать PSR-3)
// - CommandConfigurationInterface
// - CommandMapperInterface
// - MessageProviderInterface

// Затем создайте CommandProcessor, передав зависимости и список команд
$processor = new CommandProcessor(
    parser: new CommandParser($messageProvider),
    logger: $logger,
    messageProvider: $messageProvider,
    commandMapper: $commandMapper,
    commands: [
        $acceptedCommand,
        $contactCommand,
        $closeReasonCommand,
        $reasonCommand,
    ]
);

$result = $processor->process('/принято 500 офис', new DealId(123));

use Avangero\\DealCmdPackage\\Domain\\Ports\\DealRepositoryInterface;
use Avangero\\DealCmdPackage\\Domain\\Ports\\MessageSenderInterface;
use App\\Services\\CrmDealRepository;
use App\\Services\\CrmMessageSender;

public function register(): void
{
    $this->app->bind(DealRepositoryInterface::class, CrmDealRepository::class);
    $this->app->bind(MessageSenderInterface::class, CrmMessageSender::class);
}

use Avangero\\DealCmdPackage\\Application\\Services\\CommandProcessor;
use Avangero\\DealCmdPackage\\Domain\\ValueObjects\\DealId;

public function processCommand(Request $request, CommandProcessor $processor)
{
    $result = $processor->process($request->string('command'), new DealId((int) $request->input('deal_id')));

    return response()->json([
        'success' => $result->isSuccess(),
        'message' => $result->isSuccess() ? $result->getMessage() : $result->getErrorMessage(),
    ]);
}

return [
    'accepted' => [
        'amount_property' => 14,
        'type_property' => 15,
    ],
    'close_reason' => [
        'close_reason_property' => 222,
    ],
    'reason' => [
        'close_reason_property' => 222,
    ],
    'contact' => [],
];

return [
    'принято' => 'accepted',
    'контакт' => 'contact',
    'причина_закрытия' => 'close_reason',
    'причина' => 'reason',
];
bash
php artisan vendor:publish --provider="Avangero\\DealCmdPackage\\Infrastructure\\Laravel\\DealCmdServiceProvider"