Generate UUID as shifts transaction id and fixed translation
This commit is contained in:
parent
7c448e6064
commit
bb49b308fb
|
@ -35,6 +35,7 @@ return [
|
|||
\Engelsystem\Mail\MailerServiceProvider::class,
|
||||
\Engelsystem\Http\HttpClientServiceProvider::class,
|
||||
\Engelsystem\Helpers\DumpServerServiceProvider::class,
|
||||
\Engelsystem\Helpers\UuidServiceProvider::class,
|
||||
],
|
||||
|
||||
// Application middleware
|
||||
|
|
|
@ -19,7 +19,7 @@ class ShiftsAddTransactionId extends Migration
|
|||
}
|
||||
|
||||
$this->schema->table('Shifts', function (Blueprint $table) {
|
||||
$table->unsignedInteger('transaction_id')->nullable()->default(null);
|
||||
$table->uuid('transaction_id')->index()->nullable()->default(null);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -556,19 +556,6 @@ function Shift_update($shift)
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the next free shifts transaction id
|
||||
*/
|
||||
function Shift_get_next_transaction_id($lock = true): int
|
||||
{
|
||||
$query = Db::connection()->table('Shifts')->select('transaction_id');
|
||||
if ($lock) {
|
||||
$query->lockForUpdate();
|
||||
}
|
||||
|
||||
return $query->max('transaction_id') + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new shift.
|
||||
*
|
||||
|
|
|
@ -5,6 +5,7 @@ use Engelsystem\Helpers\Carbon;
|
|||
use Engelsystem\Http\Exceptions\HttpForbidden;
|
||||
use Engelsystem\Models\Room;
|
||||
use Engelsystem\Models\User\User;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* @return string
|
||||
|
@ -365,17 +366,10 @@ function admin_shifts()
|
|||
throw_redirect(page_link_to('admin_shifts'));
|
||||
}
|
||||
|
||||
$transactionRunning = true;
|
||||
Db::connection()->beginTransaction();
|
||||
$transactionId = Shift_get_next_transaction_id();
|
||||
|
||||
$transactionId = Str::uuid();
|
||||
foreach ($session->get('admin_shifts_shifts', []) as $shift) {
|
||||
$shift['URL'] = null;
|
||||
$shift_id = Shift_create($shift, $transactionId);
|
||||
if ($transactionRunning) {
|
||||
$transactionRunning = false;
|
||||
Db::connection()->commit();
|
||||
}
|
||||
|
||||
engelsystem_log(
|
||||
'Shift created: ' . $shifttypes[$shift['shifttype_id']]
|
||||
|
@ -383,6 +377,7 @@ function admin_shifts()
|
|||
. ' with description ' . $shift['description']
|
||||
. ' from ' . date('Y-m-d H:i', $shift['start'])
|
||||
. ' to ' . date('Y-m-d H:i', $shift['end'])
|
||||
. ', transaction: ' . $transactionId
|
||||
);
|
||||
|
||||
$needed_angel_types_info = [];
|
||||
|
|
|
@ -532,7 +532,7 @@ msgid "Shift deleted."
|
|||
msgstr "Schicht gelöscht."
|
||||
|
||||
msgid "Shifts history"
|
||||
msgstr "Schichten historie"
|
||||
msgstr "Schichten Historie"
|
||||
|
||||
msgid "%s shifts deleted."
|
||||
msgstr "%s Schichten gelöscht."
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
namespace Engelsystem\Helpers;
|
||||
|
||||
use Engelsystem\Container\ServiceProvider;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class UuidServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register the UUID generator to the Str class
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
Str::createUuidsUsing([$this, 'uuid']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a v4 UUID
|
||||
*/
|
||||
public function uuid(): string
|
||||
{
|
||||
return sprintf(
|
||||
'%08x-%04x-%04x-%04x-%012x',
|
||||
mt_rand(0, 0xffffffff),
|
||||
mt_rand(0, 0xffff),
|
||||
// first bit is the uuid version, here 4
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
// variant
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
mt_rand(0, 0xffffffffffff)
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace Engelsystem\Test\Unit\Helpers;
|
||||
|
||||
use Engelsystem\Application;
|
||||
use Engelsystem\Helpers\UuidServiceProvider;
|
||||
use Engelsystem\Test\Unit\ServiceProviderTest;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class UuidServiceProviderTest extends ServiceProviderTest
|
||||
{
|
||||
/**
|
||||
* @covers \Engelsystem\Helpers\UuidServiceProvider::register
|
||||
* @covers \Engelsystem\Helpers\UuidServiceProvider::uuid
|
||||
*/
|
||||
public function testRegister()
|
||||
{
|
||||
$app = new Application();
|
||||
|
||||
$serviceProvider = new UuidServiceProvider($app);
|
||||
$serviceProvider->register();
|
||||
|
||||
$this->assertStringMatchesFormat(
|
||||
'%x%x%x%x%x%x%x%x-%x%x%x%x-4%x%x%x-%x%x%x%x-%x%x%x%x%x%x%x%x%x%x%x%x',
|
||||
Str::uuid()
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue