think.studio / laravel-myriad-soap
Unofficial web integration with Myriad 5.1
1.4.0
2023-07-11 05:43 UTC
Requires
- php: ^8.0
- ext-soap: *
- illuminate/support: ^9.0|^10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.20
- orchestra/testbench: ^8.5
- phpunit/phpunit: ^10.2
- psalm/plugin-laravel: ^2.8
- vimeo/psalm: ^5.13
README
Unofficial web integration with Myriad 5.1
Installation
You can install the package via composer:
composer require think.studio/laravel-myriad-soap php artisan vendor:publish --provider="MyriadSoap\ServiceProvider" --tag="config"
Usage
Direct call via facade:
$result = MyriadSoap::SOAP_getContactCommunications(['Contact_ID' => 1234]);
/*
[
"ContactCommunication" => [
"123456;12;01234 567 890;Yes",
"123457;14;me@test.co.uk;No",
],
]
*/
By default, Myriad lists responses has unexpected string lists responses, that why will be useful helper:
MyriadSoap::SOAP_getContactCommunications_List(['Contact_ID' => 1234], 3, 'ContactCommunication' /* Optional, as appropriate key, app will try guess itself */);
Or convert response to collection:
MyriadSoap::SOAP_getContactCommunications_Collection(['Contact_ID' => 1234], [ 'ContactCommunication_ID' => fn($i) => (int) $i, 'DespatchType_ID' => fn($i) => (int) $i, 'ContactCommunication', 'PrimaryUse' => fn($i) => $i == 'Yes', ], 'ContactCommunication' /* Optional, as appropriate key, app will try guess itself */);
To fetch not strings lists use AssocCollection call:
MyriadSoap::SOAP_getOrderPackageTypes_AssocCollection([], [ 'OrderPackageType_ID' => fn($i) => (int) tap($i, fn() => throw_if(! is_numeric($i), UnexpectedTypeException::class)), 'OrderPackageType' => fn($i) => (string) $i, 'OrderPackageCategory', ], 'OrderPackageType' /* Optional, as appropriate key, app will try guess itself */);
Using feature sets that allow you to wrap your own business logic (each class should extends FunctionsSet
)
use MyriadSoap\Endpoints\FunctionsSet;
class MyContactFunctions extends FunctionsSet {
public function getContactCommunications( int $customerNumber ) {
return $this->api->call(
'SOAP_getContactCommunications',
[
'Contact_ID' => $customerNumber,
]
);
}
}
$result = MyriadSoap::functionsSet(MyContactFunctions::class)->getContactCommunications(1234);