1. Go to this page and download the library: Download slash197/reges-laravel 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/ */
slash197 / reges-laravel example snippets
use Illuminate\Support\Facades\Schedule;
Schedule::command('reges:send')->everyMinute()->withoutOverlapping();
Schedule::command('reges:results')->everyMinute()->withoutOverlapping();
Schedule::command('reges:nomenclators')->weekly();
use slash197\Reges\Data\InfoSalariat;
use slash197\Reges\Laravel\Outbox\Outbox;
use slash197\Reges\Message;
use slash197\Reges\Operation;
app(Outbox::class)->queue(
Message::salariat(Operation::InregistrareSalariat, new InfoSalariat(
cnp: $employee->cnp,
nume: $employee->last_name,
prenume: $employee->first_name,
adresa: $employee->address,
tipActIdentitate: 'CarteIdentitate',
taraDomiciliu: 'România',
nationalitate: 'România',
)),
sequence: "employee:{$employee->id}",
subject: $employee,
user: $request->user()->name,
);
use slash197\Reges\Laravel\Events\MessageAccepted;
use slash197\Reges\Laravel\Events\MessageRejected;
final class StoreRegesId
{
public function handle(MessageAccepted $event): void
{
if ($event->message->operation === 'InregistrareSalariat') {
$event->message->subject?->update(['reges_id' => $event->message->ref]);
}
}
}
final class FlagRegesRejection
{
public function handle(MessageRejected $event): void
{
$event->message->subject?->update(['reges_error' => $event->message->error]);
}
}
use slash197\Reges\Reges;
final class ShowRegesProfile
{
public function __invoke(Reges $reges): string
{
return $reges->profile()->angajatorId ?? 'unknown';
}
}
use slash197\Reges\Laravel\Facades\Reges;
$nomenclator = Reges::nomenclators()->get('TemeiIncetare');
use slash197\Reges\Credentials;
use slash197\Reges\Laravel\CredentialsProvider;
final class CompanyCredentials implements CredentialsProvider
{
public function credentials(string $registry): Credentials
{
$company = Company::findOrFail($registry);
return new Credentials($company->reges_username, $company->reges_password);
}
}
// in a service provider's register()
$this->app->singleton(CredentialsProvider::class, CompanyCredentials::class);
use slash197\Reges\Laravel\Registries;
$reges = app(Registries::class)->client((string) $company->id);
use slash197\Reges\Exception\ValidationException;
try {
$outbox->queue($message, sequence: "contract:{$contract->id}");
} catch (ValidationException $exception) {
$exception->fields(); // ['continut.salariu', 'continut.cor.cod', ...]
$exception->errors; // field => the rule it broke: '
public function handle(MessageAccepted $event): void
{
$message = $event->message;
if ($message->operation === 'InregistrareSalariat') {
$employee = $message->subject;
$employee->update(['reges_id' => $message->ref]);
foreach ($employee->contracts()->whereNull('reges_id')->get() as $contract) {
$this->outbox->queue(
Message::contract(Operation::AdaugareContract, continut: $this->continut($contract)),
sequence: "contract:{$contract->id}",
registry: $message->registry,
subject: $contract,
);
}
}
}
use Illuminate\Database\Eloquent\Relations\MorphMany;
use slash197\Reges\Laravel\Outbox\OutboxMessage;
public function regesMessages(): MorphMany
{
return $this->morphMany(OutboxMessage::class, 'subject');
}
$latest = $contract->regesMessages()->latest('id')->first();
$latest?->status; // MessageStatus::Sent
$latest?->error; // "Contractul ... nu poate fi modificat ..."
$queued->cancel();
use slash197\Reges\Laravel\Events\ResultReceived;
final class LogRegesResult
{
public function handle(ResultReceived $event): void
{
$event->result; // slash197\Reges\Results\Result
$event->registry; // the registry key
}
}
use slash197\Reges\Laravel\Registries;
use slash197\Reges\Laravel\ResultReader;
$read = app(ResultReader::class)->drain(
app(Registries::class)->client($registry),
$registry,
limit: 50,
);
$envelope = $reges->envelope($message, $user); // validated and final, not sent
// store $envelope->messageId() and $envelope->toJson() yourself
$receipt = $reges->send(Envelope::fromJson($json));
use slash197\Reges\Laravel\Events\ResultReceived;
use slash197\Reges\Laravel\Outbox\OutboxMessage;
use slash197\Reges\Results\Result;
$queued = OutboxMessage::query()->latest('id')->firstOrFail();
event(new ResultReceived(Result::fromPayload([
'header' => ['messageId' => $queued->message_id],
'result' => ['code' => 'SUCCES', 'ref' => '0f3a6c1e-0000-4000-8000-000000000001'],
])));
$this->assertSame('0f3a6c1e-0000-4000-8000-000000000001', $employee->refresh()->reges_id);
use GuzzleHttp\Client;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Psr7\Response;
use Psr\Http\Client\ClientInterface;
$responses = new MockHandler([
new Response(200, [], json_encode(['access_token' => 'token', 'expires_in' => 300])),
new Response(200, [], json_encode(['responseId' => 'r-1'])),
]);
$this->app->instance(ClientInterface::class, new Client(['handler' => HandlerStack::create($responses)]));
$this->artisan('reges:send')->assertSuccessful();