37 Commits
Author SHA1 Message Date
Torstem_JetBrain 3e291171a8 Feature: ermögliche den Import von CSV-Daten 2023-02-25 12:12:53 +01:00
Torstem_JetBrain 7ef5c43901 Bugfix: Füge Vorassetzungen hinzu 2023-02-25 12:10:52 +01:00
TorstenHettstedt 9932f33c34 Merge pull request 'feature-ui/eintrag-per-woche' (#23) from feature-ui/eintrag-per-woche into master
Reviewed-on: #23
2022-02-28 16:04:31 +01:00
Torstem_JetBrain 06128f72fc Feature: Der Wechsel der Eintrags-Periode wird durch ein Menu bestimmt 2022-02-25 12:20:13 +01:00
Torstem_JetBrain 18c5c45c26 Fix: Änderungen des Datums müssen verarbeitet werden 2022-02-25 10:59:12 +01:00
Torstem_JetBrain 0a21c6ed35 Feature: Die Einträge werden als Liste bereitgestellt
Dadurch kann auch eine ganze Woche eingetragen werden.
2022-02-24 16:26:00 +01:00
Torstem_JetBrain 47ed408185 Feature: Die Liste der Einträge kann gefiltert werden 2022-02-24 16:24:34 +01:00
Torstem_JetBrain 0813fd637b Fix: Der pure Aufruf darf nicht durch einen *Catch*-Verarbeitung abgebrochen werden 2022-02-24 16:23:49 +01:00
Torstem_JetBrain 094b50d33d Fix-Test: Prüfung auf eine leere Liste muss ausgelagert werden 2022-02-02 23:39:25 +01:00
Torstem_JetBrain 3bd3e6837a Feature: Methode zum Filtern der Einträge per Query in den *Controller* einbauen 2022-02-02 23:21:38 +01:00
Torstem_JetBrain 4da284a0a6 Test-Fix: vorgeschriebenen Query-Namen benutzen 2022-02-02 23:20:28 +01:00
Torstem_JetBrain 084abbf42c Feature: Methode zum Filtern der Einträge einbauen 2022-02-02 22:36:58 +01:00
Torstem_JetBrain bcc6448fa1 Test: Erzeuge die Tests für die gefilterte Abfragen 2022-02-02 22:30:58 +01:00
Torstem_JetBrain 1fc54f4b89 Core: Füge benötigte Erweiterungen hinzu 2022-02-02 14:33:19 +01:00
Torstem_JetBrain d4ddd4f32c Test: Filter laut *OpenAPI* testen 2022-02-01 15:50:49 +01:00
Torstem_JetBrain 90c6ef0c53 Docu: Filter bestimmen 2022-02-01 15:50:09 +01:00
Torstem_JetBrain 1ebf57ac3b Docu: Vorgehensweise bestimmen 2022-01-27 15:12:24 +01:00
Torstem_JetBrain 13554d09e0 Feature: Darstellung der wöchentlichen Eintragung bestimmen 2022-01-12 13:22:28 +01:00
Torstem_JetBrain b46f5634c8 Bugfix: Warnung abschalten 2022-01-12 13:20:50 +01:00
Torstem_JetBrain 77cfcc72b4 Merge branch 'master' into feature-ui/eintrag-per-woche
# Conflicts:
#	ui/src/components/Repositories.svelte
#	ui/src/routes/WorkingHours.svelte
2022-01-10 15:56:56 +01:00
TorstenHettstedt ea93400135 Merge pull request 'feature-ui/speichern-und-weiter' (#22) from feature-ui/speichern-und-weiter into master
Reviewed-on: #22
2022-01-10 15:51:17 +01:00
Torstem_JetBrain 646537e19c Bugfix: Fehler bei nicht vorhandenen Daten beseitigen 2022-01-10 14:47:05 +01:00
Torstem_JetBrain efadeb501b Refactor: Bereinige von nicht genutzten Variablen 2022-01-10 14:17:43 +01:00
Torstem_JetBrain cf50607f43 Feature: Es wird beachtet, dass es schon vorhandene Daten geben kann 2022-01-10 14:16:41 +01:00
Torstem_JetBrain d133cb017b Feature: Schnellere Eingabe der Daten ist möglich 2021-12-16 12:20:37 +01:00
Torstem_JetBrain ad253a82f5 Feature: Testdaten für die Tests-Tabelle 2021-12-16 11:54:56 +01:00
TorstenHettstedt fb91d1121e Merge pull request 'refactor/js-repositories' (#20) from refactor/js-repositories into master
Reviewed-on: #20
2021-12-15 20:41:24 +01:00
TorstenHettstedt e10b72e086 Merge pull request 'bugfix/rest-api-phpstan' (#21) from bugfix/rest-api-phpstan into master
Reviewed-on: #21
2021-12-15 19:50:35 +01:00
Torstem_JetBrain aae4764f5e Refactor: Probleme für PHP-Storm beseitigen 2021-12-15 19:48:20 +01:00
Torstem_JetBrain 371425f3c5 Bugfix: PHPStan kommt damit nicht klar 2021-12-15 19:47:41 +01:00
Torstem_JetBrain c3a1953cc9 Refactor: Anzeige der verschiedenen Zeiträume verbessern 2021-12-15 18:50:32 +01:00
Torstem_JetBrain 66022e42df Refactor: Aufteilung der Darstellung der Einträge 2021-12-15 18:21:29 +01:00
Torstem_JetBrain 907ce88ed1 fix: Export-Objekte müssen konstant sein 2021-12-15 18:16:48 +01:00
Torstem_JetBrain 45650a0f9a refactor: Abfrage in ein eigenes Modul ausgelagert. 2021-12-15 17:47:02 +01:00
Torstem_JetBrain d13fce569b fix: Richtige Methode nutzen 2021-12-14 12:49:52 +01:00
Torstem_JetBrain fafc2a0ad5 refactor: Eintrag-Feldset ist in eigenen Modul besser aufgehoben
Eine Erweiterung auf weitere Möglichkeiten lassen sich so besser umsetzen.
2021-12-14 12:32:22 +01:00
Torstem_JetBrain f3ff303b93 refactor: REST-API-Abfrage ist in eigenes Modul ausgelagert worden 2021-12-14 12:28:58 +01:00
30 changed files with 1772 additions and 322 deletions
+2 -1
View File
@@ -21,7 +21,8 @@
"slim/psr7": "^1.3",
"php-di/slim-bridge": "^3.1.0",
"jetbrains/phpstorm-attributes": "^1.0.0",
"myclabs/php-enum": "^1.8.0"
"myclabs/php-enum": "^1.8.0",
"ext-pdo": "*"
},
"require-dev": {
"phpstan/phpstan": "^0.12.80",
+29
View File
@@ -18,6 +18,15 @@
"tags": [
"Eintragungen Arbeitszeiten"
],
"description": "Liefert eine Liste der Einträge. Kann gefiltert werden und dadurch eine leere Liste zurückgeben",
"parameters": [
{
"$ref": "#/components/parameters/start-date"
},
{
"$ref": "#/components/parameters/end-date"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ListEntities"
@@ -259,6 +268,26 @@
"type": "string",
"format": "date"
}
},
"start-date" : {
"description": "Filtert Liste ab Datum",
"name": "start-date",
"in" : "query",
"required": false,
"schema": {
"type": "string",
"format": "date"
}
},
"end-date" : {
"description": "Filtert Liste bis Datum",
"name": "end-date",
"in" : "query",
"required": false,
"schema": {
"type": "string",
"format": "date"
}
}
},
"responses": {
@@ -12,6 +12,7 @@ use Slim\Exception\HttpNotFoundException;
use Slim\Psr7\Request;
use Slim\Psr7\Response;
use TorstenHettstedt\TimekeepingApi\Models\WorkingHours;
use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryBadWhereDataException;
use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryRecordAlreadyExistException;
use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryRecordNotFoundException;
use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursRepository;
@@ -50,13 +51,20 @@ class WorkingHoursController extends AbstractController
* @return Response
*
* @throws HttpInternalServerErrorException
* @throws HttpBadRequestException
* @noinspection PhpUnusedParameterInspection
*/
public function browse(Request $request, Response $response, array $args): Response
{
$repository = new WorkingHoursRepository($this->databases);
$queryParams = $request->getQueryParams();
try {
return $this->printResponse($response, $repository->findAll(), StatusCodeInterface::STATUS_OK);
return $this->printResponse($response, $repository->findFiltered(
$queryParams['start-date'] ?? null,
$queryParams['end-date'] ?? null
), StatusCodeInterface::STATUS_OK);
} catch (RepositoryBadWhereDataException $exception) {
throw new HttpBadRequestException($request, 'Ein Wert für das Datum im Query ist ungültig', $exception);
} catch (Exception $exception) {
throw new HttpInternalServerErrorException($request, 'Der Wert für das Datum oder die Zeit ist falsch in der Datenbank', $exception);
}
@@ -0,0 +1,10 @@
<?php
namespace TorstenHettstedt\TimekeepingApi\Repositories;
class RepositoryBadWhereDataException extends RepositoryException
{
}
@@ -10,6 +10,7 @@ use Exception;
use InvalidArgumentException;
use PDO;
use PDOException;
use PDOStatement;
use TorstenHettstedt\TimekeepingApi\Models\ModelInterface;
use TorstenHettstedt\TimekeepingApi\Models\WorkingHours;
@@ -42,10 +43,33 @@ class WorkingHoursRepository implements RepositoryReaderInterface, RepositoryWri
* @throws PDOException
*/
public function findAll(): array
{
return $this->findFiltered(null, null);
}
/**
*
* Gibt alle vorhandenen Einträge zurück
*
* @param string|null $start
* @param string|null $end
*
* @return WorkingHours[]
* @throws Exception
*/
public function findFiltered(?string $start, ?string $end): array
{
$models = [];
$stmt = $this->database->prepare('select "Datum" as "workingDay", "Arbeitszeit" as "workingTime" from public."Arbeitszeiten" order by "Datum"');
$stmt->execute();
$stmt = $this->buildFindFilteredStatement($start, $end);
try {
$stmt->execute();
} catch (PDOException $exception) {
if ($exception->getCode() === '22007' || $exception->getCode() === '22008') {
throw new RepositoryBadWhereDataException($exception);
}
throw $exception;
}
while ($row = $stmt->fetch()) {
$model = new WorkingHours();
$model
@@ -56,6 +80,35 @@ class WorkingHoursRepository implements RepositoryReaderInterface, RepositoryWri
return $models;
}
protected function buildFilterString(?string $start, ?string $end): string
{
if (is_string($start) && is_string($end)) {
return 'where "Datum" >= :start AND "Datum" <= :end ';
}
if (is_string($start)) {
return 'where "Datum" >= :start ';
}
if (is_string($end)) {
return 'where "Datum" <= :end ';
}
return '';
}
protected function buildFindFilteredStatement(?string $start, ?string $end): ?PDOStatement
{
$query = 'select "Datum" as "workingDay", "Arbeitszeit" as "workingTime" from public."Arbeitszeiten" ';
$query .= $this->buildFilterString($start, $end);
$query .= 'order by "Datum"';
$stmt = $this->database->prepare($query);
if (is_string($start)) {
$stmt->bindParam(':start', $start);
}
if (is_string($end)) {
$stmt->bindParam(':end', $end);
}
return $stmt ?? null;
}
/**
* Gibt den Eintrag zurück, der durch die ID
*
@@ -3,6 +3,7 @@
namespace TorstenHettstedt\TimekeepingApi\Tests\Api\WorkingHours;
use ApiTester;
use Codeception\Example;
use Codeception\Util\HttpCode;
use Helper\Api;
@@ -22,14 +23,67 @@ class BrowseWorkingHoursCest
/**
* @param ApiTester $I
*
* @dataProvider validWorkingHoursFilterProvider
*/
public function browseWorkingHours(ApiTester $I): void
public function browseEmptyWorkingHours(ApiTester $I): void
{
$I->haveHttpHeader('Origin', Api::TEST_ORIGIN);
$I->sendGet('/working-hours');
$I->sendGet('/working-hours', ['start-date' => '2020-04-01', 'end-date' => '2020-04-30']);
$I->seeResponseCodeIs(HttpCode::OK);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
$I->seeResponseIsJson();
$I->seeResponseEquals('[]');
}
public function validWorkingHoursFilterProvider(): array
{
return [
[[null]],
[['start-date' => '2020-01-01', 'end-date' => '2020-01-08']],
[['start-date' => '2020-01-01', 'end-date' => '2020-04-30']],
[['start-date' => '2020-03-01', 'end-date' => '2020-03-07']],
];
}
/**
* @param ApiTester $I
* @param Example $example
*
* @dataProvider validWorkingHoursFilterProvider
*/
public function browseWorkingHours(ApiTester $I, Example $example): void
{
$I->haveHttpHeader('Origin', Api::TEST_ORIGIN);
$I->sendGet('/working-hours', $example[0]);
$I->seeResponseCodeIs(HttpCode::OK);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
$I->seeResponseIsJson();
$I->seeResponseMatchesJsonType(Api::WORKING_HOURS_JSON_FORMAT);
}
public function invalidWorkingHoursFilterProvider(): array
{
return [
['2020-11-31'],
['2020-11'],
['2020'],
];
}
/**
* @param ApiTester $I
* @param Example $example
*
* @dataProvider invalidWorkingHoursFilterProvider
*/
public function browseWorkingHoursWithWrongFilterDate(ApiTester $I, Example $example): void
{
$I->haveHttpHeader('Origin', Api::TEST_ORIGIN);
$I->sendGet('/working-hours', ['start-date' => $example[0]]);
$I->seeResponseCodeIs(HttpCode::BAD_REQUEST);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
$I->seeResponseIsJson();
$I->seeResponseMatchesJsonType(Api::ERROR_JSON_FORMAT);
}
}
@@ -2,6 +2,7 @@
namespace TorstenHettstedt\TimekeepingApi\Tests\Unit\Controller;
use Codeception\Example;
use Codeception\Test\Unit;
use Exception;
use PDO;
@@ -25,8 +26,8 @@ class WorkingHoursControllerTest extends Unit
const NEW_INTERVAL = '07:59:00';
protected ContainerInterface $container;
protected Request $request;
protected Response $response;
protected Request $request;
protected Response $response;
/**
* @throws Exception
@@ -37,16 +38,16 @@ class WorkingHoursControllerTest extends Unit
/** @noinspection SpellCheckingInspection */
$this->container = $this->makeEmpty(ContainerInterface::class, [
'has' => true,
'get' => new PDO('pgsql:host=psql.torsten-hettstedt.net;port=5432;dbname=testdb;user=bruce;password=mypass')
'get' => new PDO('pgsql:host=psql.torsten-hettstedt.net;port=5432;dbname=testdb;user=bruce;password=mypass'),
]);
$this->request = $this->makeEmpty(Request::class, [
'getParsedBody' => [
'workingDay' => self::EXISTING_DATE,
'workingTime' => self::EXISTING_INTERVAL,
]
'getParsedBody' => [
'workingDay' => self::EXISTING_DATE,
'workingTime' => self::EXISTING_INTERVAL,
],
]);
$this->response = $this->makeEmpty(Response::class, [
'getBody' => $this->makeEmpty(StreamInterface::class, [
'getBody' => $this->makeEmpty(StreamInterface::class, [
'write' => function (mixed $data) {
$this->assertIsString($data);
$this->assertJson($data);
@@ -65,23 +66,202 @@ class WorkingHoursControllerTest extends Unit
public function testConstructWithNonDatabase(): void
{
$this->container = $this->makeEmpty(ContainerInterface::class, [
'has' => false
'has' => false,
]);
$this->expectException(NotDatabasesException::class);
new WorkingHoursController($this->container);
}
/**
* @return array<int, array<int, array<string, string>>>
*/
public function valideFilterDataProvider(): array
{
return [
[
[],
],
[
[
'start-date' => '2020-03-01',
'end-date' => '2020-03-31',
],
],
[
[
'start-date' => '2020-03-01',
],
],
[
[
'end-date' => '2020-03-31',
],
],
];
}
/**
* @param array<string, string> $queryParams
*
* @dataProvider valideFilterDataProvider
*
* @throws HttpInternalServerErrorException
* @throws NotDatabasesException
* @throws Exception
*/
public function testBrowse(): void
public function testBrowseWithValideParameter(array $queryParams): void
{
$this->request = $this->makeEmpty(Request::class, [
'getQueryParams' => $queryParams,
]);
$controller = new WorkingHoursController($this->container);
$response = $controller->browse($this->request, $this->response, []);
$this->assertInstanceOf(Response::class, $response);
}
/**
* @return array<int, array<int, array<string, string|null>>>
*/
public function invalideFilterDataProvider(): array
{
return [
[
[
'start-date' => '',
'end-date' => '',
],
],
[
[
'start-date' => '',
],
],
[
[
'end-date' => '',
],
],
[
[
'start-date' => '2020-03-01',
'end-date' => '',
],
],
[
[
'start-date' => '',
'end-date' => '2020-03-31',
],
],
//
[
[
'start-date' => '2020-03-00',
'end-date' => '2020-04-31',
],
],
[
[
'start-date' => '2020-03-00',
],
],
[
[
'end-date' => '2020-04-31',
],
],
[
[
'start-date' => '2020-03-01',
'end-date' => '2020-04-31',
],
],
[
[
'start-date' => '2020-03-00',
'end-date' => '2020-03-31',
],
],
//
[
[
'start-date' => '2020-03',
'end-date' => '2020-03',
],
],
[
[
'start-date' => '2020-03',
],
],
[
[
'end-date' => '2020-03',
],
],
[
[
'start-date' => '2020-03-01',
'end-date' => '2020-03',
],
],
[
[
'start-date' => '2020-03',
'end-date' => '2020-03-31',
],
],
//
[
[
'start-date' => '2020',
'end-date' => '2020',
],
],
[
[
'start-date' => '2020',
],
],
[
[
'end-date' => '2020',
],
],
[
[
'start-date' => '2020-03-01',
'end-date' => '2020',
],
],
[
[
'start-date' => '2020',
'end-date' => '2020-03-31',
],
],
];
}
/**
* @param array<string, string> $queryParams
*
* @dataProvider invalideFilterDataProvider
*
* @throws HttpInternalServerErrorException
* @throws NotDatabasesException
* @throws Exception
*/
public function testBrowseWithInvalideParameter(array $queryParams): void
{
$this->request = $this->makeEmpty(Request::class, [
'getQueryParams' => $queryParams,
]);
$controller = new WorkingHoursController($this->container);
$this->expectException(HttpBadRequestException::class);
$controller->browse($this->request, $this->response, []);
}
/**
* @throws NotDatabasesException
* @throws HttpBadRequestException
@@ -91,7 +271,7 @@ class WorkingHoursControllerTest extends Unit
{
$controller = new WorkingHoursController($this->container);
$response = $controller->update($this->request, $this->response, [
'id' => self::EXISTING_DATE
'id' => self::EXISTING_DATE,
]);
$this->assertInstanceOf(Response::class, $response);
}
@@ -106,23 +286,23 @@ class WorkingHoursControllerTest extends Unit
$controller = new WorkingHoursController($this->container);
$this->expectException(HttpNotFoundException::class);
$controller->update($this->request, $this->response, [
'id' => self::NEW_DATE
'id' => self::NEW_DATE,
]);
}
/**
* @return string[][]
*/
public function invalidDataProvider(): array
public function invalidCreatDataProvider(): array
{
return [
[
self::NEW_DATE,
'07:59'
'07:59',
],
[
'2020-13-33',
self::NEW_INTERVAL
self::NEW_INTERVAL,
],
];
}
@@ -131,7 +311,7 @@ class WorkingHoursControllerTest extends Unit
* @param string $date
* @param string $time
*
* @dataProvider invalidDataProvider
* @dataProvider invalidCreatDataProvider
*
* @throws HttpBadRequestException
* @throws HttpConflictRequestException
@@ -145,7 +325,7 @@ class WorkingHoursControllerTest extends Unit
'getParsedBody' => [
'workingDay' => $date,
'workingTime' => $time,
]
],
]);
$controller = new WorkingHoursController($this->container);
$this->expectException(HttpBadRequestException::class);
@@ -165,7 +345,7 @@ class WorkingHoursControllerTest extends Unit
'getParsedBody' => [
'workingDay' => self::NEW_DATE,
'workingTime' => self::NEW_INTERVAL,
]
],
]);
$controller = new WorkingHoursController($this->container);
$response = $controller->creat($this->request, $this->response, []);
@@ -185,7 +365,7 @@ class WorkingHoursControllerTest extends Unit
'getParsedBody' => [
'workingDay' => self::EXISTING_DATE,
'workingTime' => self::EXISTING_INTERVAL,
]
],
]);
$controller = new WorkingHoursController($this->container);
$this->expectException(HttpConflictRequestException::class);
@@ -201,7 +381,7 @@ class WorkingHoursControllerTest extends Unit
{
$controller = new WorkingHoursController($this->container);
$response = $controller->read($this->request, $this->response, [
'id' => self::EXISTING_DATE
'id' => self::EXISTING_DATE,
]);
$this->assertInstanceOf(Response::class, $response);
}
@@ -216,7 +396,7 @@ class WorkingHoursControllerTest extends Unit
$controller = new WorkingHoursController($this->container);
$this->expectException(HttpNotFoundException::class);
$controller->read($this->request, $this->response, [
'id' => self::NEW_DATE
'id' => self::NEW_DATE,
]);
}
}
+15 -19
View File
@@ -31,7 +31,6 @@ class ErrorHandlerTest extends Unit
protected function _before(): void
{
parent::_before();
/** @noinspection PhpFieldAssignmentTypeMismatchInspection */
$this->app = $this->makeEmpty(App::class, [
'getResponseFactory' => $this->makeEmpty(ResponseFactoryInterface::class, [
'createResponse' => $this->makeEmpty(ResponseInterface::class, [
@@ -44,15 +43,18 @@ class ErrorHandlerTest extends Unit
]),
]),
]);
/** @noinspection PhpFieldAssignmentTypeMismatchInspection */
$this->request = $this->makeEmpty(ServerRequestInterface::class, [
'getAttribute' => function($name) {
return match ($name) {
RouteContext::ROUTE_PARSER => $this->makeEmpty(RouteParserInterface::class),
RouteContext::ROUTING_RESULTS => $this->makeEmpty(RoutingResults::class),
default => null,
};
}
'getAttribute' => function ($name) {
/** @noinspection PhpSwitchCanBeReplacedWithMatchExpressionInspection */
switch ($name) {
case RouteContext::ROUTE_PARSER:
return $this->makeEmpty(RouteParserInterface::class);
case RouteContext::ROUTING_RESULTS:
return $this->makeEmpty(RoutingResults::class);
default:
return null;
}
},
]);
}
@@ -61,13 +63,11 @@ class ErrorHandlerTest extends Unit
*/
public function testUseWithLogger(): void
{
/** @noinspection PhpFieldAssignmentTypeMismatchInspection */
$this->exception = $this->make(Exception::class, [
'message' => '',
'code' => 400,
'file' => '/path(to/file',
]);
/** @noinspection PhpFieldAssignmentTypeMismatchInspection */
$this->logger = $this->makeEmpty(LoggerInterface::class, [
'error' => Expected::once(),
]);
@@ -81,14 +81,12 @@ class ErrorHandlerTest extends Unit
*/
public function testUseWithHttpException(): void
{
/** @noinspection PhpFieldAssignmentTypeMismatchInspection */
$this->exception = $this->make(HttpException::class, [
'message' => '',
'code' => 400,
'file' => '/path(to/file',
'getTitle' => Expected::once('The Title'),
'message' => '',
'code' => 400,
'file' => '/path(to/file',
'getTitle' => Expected::once('The Title'),
]);
/** @noinspection PhpFieldAssignmentTypeMismatchInspection */
$this->logger = $this->makeEmpty(LoggerInterface::class, []);
$middleWare = new ErrorHandler($this->app);
@@ -101,13 +99,11 @@ class ErrorHandlerTest extends Unit
*/
public function testUseWithGeneralException(): void
{
/** @noinspection PhpFieldAssignmentTypeMismatchInspection */
$this->exception = $this->make(Exception::class, [
'message' => '',
'code' => 400,
'file' => '/path(to/file',
]);
/** @noinspection PhpFieldAssignmentTypeMismatchInspection */
$this->logger = $this->makeEmpty(LoggerInterface::class, []);
$middleWare = new ErrorHandler($this->app);
@@ -2,6 +2,7 @@
namespace TorstenHettstedt\TimekeepingApi\Tests\Unit\Repositories;
use Codeception\Example;
use Codeception\Test\Unit;
use DateInterval;
use DateTime;
@@ -10,6 +11,7 @@ use InvalidArgumentException;
use PDO;
use TorstenHettstedt\TimekeepingApi\Models\ModelInterface;
use TorstenHettstedt\TimekeepingApi\Models\WorkingHours;
use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryBadWhereDataException;
use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryRecordAlreadyExistException;
use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryRecordNotFoundException;
use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursRepository;
@@ -22,7 +24,7 @@ class WorkingHoursRepositoryTest extends Unit
const NEW_INTERVAL = 'PT7H59M';
const RECORDS_COUNT = 61;
protected PDO $pdoObject;
protected PDO $pdoObject;
protected function _before(): void
{
@@ -34,7 +36,7 @@ class WorkingHoursRepositoryTest extends Unit
/**
* @throws Exception
*/
public function testFindAll(): void
public function testFindAllWithBlankParameter(): void
{
$repository = new WorkingHoursRepository($this->pdoObject);
$models = $repository->findAll();
@@ -43,6 +45,81 @@ class WorkingHoursRepositoryTest extends Unit
$this->assertCount(self::RECORDS_COUNT, $models);
}
/**
* @return array<int, array<int|string|null>>
*/
public function valideFilterParameter(): array
{
return [
[null, null, 61,],
['2020-04-01', null, 0,],
['2020-04-01', '2020-04-30', 0,],
[null, '2020-04-30', 61,],
['2020-03-01', null, 22,],
['2020-03-01', '2020-03-31', 22,],
['2020-03-01', '2020-03-07', 5,],
];
}
/**
* @param string|null $start
* @param string|null $ende
* @param int $count
*
* @dataProvider valideFilterParameter
*
* @throws Exception
*/
public function testFindAllWithValideParameter(?string $start, ?string $ende, int $count): void
{
$repository = new WorkingHoursRepository($this->pdoObject);
$models = $repository->findFiltered($start, $ende);
$this->assertIsArray($models);
$this->assertContainsOnly(WorkingHours::class, $models);
$this->assertCount($count, $models);
}
/**
* @return array<int, array<int|string|null>>
*/
public function invalideFilterParameter(): array
{
return [
['2020-04-31',null],
[null, '2020-04-31'],
['2020-04-00','2020-04-31'],
['2020-04-01','2020-04-31'],
['2020-04-00','2020-04-30'],
//
['2020-04', null],
[null, '2020-04'],
['2020-04', '2020-04'],
['2020-04-01','2020-04'],
['2020-04', '2020-04-30'],
//
['2020', null],
[null, '2020'],
['2020', '2020'],
['2020-04-01','2020'],
['2020', '2020-04-30'],
];
}
/**
* @param string|null $start
* @param string|null $ende
*
* @dataProvider invalideFilterParameter
*
* @throws Exception
*/
public function testFindAllWithInvalideParameter(?string $start, ?string $ende): void
{
$repository = new WorkingHoursRepository($this->pdoObject);
$this->expectException(RepositoryBadWhereDataException::class);
$repository->findFiltered($start, $ende);
}
/**
* @throws RepositoryRecordNotFoundException
*/
+16 -1
View File
@@ -1,5 +1,20 @@
#!/usr/bin/env bash
create_css_files() {
cd ui/public || exit 2
lessc --source-map less/print.less print.css
lessc --source-map less/global.less global.css
cd ../..
}
install_ui_dependence() {
cd ui/ || exit 2
npm install
cd ..
}
install_api_dependence() {
cd api/ || exit 2
composer install
@@ -29,4 +44,4 @@ composer_run() {
docker-compose up -d
}
install_api_dependence && build_ui && test_unit && composer_run && test_api
create_css_files && install_ui_dependence && install_api_dependence && build_ui && test_unit && composer_run && test_api
+4 -3
View File
@@ -3,9 +3,10 @@
salt
{
Datum |"Datum <&calendar>"
Uhrzeit | "Uhrzeit <&clock>"
[Übernehmen <&plus>]
{/ <b>Täglich | Wöchentlich }
Datum |"0000-00-00 <&calendar>"
Uhrzeit | "00:00:00 <&clock>"
[Übernehmen und weiter <&plus>]
[Abbrechen <&action-undo>]
}
@enduml
@@ -3,7 +3,9 @@
salt
{
Woche vom <&calendar> bis zum <&calendar>
{/ Täglich | <b>Wöchentlich }
Woche vom
"0000-00-00 <&calendar>"
[<&chevron-left> Woche zurück] | [Woche vor <&chevron-right>]
{!
Montag | "00:00:00 <&clock>"
@@ -14,7 +16,7 @@ salt
<color:red>Samstag | "<color:red>00:00:00 <&clock>"
<color:red>Sontag | "<color:red>00:00:00 <&clock>"
}
[Übernehmen <&plus>]
[Übernehmen und weiter <&plus>]
[Abbrechen <&action-undo>]
}
@enduml
+442
View File
@@ -0,0 +1,442 @@
truncate table public."Arbeitszeiten";
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-09', '0 years 0 mons 0 days 8 hours 32 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-10', '0 years 0 mons 0 days 8 hours 23 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-11', '0 years 0 mons 0 days 8 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-14', '0 years 0 mons 0 days 8 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-15', '0 years 0 mons 0 days 9 hours 11 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-16', '0 years 0 mons 0 days 8 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-17', '0 years 0 mons 0 days 9 hours 7 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-18', '0 years 0 mons 0 days 7 hours 31 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-21', '0 years 0 mons 0 days 8 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-22', '0 years 0 mons 0 days 8 hours 31 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-23', '0 years 0 mons 0 days 9 hours 7 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-24', '0 years 0 mons 0 days 7 hours 17 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-25', '0 years 0 mons 0 days 7 hours 22 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-04', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-05', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-06', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-07', '0 years 0 mons 0 days 7 hours 53 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-08', '0 years 0 mons 0 days 8 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-11', '0 years 0 mons 0 days 6 hours 53 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-12', '0 years 0 mons 0 days 8 hours 48 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-13', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-14', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-15', '0 years 0 mons 0 days 7 hours 57 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-18', '0 years 0 mons 0 days 8 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-19', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-21', '0 years 0 mons 0 days 15 hours 18 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-22', '0 years 0 mons 0 days 4 hours 26 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-25', '0 years 0 mons 0 days 8 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-26', '0 years 0 mons 0 days 8 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-02-27', '0 years 0 mons 0 days 7 hours 37 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-01-28', '0 years 0 mons 0 days 8 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-01', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-04', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-05', '0 years 0 mons 0 days 8 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-06', '0 years 0 mons 0 days 8 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-07', '0 years 0 mons 0 days 8 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-08', '0 years 0 mons 0 days 7 hours 53 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-11', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-12', '0 years 0 mons 0 days 7 hours 34 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-13', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-14', '0 years 0 mons 0 days 8 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-15', '0 years 0 mons 0 days 8 hours 25 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-18', '0 years 0 mons 0 days 7 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-19', '0 years 0 mons 0 days 8 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-20', '0 years 0 mons 0 days 8 hours 37 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-21', '0 years 0 mons 0 days 8 hours 34 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-22', '0 years 0 mons 0 days 7 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-25', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-26', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-27', '0 years 0 mons 0 days 8 hours 28 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-28', '0 years 0 mons 0 days 8 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-03-29', '0 years 0 mons 0 days 6 hours 46 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-01', '0 years 0 mons 0 days 8 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-02', '0 years 0 mons 0 days 8 hours 36 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-03', '0 years 0 mons 0 days 7 hours 57 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-04', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-05', '0 years 0 mons 0 days 8 hours 23 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-08', '0 years 0 mons 0 days 7 hours 52 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-09', '0 years 0 mons 0 days 8 hours 36 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-10', '0 years 0 mons 0 days 8 hours 36 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-11', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-12', '0 years 0 mons 0 days 7 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-15', '0 years 0 mons 0 days 10 hours 23 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-16', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-17', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-18', '0 years 0 mons 0 days 5 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-23', '0 years 0 mons 0 days 7 hours 46 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-24', '0 years 0 mons 0 days 8 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-25', '0 years 0 mons 0 days 8 hours 46 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-04-26', '0 years 0 mons 0 days 8 hours 12 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-06', '0 years 0 mons 0 days 8 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-07', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-08', '0 years 0 mons 0 days 10 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-09', '0 years 0 mons 0 days 7 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-10', '0 years 0 mons 0 days 7 hours 56 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-13', '0 years 0 mons 0 days 8 hours 26 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-14', '0 years 0 mons 0 days 8 hours 19 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-15', '0 years 0 mons 0 days 7 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-16', '0 years 0 mons 0 days 7 hours 39 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-17', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-20', '0 years 0 mons 0 days 8 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-21', '0 years 0 mons 0 days 9 hours 25 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-22', '0 years 0 mons 0 days 8 hours 31 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-23', '0 years 0 mons 0 days 7 hours 41 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-24', '0 years 0 mons 0 days 7 hours 36 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-27', '0 years 0 mons 0 days 8 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-28', '0 years 0 mons 0 days 8 hours 3 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-05-29', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-03', '0 years 0 mons 0 days 8 hours 37 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-04', '0 years 0 mons 0 days 8 hours 37 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-05', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-06', '0 years 0 mons 0 days 7 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-07', '0 years 0 mons 0 days 7 hours 35 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-11', '0 years 0 mons 0 days 8 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-12', '0 years 0 mons 0 days 8 hours 25 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-13', '0 years 0 mons 0 days 8 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-14', '0 years 0 mons 0 days 4 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-17', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-18', '0 years 0 mons 0 days 8 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-19', '0 years 0 mons 0 days 8 hours 34 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-20', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-21', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-24', '0 years 0 mons 0 days 8 hours 51 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-25', '0 years 0 mons 0 days 8 hours 7 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-26', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-27', '0 years 0 mons 0 days 6 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-06-28', '0 years 0 mons 0 days 7 hours 18 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-01', '0 years 0 mons 0 days 7 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-02', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-03', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-04', '0 years 0 mons 0 days 7 hours 46 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-05', '0 years 0 mons 0 days 8 hours 3 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-08', '0 years 0 mons 0 days 8 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-09', '0 years 0 mons 0 days 8 hours 24 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-10', '0 years 0 mons 0 days 8 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-11', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-12', '0 years 0 mons 0 days 7 hours 15 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-15', '0 years 0 mons 0 days 8 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-16', '0 years 0 mons 0 days 8 hours 19 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-17', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-18', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-19', '0 years 0 mons 0 days 7 hours 32 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-22', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-23', '0 years 0 mons 0 days 8 hours 11 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-24', '0 years 0 mons 0 days 8 hours 25 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-25', '0 years 0 mons 0 days 8 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-26', '0 years 0 mons 0 days 8 hours 17 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-29', '0 years 0 mons 0 days 8 hours 32 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-30', '0 years 0 mons 0 days 7 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-07-31', '0 years 0 mons 0 days 8 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-01', '0 years 0 mons 0 days 9 hours 17 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-02', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-19', '0 years 0 mons 0 days 7 hours 39 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-20', '0 years 0 mons 0 days 7 hours 56 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-21', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-22', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-23', '0 years 0 mons 0 days 7 hours 18 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-26', '0 years 0 mons 0 days 7 hours 47 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-27', '0 years 0 mons 0 days 8 hours 15 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-28', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-29', '0 years 0 mons 0 days 7 hours 52 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-08-30', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-02', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-03', '0 years 0 mons 0 days 8 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-04', '0 years 0 mons 0 days 7 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-05', '0 years 0 mons 0 days 8 hours 7 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-06', '0 years 0 mons 0 days 8 hours 1 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-09', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-10', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-11', '0 years 0 mons 0 days 8 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-12', '0 years 0 mons 0 days 8 hours 26 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-13', '0 years 0 mons 0 days 8 hours 24 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-16', '0 years 0 mons 0 days 8 hours 19 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-17', '0 years 0 mons 0 days 7 hours 48 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-18', '0 years 0 mons 0 days 6 hours 56 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-19', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-20', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-23', '0 years 0 mons 0 days 7 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-24', '0 years 0 mons 0 days 8 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-25', '0 years 0 mons 0 days 7 hours 51 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-26', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-27', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-09-30', '0 years 0 mons 0 days 7 hours 56 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-01', '0 years 0 mons 0 days 8 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-02', '0 years 0 mons 0 days 7 hours 26 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-07', '0 years 0 mons 0 days 7 hours 32 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-08', '0 years 0 mons 0 days 7 hours 52 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-09', '0 years 0 mons 0 days 8 hours 40 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-10', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-14', '0 years 0 mons 0 days 7 hours 43 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-15', '0 years 0 mons 0 days 7 hours 45 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-21', '0 years 0 mons 0 days 7 hours 57 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-22', '0 years 0 mons 0 days 8 hours 25 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-23', '0 years 0 mons 0 days 8 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-24', '0 years 0 mons 0 days 7 hours 37 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-25', '0 years 0 mons 0 days 8 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-28', '0 years 0 mons 0 days 7 hours 27 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-29', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-10-30', '0 years 0 mons 0 days 7 hours 29 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-01', '0 years 0 mons 0 days 8 hours 48 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-04', '0 years 0 mons 0 days 7 hours 52 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-05', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-06', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-07', '0 years 0 mons 0 days 7 hours 24 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-08', '0 years 0 mons 0 days 8 hours 12 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-11', '0 years 0 mons 0 days 7 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-12', '0 years 0 mons 0 days 7 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-13', '0 years 0 mons 0 days 7 hours 46 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-14', '0 years 0 mons 0 days 7 hours 40 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-15', '0 years 0 mons 0 days 7 hours 34 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-18', '0 years 0 mons 0 days 7 hours 51 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-19', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-20', '0 years 0 mons 0 days 7 hours 7 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-21', '0 years 0 mons 0 days 7 hours 39 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-22', '0 years 0 mons 0 days 7 hours 31 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-25', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-26', '0 years 0 mons 0 days 7 hours 37 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-27', '0 years 0 mons 0 days 8 hours 29 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-28', '0 years 0 mons 0 days 8 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-11-29', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-02', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-03', '0 years 0 mons 0 days 7 hours 46 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-04', '0 years 0 mons 0 days 8 hours 27 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-05', '0 years 0 mons 0 days 5 hours 51 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-06', '0 years 0 mons 0 days 7 hours 35 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-09', '0 years 0 mons 0 days 7 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-10', '0 years 0 mons 0 days 8 hours 27 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-11', '0 years 0 mons 0 days 7 hours 47 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-12', '0 years 0 mons 0 days 8 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-13', '0 years 0 mons 0 days 6 hours 47 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-16', '0 years 0 mons 0 days 7 hours 51 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-17', '0 years 0 mons 0 days 8 hours 33 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-18', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-19', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2019-12-20', '0 years 0 mons 0 days 6 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-07', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-08', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-09', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-10', '0 years 0 mons 0 days 7 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-13', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-14', '0 years 0 mons 0 days 8 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-15', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-16', '0 years 0 mons 0 days 7 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-17', '0 years 0 mons 0 days 7 hours 57 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-20', '0 years 0 mons 0 days 7 hours 53 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-21', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-22', '0 years 0 mons 0 days 7 hours 56 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-23', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-24', '0 years 0 mons 0 days 7 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-27', '0 years 0 mons 0 days 8 hours 23 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-28', '0 years 0 mons 0 days 7 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-29', '0 years 0 mons 0 days 8 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-30', '0 years 0 mons 0 days 8 hours 43 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-01-31', '0 years 0 mons 0 days 7 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-03', '0 years 0 mons 0 days 7 hours 56 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-04', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-05', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-06', '0 years 0 mons 0 days 8 hours 1 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-07', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-10', '0 years 0 mons 0 days 7 hours 50 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-11', '0 years 0 mons 0 days 8 hours 1 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-12', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-13', '0 years 0 mons 0 days 8 hours 12 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-14', '0 years 0 mons 0 days 7 hours 51 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-17', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-18', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-19', '0 years 0 mons 0 days 7 hours 34 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-20', '0 years 0 mons 0 days 7 hours 33 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-21', '0 years 0 mons 0 days 7 hours 56 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-24', '0 years 0 mons 0 days 8 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-25', '0 years 0 mons 0 days 8 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-26', '0 years 0 mons 0 days 8 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-27', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-02-28', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-02', '0 years 0 mons 0 days 8 hours 22 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-03', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-04', '0 years 0 mons 0 days 8 hours 12 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-05', '0 years 0 mons 0 days 8 hours 32 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-06', '0 years 0 mons 0 days 4 hours 41 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-09', '0 years 0 mons 0 days 7 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-10', '0 years 0 mons 0 days 7 hours 34 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-11', '0 years 0 mons 0 days 7 hours 39 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-12', '0 years 0 mons 0 days 7 hours 50 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-13', '0 years 0 mons 0 days 8 hours 26 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-16', '0 years 0 mons 0 days 7 hours 51 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-17', '0 years 0 mons 0 days 7 hours 50 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-18', '0 years 0 mons 0 days 7 hours 19 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-19', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-20', '0 years 0 mons 0 days 5 hours 43 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-23', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-24', '0 years 0 mons 0 days 8 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-25', '0 years 0 mons 0 days 8 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-26', '0 years 0 mons 0 days 10 hours 31 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-27', '0 years 0 mons 0 days 4 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-30', '0 years 0 mons 0 days 8 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-03-31', '0 years 0 mons 0 days 8 hours 1 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-01', '0 years 0 mons 0 days 7 hours 53 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-02', '0 years 0 mons 0 days 8 hours 7 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-03', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-06', '0 years 0 mons 0 days 7 hours 27 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-07', '0 years 0 mons 0 days 8 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-08', '0 years 0 mons 0 days 8 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-14', '0 years 0 mons 0 days 7 hours 17 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-15', '0 years 0 mons 0 days 7 hours 56 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-16', '0 years 0 mons 0 days 8 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-17', '0 years 0 mons 0 days 7 hours 39 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-20', '0 years 0 mons 0 days 8 hours 7 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-21', '0 years 0 mons 0 days 8 hours 3 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-22', '0 years 0 mons 0 days 8 hours 24 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-23', '0 years 0 mons 0 days 8 hours 53 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-24', '0 years 0 mons 0 days 8 hours 24 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-27', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-28', '0 years 0 mons 0 days 8 hours 25 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-29', '0 years 0 mons 0 days 8 hours 23 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-04-30', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-04', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-05', '0 years 0 mons 0 days 6 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-06', '0 years 0 mons 0 days 9 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-07', '0 years 0 mons 0 days 8 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-08', '0 years 0 mons 0 days 8 hours 1 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-11', '0 years 0 mons 0 days 8 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-12', '0 years 0 mons 0 days 8 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-13', '0 years 0 mons 0 days 8 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-14', '0 years 0 mons 0 days 8 hours 39 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-15', '0 years 0 mons 0 days 6 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-18', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-19', '0 years 0 mons 0 days 7 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-20', '0 years 0 mons 0 days 8 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-25', '0 years 0 mons 0 days 7 hours 41 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-26', '0 years 0 mons 0 days 8 hours 32 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-27', '0 years 0 mons 0 days 8 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-28', '0 years 0 mons 0 days 8 hours 24 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-26', '0 years 0 mons 0 days 7 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-05-29', '0 years 0 mons 0 days 8 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-02', '0 years 0 mons 0 days 7 hours 50 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-03', '0 years 0 mons 0 days 6 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-04', '0 years 0 mons 0 days 8 hours 27 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-05', '0 years 0 mons 0 days 7 hours 47 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-08', '0 years 0 mons 0 days 7 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-09', '0 years 0 mons 0 days 7 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-10', '0 years 0 mons 0 days 7 hours 43 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-11', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-15', '0 years 0 mons 0 days 7 hours 45 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-16', '0 years 0 mons 0 days 8 hours 3 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-17', '0 years 0 mons 0 days 8 hours 19 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-18', '0 years 0 mons 0 days 8 hours 23 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-19', '0 years 0 mons 0 days 8 hours 18 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-22', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-23', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-24', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-25', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-26', '0 years 0 mons 0 days 9 hours 3 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-29', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-06-30', '0 years 0 mons 0 days 8 hours 18 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-01', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-02', '0 years 0 mons 0 days 7 hours 41 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-07', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-08', '0 years 0 mons 0 days 7 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-09', '0 years 0 mons 0 days 8 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-10', '0 years 0 mons 0 days 6 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-03', '0 years 0 mons 0 days 7 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-06', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-13', '0 years 0 mons 0 days 7 hours 19 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-14', '0 years 0 mons 0 days 7 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-15', '0 years 0 mons 0 days 8 hours 1 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-16', '0 years 0 mons 0 days 7 hours 57 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-07-17', '0 years 0 mons 0 days 8 hours 10 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-10', '0 years 0 mons 0 days 7 hours 50 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-11', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-12', '0 years 0 mons 0 days 7 hours 12 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-13', '0 years 0 mons 0 days 7 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-14', '0 years 0 mons 0 days 8 hours 29 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-17', '0 years 0 mons 0 days 8 hours 46 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-18', '0 years 0 mons 0 days 8 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-19', '0 years 0 mons 0 days 8 hours 9 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-20', '0 years 0 mons 0 days 8 hours 17 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-21', '0 years 0 mons 0 days 7 hours 26 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-24', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-25', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-26', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-27', '0 years 0 mons 0 days 7 hours 31 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-28', '0 years 0 mons 0 days 8 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-08-31', '0 years 0 mons 0 days 8 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-01', '0 years 0 mons 0 days 8 hours 12 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-02', '0 years 0 mons 0 days 7 hours 45 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-03', '0 years 0 mons 0 days 8 hours 37 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-04', '0 years 0 mons 0 days 7 hours 43 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-07', '0 years 0 mons 0 days 7 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-08', '0 years 0 mons 0 days 8 hours 1 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-09', '0 years 0 mons 0 days 8 hours 3 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-10', '0 years 0 mons 0 days 6 hours 42 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-11', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-14', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-15', '0 years 0 mons 0 days 7 hours 53 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-16', '0 years 0 mons 0 days 7 hours 47 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-17', '0 years 0 mons 0 days 7 hours 33 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-18', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-21', '0 years 0 mons 0 days 7 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-22', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-23', '0 years 0 mons 0 days 8 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-24', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-25', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-28', '0 years 0 mons 0 days 7 hours 49 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-29', '0 years 0 mons 0 days 7 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-09-30', '0 years 0 mons 0 days 8 hours 15 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-01', '0 years 0 mons 0 days 7 hours 27 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-02', '0 years 0 mons 0 days 7 hours 22 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-05', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-06', '0 years 0 mons 0 days 8 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-07', '0 years 0 mons 0 days 8 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-08', '0 years 0 mons 0 days 7 hours 29 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-09', '0 years 0 mons 0 days 9 hours 0 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-12', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-13', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-14', '0 years 0 mons 0 days 8 hours 13 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-15', '0 years 0 mons 0 days 7 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-16', '0 years 0 mons 0 days 8 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-19', '0 years 0 mons 0 days 8 hours 16 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-20', '0 years 0 mons 0 days 7 hours 58 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-21', '0 years 0 mons 0 days 7 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-22', '0 years 0 mons 0 days 7 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-23', '0 years 0 mons 0 days 7 hours 38 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-27', '0 years 0 mons 0 days 9 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-28', '0 years 0 mons 0 days 7 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-29', '0 years 0 mons 0 days 7 hours 51 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-10-30', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-02', '0 years 0 mons 0 days 8 hours 11 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-04', '0 years 0 mons 0 days 8 hours 5 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-05', '0 years 0 mons 0 days 7 hours 44 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-06', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-09', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-11', '0 years 0 mons 0 days 8 hours 28 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-12', '0 years 0 mons 0 days 7 hours 21 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-13', '0 years 0 mons 0 days 9 hours 2 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-16', '0 years 0 mons 0 days 7 hours 59 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-17', '0 years 0 mons 0 days 8 hours 32 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-18', '0 years 0 mons 0 days 8 hours 8 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-19', '0 years 0 mons 0 days 8 hours 25 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-20', '0 years 0 mons 0 days 8 hours 6 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-03', '0 years 0 mons 0 days 8 hours 14 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-10', '0 years 0 mons 0 days 8 hours 3 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-23', '0 years 0 mons 0 days 8 hours 17 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-24', '0 years 0 mons 0 days 7 hours 43 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-25', '0 years 0 mons 0 days 7 hours 52 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-26', '0 years 0 mons 0 days 7 hours 53 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-27', '0 years 0 mons 0 days 8 hours 20 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-11-30', '0 years 0 mons 0 days 8 hours 43 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-01', '0 years 0 mons 0 days 8 hours 33 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-02', '0 years 0 mons 0 days 6 hours 19 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-03', '0 years 0 mons 0 days 7 hours 48 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-04', '0 years 0 mons 0 days 8 hours 29 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-07', '0 years 0 mons 0 days 8 hours 7 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-09', '0 years 0 mons 0 days 7 hours 55 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-10', '0 years 0 mons 0 days 7 hours 47 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-11', '0 years 0 mons 0 days 7 hours 30 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-08', '0 years 0 mons 0 days 8 hours 22 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-14', '0 years 0 mons 0 days 7 hours 54 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-15', '0 years 0 mons 0 days 8 hours 4 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-16', '0 years 0 mons 0 days 7 hours 36 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-17', '0 years 0 mons 0 days 7 hours 47 mins 0.00 secs');
INSERT INTO public."Arbeitszeiten" ("Datum", "Arbeitszeit") VALUES ('2020-12-18', '0 years 0 mons 0 days 7 hours 33 mins 0.00 secs');
+278
View File
@@ -0,0 +1,278 @@
Aktivität;Dauer;Von;Bis;Kommentar
Arbeit;03:46;2021-10-13 08:01;2021-10-13 11:48;
Arbeit;04:00;2021-10-12 13:13;2021-10-12 17:14;
Mittagspause ;01:13;2021-10-12 11:59;2021-10-12 13:13;
Arbeit;04:07;2021-10-12 07:51;2021-10-12 11:59;
Arbeit;04:36;2021-10-11 13:08;2021-10-11 17:44;
Mittagspause ;01:00;2021-10-11 12:08;2021-10-11 13:08;
Arbeit;03:48;2021-10-11 08:19;2021-10-11 12:08;
Arbeit;03:37;2021-10-08 13:14;2021-10-08 16:52;
Mittagspause ;01:12;2021-10-08 12:02;2021-10-08 13:14;
Arbeit;03:54;2021-10-08 08:08;2021-10-08 12:02;
Arbeit;05:33;2021-10-07 12:58;2021-10-07 18:32;
Mittagspause ;00:52;2021-10-07 12:06;2021-10-07 12:58;
Arbeit;03:59;2021-10-07 08:07;2021-10-07 12:06;
Arbeit;02:29;2021-10-06 13:30;2021-10-06 15:59;
Mittagspause ;00:52;2021-10-06 12:37;2021-10-06 13:30;
Arbeit;05:21;2021-10-06 07:15;2021-10-06 12:37;
Arbeit;04:07;2021-10-05 13:05;2021-10-05 17:13;
Mittagspause ;00:56;2021-10-05 12:09;2021-10-05 13:05;
Arbeit;04:01;2021-10-05 08:07;2021-10-05 12:09;
Arbeit;03:30;2021-10-04 13:05;2021-10-04 16:35;
Mittagspause ;01:00;2021-10-04 12:05;2021-10-04 13:05;
Arbeit;03:38;2021-10-04 08:26;2021-10-04 12:05;
Arbeit;03:06;2021-10-01 12:49;2021-10-01 15:56;
Mittagspause ;00:44;2021-10-01 12:05;2021-10-01 12:49;
Arbeit;04:42;2021-10-01 07:22;2021-10-01 12:05;
Arbeit;03:39;2021-09-30 12:49;2021-09-30 16:29;
Mittagspause ;00:46;2021-09-30 12:02;2021-09-30 12:49;
Arbeit;03:37;2021-09-30 08:24;2021-09-30 12:02;
Arbeit;03:58;2021-09-29 13:31;2021-09-29 17:29;
Mittagspause ;01:03;2021-09-29 12:28;2021-09-29 13:31;
Arbeit;04:17;2021-09-29 08:10;2021-09-29 12:28;
Arbeit;04:36;2021-09-28 13:12;2021-09-28 17:48;
Mittagspause ;00:52;2021-09-28 12:20;2021-09-28 13:12;
Arbeit;03:53;2021-09-28 08:26;2021-09-28 12:20;
Arbeit;03:58;2021-09-27 12:56;2021-09-27 16:54;
Mittagspause ;00:55;2021-09-27 12:00;2021-09-27 12:56;
Arbeit;03:41;2021-09-27 08:18;2021-09-27 12:00;
Arbeit;03:52;2021-09-24 13:01;2021-09-24 16:53;
Mittagspause ;00:57;2021-09-24 12:03;2021-09-24 13:01;
Arbeit;03:50;2021-09-24 08:13;2021-09-24 12:03;
Arbeit;02:48;2021-09-23 12:44;2021-09-23 15:33;
Mittagspause ;00:52;2021-09-23 11:52;2021-09-23 12:44;
Arbeit;03:25;2021-09-23 08:26;2021-09-23 11:52;
Arbeit;04:28;2021-09-22 12:47;2021-09-22 17:16;
Mittagspause ;00:43;2021-09-22 12:04;2021-09-22 12:47;
Arbeit;03:29;2021-09-22 08:34;2021-09-22 12:04;
Arbeit;03:54;2021-09-21 13:06;2021-09-21 17:00;
Mittagspause ;00:57;2021-09-21 12:08;2021-09-21 13:06;
Arbeit;03:53;2021-09-21 08:14;2021-09-21 12:08;
Arbeit;03:18;2021-09-20 13:22;2021-09-20 16:41;
Mittagspause ;01:03;2021-09-20 12:19;2021-09-20 13:22;
Arbeit;04:07;2021-09-20 08:12;2021-09-20 12:19;
Arbeit;00:13;2021-09-17 14:20;2021-09-17 14:33;
Arbeit;05:48;2021-09-17 07:18;2021-09-17 13:07;
Arbeit;04:04;2021-09-16 12:36;2021-09-16 16:40;
Mittagspause ;00:42;2021-09-16 11:53;2021-09-16 12:36;
Arbeit;04:05;2021-09-16 07:48;2021-09-16 11:53;
Arbeit;04:33;2021-09-15 13:25;2021-09-15 17:59;
Mittagspause ;01:00;2021-09-15 12:25;2021-09-15 13:25;
Arbeit;04:07;2021-09-15 08:18;2021-09-15 12:25;
Arbeit;05:42;2021-09-14 13:06;2021-09-14 18:48;
Mittagspause ;00:52;2021-09-14 12:13;2021-09-14 13:06;
Arbeit;03:49;2021-09-14 08:24;2021-09-14 12:13;
Arbeit;03:43;2021-09-13 12:53;2021-09-13 16:37;
Mittagspause ;01:00;2021-09-13 11:53;2021-09-13 12:53;
Arbeit;03:42;2021-09-13 08:10;2021-09-13 11:53;
Arbeit;00:20;2021-09-10 19:31;2021-09-10 19:51;
Arbeit;04:32;2021-09-10 12:48;2021-09-10 17:21;
Mittagspause ;00:43;2021-09-10 12:05;2021-09-10 12:48;
Arbeit;03:21;2021-09-10 08:43;2021-09-10 12:05;
Arbeit;03:29;2021-09-09 13:03;2021-09-09 16:32;
Mittagspause ;00:55;2021-09-09 12:08;2021-09-09 13:03;
Arbeit;03:32;2021-09-09 08:35;2021-09-09 12:08;
Arbeit;04:37;2021-09-08 13:08;2021-09-08 17:46;
Mittagspause ;01:07;2021-09-08 12:01;2021-09-08 13:08;
Arbeit;04:15;2021-09-08 07:45;2021-09-08 12:01;
Arbeit;04:12;2021-09-07 13:03;2021-09-07 17:16;
Mittagspause ;00:55;2021-09-07 12:08;2021-09-07 13:03;
Arbeit;04:09;2021-09-07 07:58;2021-09-07 12:08;
Arbeit;03:08;2021-09-06 13:14;2021-09-06 16:23;
Mittagspause ;00:58;2021-09-06 12:16;2021-09-06 13:14;
Arbeit;04:00;2021-09-06 08:16;2021-09-06 12:16;
Arbeit;04:05;2021-09-03 12:49;2021-09-03 16:54;
Mittagspause ;00:50;2021-09-03 11:59;2021-09-03 12:49;
Arbeit;03:09;2021-09-03 08:49;2021-09-03 11:59;
Arbeit;04:26;2021-09-02 13:03;2021-09-02 17:30;
Mittagspause ;01:02;2021-09-02 12:01;2021-09-02 13:03;
Arbeit;03:51;2021-09-02 08:10;2021-09-02 12:01;
Arbeit;04:06;2021-09-01 13:38;2021-09-01 17:45;
Mittagspause ;01:05;2021-09-01 12:33;2021-09-01 13:38;
Arbeit;04:13;2021-09-01 08:20;2021-09-01 12:33;
Arbeit;03:53;2021-08-31 13:11;2021-08-31 17:04;
Mittagspause ;01:05;2021-08-31 12:05;2021-08-31 13:11;
Arbeit;04:19;2021-08-31 07:46;2021-08-31 12:05;
Arbeit;04:00;2021-08-30 13:51;2021-08-30 17:52;
Mittagspause ;01:07;2021-08-30 12:43;2021-08-30 13:51;
Arbeit;04:20;2021-08-30 08:22;2021-08-30 12:43;
Arbeit;02:45;2021-08-27 13:06;2021-08-27 15:52;
Mittagspause ;00:52;2021-08-27 12:14;2021-08-27 13:06;
Arbeit;04:09;2021-08-27 08:05;2021-08-27 12:14;
Arbeit;04:12;2021-08-26 13:03;2021-08-26 17:16;
Mittagspause ;00:53;2021-08-26 12:10;2021-08-26 13:03;
Arbeit;03:49;2021-08-26 08:21;2021-08-26 12:10;
Arbeit;03:59;2021-08-25 13:02;2021-08-25 17:01;
Mittagspause ;01:06;2021-08-25 11:56;2021-08-25 13:02;
Arbeit;03:35;2021-08-25 08:20;2021-08-25 11:56;
Arbeit;04:54;2021-08-24 12:43;2021-08-24 17:37;
Mittagspause ;00:57;2021-08-24 11:45;2021-08-24 12:43;
Arbeit;01:56;2021-08-24 09:48;2021-08-24 11:45;
Arbeit;00:53;2021-08-24 07:56;2021-08-24 08:49;
Arbeit;03:54;2021-08-23 12:57;2021-08-23 16:51;
Mittagspause ;01:16;2021-08-23 11:41;2021-08-23 12:57;
Arbeit;03:30;2021-08-23 08:11;2021-08-23 11:41;
Arbeit;03:28;2021-08-06 12:57;2021-08-06 16:25;
Mittagspause ;00:52;2021-08-06 12:04;2021-08-06 12:57;
Arbeit;03:38;2021-08-06 08:26;2021-08-06 12:04;
Arbeit;03:19;2021-08-05 13:11;2021-08-05 16:30;
Mittagspause ;01:05;2021-08-05 12:06;2021-08-05 13:11;
Arbeit;03:50;2021-08-05 08:15;2021-08-05 12:06;
Arbeit;04:14;2021-08-04 13:03;2021-08-04 17:18;
Mittagspause ;00:44;2021-08-04 12:19;2021-08-04 13:03;
Arbeit;04:11;2021-08-04 08:08;2021-08-04 12:19;
Arbeit;03:18;2021-08-03 13:16;2021-08-03 16:34;
Mittagspause ;00:49;2021-08-03 12:26;2021-08-03 13:16;
Arbeit;04:24;2021-08-03 08:01;2021-08-03 12:26;
Arbeit;02:58;2021-08-02 13:22;2021-08-02 16:20;
Mittagspause ;00:59;2021-08-02 12:22;2021-08-02 13:22;
Arbeit;04:13;2021-08-02 08:09;2021-08-02 12:22;
Arbeit;04:19;2021-07-30 13:01;2021-07-30 17:20;
Mittagspause ;00:45;2021-07-30 12:16;2021-07-30 13:01;
Arbeit;04:22;2021-07-30 07:54;2021-07-30 12:16;
Arbeit;03:25;2021-07-29 13:25;2021-07-29 16:50;
Mittagspause ;01:01;2021-07-29 12:23;2021-07-29 13:25;
Arbeit;04:44;2021-07-29 07:39;2021-07-29 12:23;
Arbeit;04:47;2021-07-28 12:49;2021-07-28 17:37;
Mittagspause ;00:58;2021-07-28 11:51;2021-07-28 12:49;
Arbeit;03:48;2021-07-28 08:02;2021-07-28 11:51;
Arbeit;03:49;2021-07-27 12:34;2021-07-27 16:24;
Mittagspause ;00:47;2021-07-27 11:47;2021-07-27 12:34;
Arbeit;03:20;2021-07-27 08:27;2021-07-27 11:47;
Arbeit;04:47;2021-07-26 12:59;2021-07-26 17:47;
Mittagspause ;00:52;2021-07-26 12:07;2021-07-26 12:59;
Arbeit;03:59;2021-07-26 08:08;2021-07-26 12:07;
Arbeit;05:53;2021-07-23 12:43;2021-07-23 18:37;
Mittagspause ;00:36;2021-07-23 12:07;2021-07-23 12:43;
Arbeit;04:10;2021-07-23 07:57;2021-07-23 12:07;
Arbeit;04:09;2021-07-22 12:54;2021-07-22 17:04;
Mittagspause ;00:42;2021-07-22 12:11;2021-07-22 12:54;
Arbeit;04:16;2021-07-22 07:55;2021-07-22 12:11;
Arbeit;03:11;2021-07-21 13:37;2021-07-21 16:48;
Mittagspause ;01:07;2021-07-21 12:29;2021-07-21 13:37;
Arbeit;04:58;2021-07-21 07:31;2021-07-21 12:29;
Arbeit;01:17;2021-07-20 18:44;2021-07-20 20:02;
Arbeit;03:50;2021-07-20 13:14;2021-07-20 17:04;
Mittagspause ;00:41;2021-07-20 12:32;2021-07-20 13:14;
Arbeit;04:55;2021-07-20 07:37;2021-07-20 12:32;
Arbeit;03:19;2021-07-19 13:12;2021-07-19 16:31;
Mittagspause ;00:52;2021-07-19 12:20;2021-07-19 13:12;
Arbeit;04:28;2021-07-19 07:51;2021-07-19 12:20;
Arbeit;02:48;2021-07-16 12:55;2021-07-16 15:43;
Mittagspause ;00:47;2021-07-16 12:07;2021-07-16 12:55;
Arbeit;04:01;2021-07-16 08:06;2021-07-16 12:07;
Arbeit;03:38;2021-07-15 13:05;2021-07-15 16:43;
Mittagspause ;01:05;2021-07-15 11:59;2021-07-15 13:05;
Arbeit;03:56;2021-07-15 08:02;2021-07-15 11:59;
Arbeit;03:38;2021-07-14 13:07;2021-07-14 16:45;
Mittagspause ;01:00;2021-07-14 12:07;2021-07-14 13:07;
Arbeit;04:00;2021-07-14 08:06;2021-07-14 12:07;
Arbeit;04:22;2021-07-13 12:53;2021-07-13 17:15;
Mittagspause ;01:03;2021-07-13 11:50;2021-07-13 12:53;
Arbeit;03:47;2021-07-13 08:02;2021-07-13 11:50;
Arbeit;03:26;2021-07-12 13:02;2021-07-12 16:28;
Mittagspause ;01:03;2021-07-12 11:58;2021-07-12 13:02;
Arbeit;04:14;2021-07-12 07:44;2021-07-12 11:58;
Arbeit;03:57;2021-07-09 13:09;2021-07-09 17:06;
Mittagspause ;01:06;2021-07-09 12:02;2021-07-09 13:09;
Arbeit;03:57;2021-07-09 08:04;2021-07-09 12:02;
Arbeit;03:17;2021-07-08 13:12;2021-07-08 16:29;
Mittagspause ;01:07;2021-07-08 12:04;2021-07-08 13:12;
Arbeit;04:00;2021-07-08 08:03;2021-07-08 12:04;
Arbeit;03:41;2021-07-07 13:08;2021-07-07 16:49;
Mittagspause ;01:00;2021-07-07 12:07;2021-07-07 13:08;
Arbeit;04:05;2021-07-07 08:02;2021-07-07 12:07;
Arbeit;02:50;2021-07-06 13:05;2021-07-06 15:55;
Mittagspause ;01:05;2021-07-06 11:59;2021-07-06 13:05;
Arbeit;03:49;2021-07-06 08:10;2021-07-06 11:59;
Arbeit;03:32;2021-07-05 13:00;2021-07-05 16:33;
Mittagspause ;00:59;2021-07-05 12:00;2021-07-05 13:00;
Arbeit;03:48;2021-07-05 08:12;2021-07-05 12:00;
Arbeit;04:37;2021-07-02 12:42;2021-07-02 17:19;
Arbeit;03:45;2021-07-02 08:06;2021-07-02 11:52;
Arbeit;03:34;2021-07-01 13:15;2021-07-01 16:49;
Arbeit;04:06;2021-07-01 07:52;2021-07-01 11:59;
Arbeit;04:23;2021-06-30 13:17;2021-06-30 17:41;
Arbeit;04:16;2021-06-30 08:12;2021-06-30 12:29;
Arbeit;03:51;2021-06-29 13:08;2021-06-29 17:00;
Arbeit;04:14;2021-06-29 07:51;2021-06-29 12:06;
Arbeit;03:05;2021-06-28 13:34;2021-06-28 16:40;
Arbeit;04:23;2021-06-28 07:56;2021-06-28 12:19;
Arbeit;00:21;2021-06-25 17:44;2021-06-25 18:06;
Arbeit;03:15;2021-06-25 13:12;2021-06-25 16:27;
Arbeit;04:40;2021-06-25 07:35;2021-06-25 12:16;
Arbeit;02:55;2021-06-24 13:04;2021-06-24 16:00;
Arbeit;04:10;2021-06-24 08:00;2021-06-24 12:10;
Arbeit;02:57;2021-06-23 13:36;2021-06-23 16:34;
Arbeit;04:41;2021-06-23 07:57;2021-06-23 12:39;
Arbeit;02:55;2021-06-22 12:54;2021-06-22 15:50;
Arbeit;03:56;2021-06-22 07:58;2021-06-22 11:55;
Arbeit;03:03;2021-06-21 12:52;2021-06-21 15:55;
Arbeit;04:08;2021-06-21 07:53;2021-06-21 12:01;
Arbeit;03:45;2021-06-18 12:49;2021-06-18 16:34;
Arbeit;03:56;2021-06-18 07:57;2021-06-18 11:53;
Arbeit;05:06;2021-06-17 13:15;2021-06-17 18:22;
Arbeit;04:08;2021-06-17 08:08;2021-06-17 12:16;
Arbeit;04:31;2021-06-16 13:09;2021-06-16 17:40;
Arbeit;03:54;2021-06-16 08:20;2021-06-16 12:15;
Arbeit;04:34;2021-06-15 12:48;2021-06-15 17:22;
Arbeit;03:46;2021-06-15 08:11;2021-06-15 11:57;
Arbeit;02:36;2021-06-14 13:27;2021-06-14 16:04;
Arbeit;04:00;2021-06-14 08:10;2021-06-14 12:10;
Arbeit;03:46;2021-06-11 12:32;2021-06-11 16:19;
Arbeit;03:25;2021-06-11 08:09;2021-06-11 11:34;
Arbeit;02:27;2021-06-10 13:18;2021-06-10 15:46;
Arbeit;04:24;2021-06-10 08:05;2021-06-10 12:29;
Arbeit;04:26;2021-06-09 13:24;2021-06-09 17:50;
Arbeit;04:36;2021-06-09 07:47;2021-06-09 12:23;
Arbeit;03:35;2021-06-08 12:50;2021-06-08 16:25;
Arbeit;03:53;2021-06-08 07:58;2021-06-08 11:51;
Arbeit;03:04;2021-06-07 13:03;2021-06-07 16:08;
Arbeit;03:55;2021-06-07 08:20;2021-06-07 12:16;
Arbeit;03:12;2021-06-04 12:47;2021-06-04 16:00;
Arbeit;03:52;2021-06-04 08:13;2021-06-04 12:06;
Arbeit;04:09;2021-06-03 12:49;2021-06-03 16:59;
Arbeit;04:09;2021-06-03 07:45;2021-06-03 11:55;
Arbeit;04:07;2021-06-02 12:56;2021-06-02 17:03;
Arbeit;04:08;2021-06-02 07:50;2021-06-02 11:59;
Arbeit;03:55;2021-06-01 13:04;2021-06-01 17:00;
Arbeit;04:26;2021-06-01 07:48;2021-06-01 12:14;
Arbeit;03:36;2021-05-31 13:00;2021-05-31 16:37;
Arbeit;04:08;2021-05-31 08:17;2021-05-31 12:25;
Arbeit;02:53;2021-05-28 12:53;2021-05-28 15:46;
Arbeit;03:44;2021-05-28 08:10;2021-05-28 11:54;
Arbeit;03:52;2021-05-27 12:35;2021-05-27 16:28;
Arbeit;03:44;2021-05-27 08:06;2021-05-27 11:50;
Arbeit;02:26;2021-05-26 13:35;2021-05-26 16:01;
Arbeit;04:15;2021-05-26 08:35;2021-05-26 12:51;
Arbeit;03:44;2021-05-25 12:41;2021-05-25 16:26;
Arbeit;04:08;2021-05-25 07:45;2021-05-25 11:54;
Arbeit;03:41;2021-05-21 12:57;2021-05-21 16:38;
Arbeit;04:00;2021-05-21 07:55;2021-05-21 11:55;
Arbeit;04:03;2021-05-20 12:36;2021-05-20 16:40;
Arbeit;03:54;2021-05-20 08:03;2021-05-20 11:57;
Arbeit;04:06;2021-05-19 12:57;2021-05-19 17:03;
Arbeit;04:12;2021-05-19 08:00;2021-05-19 12:13;
Arbeit;04:11;2021-05-18 12:52;2021-05-18 17:03;
Arbeit;04:20;2021-05-18 07:50;2021-05-18 12:10;
Arbeit;03:20;2021-05-17 12:57;2021-05-17 16:17;
Arbeit;04:25;2021-05-17 07:49;2021-05-17 12:14;
Arbeit;03:04;2021-05-14 13:04;2021-05-14 16:08;
Arbeit;04:38;2021-05-14 07:50;2021-05-14 12:29;
Arbeit;03:12;2021-05-12 12:35;2021-05-12 15:47;
Arbeit;03:40;2021-05-12 07:55;2021-05-12 11:35;
Arbeit;03:34;2021-05-11 12:45;2021-05-11 16:19;
Arbeit;04:13;2021-05-11 07:48;2021-05-11 12:02;
Arbeit;03:37;2021-05-10 12:22;2021-05-10 16:00;
Arbeit;03:55;2021-05-10 07:52;2021-05-10 11:47;
Arbeit;03:32;2021-05-07 13:00;2021-05-07 16:33;
Arbeit;04:15;2021-05-07 07:53;2021-05-07 12:09;
Arbeit;03:28;2021-05-06 13:04;2021-05-06 16:32;
Arbeit;04:44;2021-05-06 08:01;2021-05-06 12:45;
Arbeit;03:13;2021-05-05 13:13;2021-05-05 16:27;
Arbeit;04:37;2021-05-05 07:49;2021-05-05 12:26;
Arbeit;02:51;2021-05-04 13:19;2021-05-04 16:11;
Arbeit;04:36;2021-05-04 07:40;2021-05-04 12:16;
Arbeit;04:13;2021-05-03 13:13;2021-05-03 17:26;
Arbeit;04:28;2021-05-03 08:01;2021-05-03 12:30;
Arbeit;03:42;2021-01-11 08:18;2021-01-11 12:01;
1 Aktivität Dauer Von Bis Kommentar
2 Arbeit 03:46 2021-10-13 08:01 2021-10-13 11:48
3 Arbeit 04:00 2021-10-12 13:13 2021-10-12 17:14
4 Mittagspause 01:13 2021-10-12 11:59 2021-10-12 13:13
5 Arbeit 04:07 2021-10-12 07:51 2021-10-12 11:59
6 Arbeit 04:36 2021-10-11 13:08 2021-10-11 17:44
7 Mittagspause 01:00 2021-10-11 12:08 2021-10-11 13:08
8 Arbeit 03:48 2021-10-11 08:19 2021-10-11 12:08
9 Arbeit 03:37 2021-10-08 13:14 2021-10-08 16:52
10 Mittagspause 01:12 2021-10-08 12:02 2021-10-08 13:14
11 Arbeit 03:54 2021-10-08 08:08 2021-10-08 12:02
12 Arbeit 05:33 2021-10-07 12:58 2021-10-07 18:32
13 Mittagspause 00:52 2021-10-07 12:06 2021-10-07 12:58
14 Arbeit 03:59 2021-10-07 08:07 2021-10-07 12:06
15 Arbeit 02:29 2021-10-06 13:30 2021-10-06 15:59
16 Mittagspause 00:52 2021-10-06 12:37 2021-10-06 13:30
17 Arbeit 05:21 2021-10-06 07:15 2021-10-06 12:37
18 Arbeit 04:07 2021-10-05 13:05 2021-10-05 17:13
19 Mittagspause 00:56 2021-10-05 12:09 2021-10-05 13:05
20 Arbeit 04:01 2021-10-05 08:07 2021-10-05 12:09
21 Arbeit 03:30 2021-10-04 13:05 2021-10-04 16:35
22 Mittagspause 01:00 2021-10-04 12:05 2021-10-04 13:05
23 Arbeit 03:38 2021-10-04 08:26 2021-10-04 12:05
24 Arbeit 03:06 2021-10-01 12:49 2021-10-01 15:56
25 Mittagspause 00:44 2021-10-01 12:05 2021-10-01 12:49
26 Arbeit 04:42 2021-10-01 07:22 2021-10-01 12:05
27 Arbeit 03:39 2021-09-30 12:49 2021-09-30 16:29
28 Mittagspause 00:46 2021-09-30 12:02 2021-09-30 12:49
29 Arbeit 03:37 2021-09-30 08:24 2021-09-30 12:02
30 Arbeit 03:58 2021-09-29 13:31 2021-09-29 17:29
31 Mittagspause 01:03 2021-09-29 12:28 2021-09-29 13:31
32 Arbeit 04:17 2021-09-29 08:10 2021-09-29 12:28
33 Arbeit 04:36 2021-09-28 13:12 2021-09-28 17:48
34 Mittagspause 00:52 2021-09-28 12:20 2021-09-28 13:12
35 Arbeit 03:53 2021-09-28 08:26 2021-09-28 12:20
36 Arbeit 03:58 2021-09-27 12:56 2021-09-27 16:54
37 Mittagspause 00:55 2021-09-27 12:00 2021-09-27 12:56
38 Arbeit 03:41 2021-09-27 08:18 2021-09-27 12:00
39 Arbeit 03:52 2021-09-24 13:01 2021-09-24 16:53
40 Mittagspause 00:57 2021-09-24 12:03 2021-09-24 13:01
41 Arbeit 03:50 2021-09-24 08:13 2021-09-24 12:03
42 Arbeit 02:48 2021-09-23 12:44 2021-09-23 15:33
43 Mittagspause 00:52 2021-09-23 11:52 2021-09-23 12:44
44 Arbeit 03:25 2021-09-23 08:26 2021-09-23 11:52
45 Arbeit 04:28 2021-09-22 12:47 2021-09-22 17:16
46 Mittagspause 00:43 2021-09-22 12:04 2021-09-22 12:47
47 Arbeit 03:29 2021-09-22 08:34 2021-09-22 12:04
48 Arbeit 03:54 2021-09-21 13:06 2021-09-21 17:00
49 Mittagspause 00:57 2021-09-21 12:08 2021-09-21 13:06
50 Arbeit 03:53 2021-09-21 08:14 2021-09-21 12:08
51 Arbeit 03:18 2021-09-20 13:22 2021-09-20 16:41
52 Mittagspause 01:03 2021-09-20 12:19 2021-09-20 13:22
53 Arbeit 04:07 2021-09-20 08:12 2021-09-20 12:19
54 Arbeit 00:13 2021-09-17 14:20 2021-09-17 14:33
55 Arbeit 05:48 2021-09-17 07:18 2021-09-17 13:07
56 Arbeit 04:04 2021-09-16 12:36 2021-09-16 16:40
57 Mittagspause 00:42 2021-09-16 11:53 2021-09-16 12:36
58 Arbeit 04:05 2021-09-16 07:48 2021-09-16 11:53
59 Arbeit 04:33 2021-09-15 13:25 2021-09-15 17:59
60 Mittagspause 01:00 2021-09-15 12:25 2021-09-15 13:25
61 Arbeit 04:07 2021-09-15 08:18 2021-09-15 12:25
62 Arbeit 05:42 2021-09-14 13:06 2021-09-14 18:48
63 Mittagspause 00:52 2021-09-14 12:13 2021-09-14 13:06
64 Arbeit 03:49 2021-09-14 08:24 2021-09-14 12:13
65 Arbeit 03:43 2021-09-13 12:53 2021-09-13 16:37
66 Mittagspause 01:00 2021-09-13 11:53 2021-09-13 12:53
67 Arbeit 03:42 2021-09-13 08:10 2021-09-13 11:53
68 Arbeit 00:20 2021-09-10 19:31 2021-09-10 19:51
69 Arbeit 04:32 2021-09-10 12:48 2021-09-10 17:21
70 Mittagspause 00:43 2021-09-10 12:05 2021-09-10 12:48
71 Arbeit 03:21 2021-09-10 08:43 2021-09-10 12:05
72 Arbeit 03:29 2021-09-09 13:03 2021-09-09 16:32
73 Mittagspause 00:55 2021-09-09 12:08 2021-09-09 13:03
74 Arbeit 03:32 2021-09-09 08:35 2021-09-09 12:08
75 Arbeit 04:37 2021-09-08 13:08 2021-09-08 17:46
76 Mittagspause 01:07 2021-09-08 12:01 2021-09-08 13:08
77 Arbeit 04:15 2021-09-08 07:45 2021-09-08 12:01
78 Arbeit 04:12 2021-09-07 13:03 2021-09-07 17:16
79 Mittagspause 00:55 2021-09-07 12:08 2021-09-07 13:03
80 Arbeit 04:09 2021-09-07 07:58 2021-09-07 12:08
81 Arbeit 03:08 2021-09-06 13:14 2021-09-06 16:23
82 Mittagspause 00:58 2021-09-06 12:16 2021-09-06 13:14
83 Arbeit 04:00 2021-09-06 08:16 2021-09-06 12:16
84 Arbeit 04:05 2021-09-03 12:49 2021-09-03 16:54
85 Mittagspause 00:50 2021-09-03 11:59 2021-09-03 12:49
86 Arbeit 03:09 2021-09-03 08:49 2021-09-03 11:59
87 Arbeit 04:26 2021-09-02 13:03 2021-09-02 17:30
88 Mittagspause 01:02 2021-09-02 12:01 2021-09-02 13:03
89 Arbeit 03:51 2021-09-02 08:10 2021-09-02 12:01
90 Arbeit 04:06 2021-09-01 13:38 2021-09-01 17:45
91 Mittagspause 01:05 2021-09-01 12:33 2021-09-01 13:38
92 Arbeit 04:13 2021-09-01 08:20 2021-09-01 12:33
93 Arbeit 03:53 2021-08-31 13:11 2021-08-31 17:04
94 Mittagspause 01:05 2021-08-31 12:05 2021-08-31 13:11
95 Arbeit 04:19 2021-08-31 07:46 2021-08-31 12:05
96 Arbeit 04:00 2021-08-30 13:51 2021-08-30 17:52
97 Mittagspause 01:07 2021-08-30 12:43 2021-08-30 13:51
98 Arbeit 04:20 2021-08-30 08:22 2021-08-30 12:43
99 Arbeit 02:45 2021-08-27 13:06 2021-08-27 15:52
100 Mittagspause 00:52 2021-08-27 12:14 2021-08-27 13:06
101 Arbeit 04:09 2021-08-27 08:05 2021-08-27 12:14
102 Arbeit 04:12 2021-08-26 13:03 2021-08-26 17:16
103 Mittagspause 00:53 2021-08-26 12:10 2021-08-26 13:03
104 Arbeit 03:49 2021-08-26 08:21 2021-08-26 12:10
105 Arbeit 03:59 2021-08-25 13:02 2021-08-25 17:01
106 Mittagspause 01:06 2021-08-25 11:56 2021-08-25 13:02
107 Arbeit 03:35 2021-08-25 08:20 2021-08-25 11:56
108 Arbeit 04:54 2021-08-24 12:43 2021-08-24 17:37
109 Mittagspause 00:57 2021-08-24 11:45 2021-08-24 12:43
110 Arbeit 01:56 2021-08-24 09:48 2021-08-24 11:45
111 Arbeit 00:53 2021-08-24 07:56 2021-08-24 08:49
112 Arbeit 03:54 2021-08-23 12:57 2021-08-23 16:51
113 Mittagspause 01:16 2021-08-23 11:41 2021-08-23 12:57
114 Arbeit 03:30 2021-08-23 08:11 2021-08-23 11:41
115 Arbeit 03:28 2021-08-06 12:57 2021-08-06 16:25
116 Mittagspause 00:52 2021-08-06 12:04 2021-08-06 12:57
117 Arbeit 03:38 2021-08-06 08:26 2021-08-06 12:04
118 Arbeit 03:19 2021-08-05 13:11 2021-08-05 16:30
119 Mittagspause 01:05 2021-08-05 12:06 2021-08-05 13:11
120 Arbeit 03:50 2021-08-05 08:15 2021-08-05 12:06
121 Arbeit 04:14 2021-08-04 13:03 2021-08-04 17:18
122 Mittagspause 00:44 2021-08-04 12:19 2021-08-04 13:03
123 Arbeit 04:11 2021-08-04 08:08 2021-08-04 12:19
124 Arbeit 03:18 2021-08-03 13:16 2021-08-03 16:34
125 Mittagspause 00:49 2021-08-03 12:26 2021-08-03 13:16
126 Arbeit 04:24 2021-08-03 08:01 2021-08-03 12:26
127 Arbeit 02:58 2021-08-02 13:22 2021-08-02 16:20
128 Mittagspause 00:59 2021-08-02 12:22 2021-08-02 13:22
129 Arbeit 04:13 2021-08-02 08:09 2021-08-02 12:22
130 Arbeit 04:19 2021-07-30 13:01 2021-07-30 17:20
131 Mittagspause 00:45 2021-07-30 12:16 2021-07-30 13:01
132 Arbeit 04:22 2021-07-30 07:54 2021-07-30 12:16
133 Arbeit 03:25 2021-07-29 13:25 2021-07-29 16:50
134 Mittagspause 01:01 2021-07-29 12:23 2021-07-29 13:25
135 Arbeit 04:44 2021-07-29 07:39 2021-07-29 12:23
136 Arbeit 04:47 2021-07-28 12:49 2021-07-28 17:37
137 Mittagspause 00:58 2021-07-28 11:51 2021-07-28 12:49
138 Arbeit 03:48 2021-07-28 08:02 2021-07-28 11:51
139 Arbeit 03:49 2021-07-27 12:34 2021-07-27 16:24
140 Mittagspause 00:47 2021-07-27 11:47 2021-07-27 12:34
141 Arbeit 03:20 2021-07-27 08:27 2021-07-27 11:47
142 Arbeit 04:47 2021-07-26 12:59 2021-07-26 17:47
143 Mittagspause 00:52 2021-07-26 12:07 2021-07-26 12:59
144 Arbeit 03:59 2021-07-26 08:08 2021-07-26 12:07
145 Arbeit 05:53 2021-07-23 12:43 2021-07-23 18:37
146 Mittagspause 00:36 2021-07-23 12:07 2021-07-23 12:43
147 Arbeit 04:10 2021-07-23 07:57 2021-07-23 12:07
148 Arbeit 04:09 2021-07-22 12:54 2021-07-22 17:04
149 Mittagspause 00:42 2021-07-22 12:11 2021-07-22 12:54
150 Arbeit 04:16 2021-07-22 07:55 2021-07-22 12:11
151 Arbeit 03:11 2021-07-21 13:37 2021-07-21 16:48
152 Mittagspause 01:07 2021-07-21 12:29 2021-07-21 13:37
153 Arbeit 04:58 2021-07-21 07:31 2021-07-21 12:29
154 Arbeit 01:17 2021-07-20 18:44 2021-07-20 20:02
155 Arbeit 03:50 2021-07-20 13:14 2021-07-20 17:04
156 Mittagspause 00:41 2021-07-20 12:32 2021-07-20 13:14
157 Arbeit 04:55 2021-07-20 07:37 2021-07-20 12:32
158 Arbeit 03:19 2021-07-19 13:12 2021-07-19 16:31
159 Mittagspause 00:52 2021-07-19 12:20 2021-07-19 13:12
160 Arbeit 04:28 2021-07-19 07:51 2021-07-19 12:20
161 Arbeit 02:48 2021-07-16 12:55 2021-07-16 15:43
162 Mittagspause 00:47 2021-07-16 12:07 2021-07-16 12:55
163 Arbeit 04:01 2021-07-16 08:06 2021-07-16 12:07
164 Arbeit 03:38 2021-07-15 13:05 2021-07-15 16:43
165 Mittagspause 01:05 2021-07-15 11:59 2021-07-15 13:05
166 Arbeit 03:56 2021-07-15 08:02 2021-07-15 11:59
167 Arbeit 03:38 2021-07-14 13:07 2021-07-14 16:45
168 Mittagspause 01:00 2021-07-14 12:07 2021-07-14 13:07
169 Arbeit 04:00 2021-07-14 08:06 2021-07-14 12:07
170 Arbeit 04:22 2021-07-13 12:53 2021-07-13 17:15
171 Mittagspause 01:03 2021-07-13 11:50 2021-07-13 12:53
172 Arbeit 03:47 2021-07-13 08:02 2021-07-13 11:50
173 Arbeit 03:26 2021-07-12 13:02 2021-07-12 16:28
174 Mittagspause 01:03 2021-07-12 11:58 2021-07-12 13:02
175 Arbeit 04:14 2021-07-12 07:44 2021-07-12 11:58
176 Arbeit 03:57 2021-07-09 13:09 2021-07-09 17:06
177 Mittagspause 01:06 2021-07-09 12:02 2021-07-09 13:09
178 Arbeit 03:57 2021-07-09 08:04 2021-07-09 12:02
179 Arbeit 03:17 2021-07-08 13:12 2021-07-08 16:29
180 Mittagspause 01:07 2021-07-08 12:04 2021-07-08 13:12
181 Arbeit 04:00 2021-07-08 08:03 2021-07-08 12:04
182 Arbeit 03:41 2021-07-07 13:08 2021-07-07 16:49
183 Mittagspause 01:00 2021-07-07 12:07 2021-07-07 13:08
184 Arbeit 04:05 2021-07-07 08:02 2021-07-07 12:07
185 Arbeit 02:50 2021-07-06 13:05 2021-07-06 15:55
186 Mittagspause 01:05 2021-07-06 11:59 2021-07-06 13:05
187 Arbeit 03:49 2021-07-06 08:10 2021-07-06 11:59
188 Arbeit 03:32 2021-07-05 13:00 2021-07-05 16:33
189 Mittagspause 00:59 2021-07-05 12:00 2021-07-05 13:00
190 Arbeit 03:48 2021-07-05 08:12 2021-07-05 12:00
191 Arbeit 04:37 2021-07-02 12:42 2021-07-02 17:19
192 Arbeit 03:45 2021-07-02 08:06 2021-07-02 11:52
193 Arbeit 03:34 2021-07-01 13:15 2021-07-01 16:49
194 Arbeit 04:06 2021-07-01 07:52 2021-07-01 11:59
195 Arbeit 04:23 2021-06-30 13:17 2021-06-30 17:41
196 Arbeit 04:16 2021-06-30 08:12 2021-06-30 12:29
197 Arbeit 03:51 2021-06-29 13:08 2021-06-29 17:00
198 Arbeit 04:14 2021-06-29 07:51 2021-06-29 12:06
199 Arbeit 03:05 2021-06-28 13:34 2021-06-28 16:40
200 Arbeit 04:23 2021-06-28 07:56 2021-06-28 12:19
201 Arbeit 00:21 2021-06-25 17:44 2021-06-25 18:06
202 Arbeit 03:15 2021-06-25 13:12 2021-06-25 16:27
203 Arbeit 04:40 2021-06-25 07:35 2021-06-25 12:16
204 Arbeit 02:55 2021-06-24 13:04 2021-06-24 16:00
205 Arbeit 04:10 2021-06-24 08:00 2021-06-24 12:10
206 Arbeit 02:57 2021-06-23 13:36 2021-06-23 16:34
207 Arbeit 04:41 2021-06-23 07:57 2021-06-23 12:39
208 Arbeit 02:55 2021-06-22 12:54 2021-06-22 15:50
209 Arbeit 03:56 2021-06-22 07:58 2021-06-22 11:55
210 Arbeit 03:03 2021-06-21 12:52 2021-06-21 15:55
211 Arbeit 04:08 2021-06-21 07:53 2021-06-21 12:01
212 Arbeit 03:45 2021-06-18 12:49 2021-06-18 16:34
213 Arbeit 03:56 2021-06-18 07:57 2021-06-18 11:53
214 Arbeit 05:06 2021-06-17 13:15 2021-06-17 18:22
215 Arbeit 04:08 2021-06-17 08:08 2021-06-17 12:16
216 Arbeit 04:31 2021-06-16 13:09 2021-06-16 17:40
217 Arbeit 03:54 2021-06-16 08:20 2021-06-16 12:15
218 Arbeit 04:34 2021-06-15 12:48 2021-06-15 17:22
219 Arbeit 03:46 2021-06-15 08:11 2021-06-15 11:57
220 Arbeit 02:36 2021-06-14 13:27 2021-06-14 16:04
221 Arbeit 04:00 2021-06-14 08:10 2021-06-14 12:10
222 Arbeit 03:46 2021-06-11 12:32 2021-06-11 16:19
223 Arbeit 03:25 2021-06-11 08:09 2021-06-11 11:34
224 Arbeit 02:27 2021-06-10 13:18 2021-06-10 15:46
225 Arbeit 04:24 2021-06-10 08:05 2021-06-10 12:29
226 Arbeit 04:26 2021-06-09 13:24 2021-06-09 17:50
227 Arbeit 04:36 2021-06-09 07:47 2021-06-09 12:23
228 Arbeit 03:35 2021-06-08 12:50 2021-06-08 16:25
229 Arbeit 03:53 2021-06-08 07:58 2021-06-08 11:51
230 Arbeit 03:04 2021-06-07 13:03 2021-06-07 16:08
231 Arbeit 03:55 2021-06-07 08:20 2021-06-07 12:16
232 Arbeit 03:12 2021-06-04 12:47 2021-06-04 16:00
233 Arbeit 03:52 2021-06-04 08:13 2021-06-04 12:06
234 Arbeit 04:09 2021-06-03 12:49 2021-06-03 16:59
235 Arbeit 04:09 2021-06-03 07:45 2021-06-03 11:55
236 Arbeit 04:07 2021-06-02 12:56 2021-06-02 17:03
237 Arbeit 04:08 2021-06-02 07:50 2021-06-02 11:59
238 Arbeit 03:55 2021-06-01 13:04 2021-06-01 17:00
239 Arbeit 04:26 2021-06-01 07:48 2021-06-01 12:14
240 Arbeit 03:36 2021-05-31 13:00 2021-05-31 16:37
241 Arbeit 04:08 2021-05-31 08:17 2021-05-31 12:25
242 Arbeit 02:53 2021-05-28 12:53 2021-05-28 15:46
243 Arbeit 03:44 2021-05-28 08:10 2021-05-28 11:54
244 Arbeit 03:52 2021-05-27 12:35 2021-05-27 16:28
245 Arbeit 03:44 2021-05-27 08:06 2021-05-27 11:50
246 Arbeit 02:26 2021-05-26 13:35 2021-05-26 16:01
247 Arbeit 04:15 2021-05-26 08:35 2021-05-26 12:51
248 Arbeit 03:44 2021-05-25 12:41 2021-05-25 16:26
249 Arbeit 04:08 2021-05-25 07:45 2021-05-25 11:54
250 Arbeit 03:41 2021-05-21 12:57 2021-05-21 16:38
251 Arbeit 04:00 2021-05-21 07:55 2021-05-21 11:55
252 Arbeit 04:03 2021-05-20 12:36 2021-05-20 16:40
253 Arbeit 03:54 2021-05-20 08:03 2021-05-20 11:57
254 Arbeit 04:06 2021-05-19 12:57 2021-05-19 17:03
255 Arbeit 04:12 2021-05-19 08:00 2021-05-19 12:13
256 Arbeit 04:11 2021-05-18 12:52 2021-05-18 17:03
257 Arbeit 04:20 2021-05-18 07:50 2021-05-18 12:10
258 Arbeit 03:20 2021-05-17 12:57 2021-05-17 16:17
259 Arbeit 04:25 2021-05-17 07:49 2021-05-17 12:14
260 Arbeit 03:04 2021-05-14 13:04 2021-05-14 16:08
261 Arbeit 04:38 2021-05-14 07:50 2021-05-14 12:29
262 Arbeit 03:12 2021-05-12 12:35 2021-05-12 15:47
263 Arbeit 03:40 2021-05-12 07:55 2021-05-12 11:35
264 Arbeit 03:34 2021-05-11 12:45 2021-05-11 16:19
265 Arbeit 04:13 2021-05-11 07:48 2021-05-11 12:02
266 Arbeit 03:37 2021-05-10 12:22 2021-05-10 16:00
267 Arbeit 03:55 2021-05-10 07:52 2021-05-10 11:47
268 Arbeit 03:32 2021-05-07 13:00 2021-05-07 16:33
269 Arbeit 04:15 2021-05-07 07:53 2021-05-07 12:09
270 Arbeit 03:28 2021-05-06 13:04 2021-05-06 16:32
271 Arbeit 04:44 2021-05-06 08:01 2021-05-06 12:45
272 Arbeit 03:13 2021-05-05 13:13 2021-05-05 16:27
273 Arbeit 04:37 2021-05-05 07:49 2021-05-05 12:26
274 Arbeit 02:51 2021-05-04 13:19 2021-05-04 16:11
275 Arbeit 04:36 2021-05-04 07:40 2021-05-04 12:16
276 Arbeit 04:13 2021-05-03 13:13 2021-05-03 17:26
277 Arbeit 04:28 2021-05-03 08:01 2021-05-03 12:30
278 Arbeit 03:42 2021-01-11 08:18 2021-01-11 12:01
+15
View File
@@ -0,0 +1,15 @@
@startuml
'https://plantuml.com/activity-diagram-beta
|UI|
:Bestimme //Startdatum//;
:Bestimme //Enddatum//;
:Erstelle //Liste der Wochentage//;
|REST|
start
:Rufe API auf;
|UI|
:Zeige //Liste der Wochentage// an;
:Verarbeite Informationen der Rest-API;
stop
@enduml
+23
View File
@@ -91,6 +91,29 @@ main {
form {
@formLabelWidth: 10rem;
@formItemWidth: 40rem;
nav.menu {
width: @formItemWidth + @formLabelWidth + 4rem;
border-color: @mainColor;
border-bottom-style: solid;
margin: 1rem auto;
span {
border-color: @mainColor;
border-style: solid solid none;
padding: 0.5rem;
display: inline-block;
font-weight: bolder;
margin-right: 1rem;
&:first-child {
margin-left: 1.5rem;
}
&:hover {
background-color: darken(@mainColorLight,10%,relativ);
}
&.active {
background-color: darken(@mainColorLight,20%,relativ);
}
}
}
fieldset {
width: @formItemWidth + @formLabelWidth + 2rem;
margin: 1rem auto;
+110
View File
@@ -0,0 +1,110 @@
<script context="module">
const MyFetch = {
'post': async (rest_url, request_body) => {
return MyFetch._fetch(rest_url, MyFetch._buildRequestOptions(request_body), {})
},
'put': async (rest_url, http_body) => {
return MyFetch._fetch(rest_url, MyFetch._buildRequestOptions(http_body, true), {})
},
'get': async (rest_url, query_parameters) => {
if (query_parameters !== null) {
let filter = []
for (let parameter in query_parameters) {
filter.push(parameter + '=' + query_parameters[parameter])
}
if (filter.length > 0) {
rest_url += '?' + filter.join('&')
}
}
return MyFetch._fetch(rest_url, {})
},
'_fetch': async (rest_url, request_options) => {
// noinspection JSUnresolvedVariable
let response = await MyFetch._pureFetch(rest_url, request_options).catch(err => {
console.error(err)
return null
})
if (!response.ok) {
throw new Error('Fail!')
}
return response.json()
},
'_buildRequestOptions': (request_body, needPut) => {
return {
method: (needPut === true) ? 'PUT' : 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'omit',
headers: {
'Content-Type': 'application/json',
},
body: request_body,
}
},
'_pureFetch': async (rest_url, request_options) => {
// noinspection JSUnresolvedVariable
return await fetch(env.API_URL + rest_url, request_options)
}
}
export const WorkingHoursRepository = {
'browse': (startDate = '', endDate = '') => {
let filter = {}
if (startDate !== '') {
filter['start-date'] = startDate
}
if (endDate !== '') {
filter['end-date'] = endDate
}
return MyFetch.get('/working-hours', filter)
},
'read': date => {
return MyFetch.get('/working-hours/' + date)
},
'readOrNew': async date => {
let response = await MyFetch._pureFetch('/working-hours/' + date)
if (response.status === 404) {
return {workingTime: '00:00:00', workingDay: date}
} else if (!response.ok) {
throw new Error('Fail!')
}
return response.json()
},
'add': async (record) => {
console.debug(record);
return MyFetch.post('/working-hours', JSON.stringify(record))
},
'update': async (date, record) => {
console.debug(record);
return MyFetch.put('/working-hours/' + date, JSON.stringify(record))
},
'addOrUpdate': async (date, record) => {
console.debug(record);
let request_options = MyFetch._buildRequestOptions(JSON.stringify(record))
let response = await MyFetch._pureFetch('/working-hours', request_options)
if (response.status === 409) {
return WorkingHoursRepository.update(date, record)
} else if (!response.ok) {
throw new Error('Fail!')
}
return response.json()
}
}
export const WorkingHoursViewsRepository = {
'weekly': async () => {
return MyFetch.get('/views/working-hours/weekly')
},
'monthly': async () => {
return MyFetch.get('/views/working-hours/monthly')
},
'yearly': async () => {
return MyFetch.get('/views/working-hours/yearly')
},
}
</script>
+15
View File
@@ -0,0 +1,15 @@
<script context="module">
export class TimekeepingDate extends Date {
getDateString() {
return this.getFullYear() + "-"
+ (this.getMonth() + 1).toString().padStart(2, '0') + "-"
+ this.getDate().toString().padStart(2, '0')
}
getNextDay() {
let nextDay = new TimekeepingDate(this);
nextDay.setDate(this.getDate() + 1)
return nextDay
}
}
</script>
+7
View File
File diff suppressed because one or more lines are too long
+3 -2
View File
@@ -1,5 +1,6 @@
<Views />
<WeeklyViews />
<script>
import Views from "./WeeklyViews.svelte";
import WeeklyViews from "./WeeklyViews.svelte";
export const params = {};
</script>
+3 -23
View File
@@ -1,31 +1,11 @@
<script>
import Views from "./Views.svelte";
export let params;
import {WorkingHoursViewsRepository} from "../components/Repositories.svelte";
export let params
params = {
title: 'Monatsansicht',
records: [],
isLoading: true
promise: WorkingHoursViewsRepository.monthly()
}
const View = {
'browse': () => {
fetch(env.API_URL + '/views/working-hours/monthly')
.then(res => {
if (!res.ok) {
throw new Error('Fail!');
}
return res.json();
})
.then(data => {
params.records = data;
params.isLoading = false;
})
.catch(err => {
params.isLoading = false;
console.log(err);
});
}
};
View.browse();
</script>
<Views {params} />
+11 -3
View File
@@ -1,5 +1,7 @@
<script>
export let params;
export let params = {};
let records = []
let isLoading = true
console.log(params)
if (!String.prototype.startsWith) {
String.prototype.startsWith = function(searchString, position) {
@@ -9,6 +11,12 @@
}
$: isNegative = time => time.startsWith('-') ? 'absence-time' : '';
$: cutMinusChar = time => time.startsWith('-') ? time.substr(1) : time;
const init = async () => await params.promise.then(data => {
records = data
isLoading = false
})
init()
</script>
<svelte:head>
@@ -20,7 +28,7 @@
<h1>{params.title}</h1>
</header>
<article>
{#if params.isLoading === true}
{#if isLoading === true}
<p>Loading...</p>
{:else}
<table>
@@ -39,7 +47,7 @@
</tr>
</thead>
<tbody>
{#each params.records as record}
{#each records as record}
<tr>
<td>{record.period}</td>
<td>{record.workingDays}</td>
+3 -23
View File
@@ -1,31 +1,11 @@
<script>
import Views from "./Views.svelte";
export let params;
import {WorkingHoursViewsRepository} from "../components/Repositories.svelte";
export let params
params = {
title: 'Wochenansicht',
records: [],
isLoading: true
promise: WorkingHoursViewsRepository.weekly()
}
const View = {
'browse': () => {
fetch(env.API_URL + '/views/working-hours/weekly')
.then(res => {
if (!res.ok) {
throw new Error('Fail!');
}
return res.json();
})
.then(data => {
params.records = data;
params.isLoading = false;
})
.catch(err => {
params.isLoading = false;
console.log(err);
});
}
};
View.browse();
</script>
<Views {params} />
+10 -194
View File
@@ -1,216 +1,32 @@
<script>
export let params;
let title = "Bearbeitung Einträge"
import IconifyIcon from '@iconify/svelte';
import wrenchIcon from '@iconify-icons/oi/wrench';
import checkIcon from '@iconify-icons/oi/check';
import xIcon from '@iconify-icons/oi/x';
import documentIcon from '@iconify-icons/oi/document';
import List from "./WorkingHours/List.svelte";
import Formular from "./WorkingHours/Formular.svelte";
export const params = {};
let TITLE = "Bearbeitung Einträge"
let activeRecord = null;
let newRecord = false;
params = {
title: 'Einträge',
records: [],
isLoading: true
}
const Records = {
'browse': () => {
// noinspection JSUnresolvedVariable
fetch(env.API_URL + '/working-hours')
.then(res => {
if (!res.ok) {
throw new Error('Fail!');
}
return res.json();
})
.then(data => {
Controller.cancelActiveRecord();
params.records = data;
params.isLoading = false;
})
.catch(err => {
params.isLoading = false;
console.log(err);
});
},
'read': date => {
// noinspection JSUnresolvedVariable
fetch(env.API_URL + '/working-hours/' + date)
.then(res => {
if (!res.ok) {
throw new Error('Fail!');
}
return res.json();
})
.then(data => {
activeRecord = data;
if (date === null) {
Controller.listRecords();
}
})
.catch(err => {
console.log(err);
});
},
'add': async record => {
console.log(record);
// noinspection JSUnresolvedVariable
await fetch(env.API_URL + '/working-hours', {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'omit',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(record)
})
.then(res => {
if (!res.ok) {
throw new Error('Fail!');
}
})
.then(() => {
Controller.listRecords();
})
.catch(err => {
console.log(err);
});
},
'update': async (date, record) => {
console.log(record);
// noinspection JSUnresolvedVariable
await fetch(env.API_URL + '/working-hours/' + date, {
method: 'PUT',
mode: 'cors',
cache: 'no-cache',
credentials: 'omit',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(record)
})
.then(res => {
if (!res.ok) {
throw new Error('Fail!');
}
})
.then(() => {
Controller.listRecords();
})
.catch(err => {
console.log(err);
});
}
};
const Controller = {
'listRecords': () => {
Controller.cancelActiveRecord();
Records.browse();
},
'newRecord': () => {
activeRecord = {workingTime: '00:00:00'};
newRecord = true;
},
'saveRecord': () => {
if (newRecord === true) {
Records.add(activeRecord);
} else {
Records.update(activeRecord.workingDay, activeRecord);
}
},
'selectActiveRecord': record => Records.read(record.workingDay),
'cancelActiveRecord': () => {
activeRecord = null;
newRecord = false;
}
};
const initSite = () => {
Controller.listRecords()
};
initSite()
</script>
<svelte:head>
<title>{title}</title>
<title>{TITLE}</title>
</svelte:head>
{#if activeRecord === null}
<section id="list-records">
<header>
<h1>{title}</h1>
<h1>{TITLE}</h1>
</header>
<article>
{#if params.isLoading === true}
<p>Loading...</p>
{:else}
<!--suppress HtmlUnknownTarget -->
<form action="/working-hours">
<fieldset>
<button on:click={Controller.newRecord} type="button">Neuer Eintrag
<IconifyIcon icon={documentIcon}/>
</button>
</fieldset>
</form>
<table>
<colgroup>
<col />
<col />
<col />
</colgroup>
<thead>
<tr>
<th>Datum</th>
<th>Arbeitsstunden</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody>
{#each params.records as record}
<tr>
<td>{record.workingDay}</td>
<td>{record.workingTime}</td>
<td>
<button on:click={() => Controller.selectActiveRecord(record)} type="button">Bearbeiten
<IconifyIcon icon={wrenchIcon}/>
</button>
</td>
</tr>
{/each}
</tbody>
</table>
{/if}
<List bind:activeRecord={activeRecord}/>
</article>
</section>
{:else}
<section id="edit-record">
<header>
<h1>{title}</h1>
<h1>{TITLE}</h1>
</header>
<article>
<!--suppress HtmlUnknownTarget -->
<form action="/working-hours" name="editRecord">
<fieldset name="record-data">
<div>
<label for="workingDay">Arbeitstag</label>
<input bind:value={activeRecord.workingDay} type="date"
id="workingDay" required pattern="\d\{4}-[0-1]\d-[0-3]\d\">
</div>
<div>
<label for="workingTime">Arbeitszeit</label>
<input bind:value={activeRecord.workingTime} placeholder="Arbeitszeit" type="time"
id="workingTime" required pattern="[0-5]\d:[0-5]\d:[0-5]\d">
</div>
</fieldset>
<fieldset name="buttons">
<button on:click={Controller.saveRecord} type="button">Übernehmen
<IconifyIcon icon={checkIcon} color="green"/>
</button>
<button on:click={Controller.cancelActiveRecord} type="button" class="sub-button">Abbrechen
<IconifyIcon icon={xIcon}/>
</button>
</fieldset>
</form>
<Formular bind:activeRecord={activeRecord}/>
</article>
</section>
{/if}
+126
View File
@@ -0,0 +1,126 @@
<script>
import {WorkingHoursRepository} from "../../components/Repositories.svelte"
import IconifyIcon from '@iconify/svelte'
import checkIcon from '@iconify-icons/oi/check'
import xIcon from '@iconify-icons/oi/x'
import EditByDay from "./Formular/EditByDay.svelte";
import EditByWeek from "./Formular/EditByWeek.svelte";
import ImportCsv from "./Formular/ImportCsv.svelte";
import {TimekeepingDate} from "../../components/TimekeepingDate.svelte";
const DAILY_EDIT = 0
const WEEKLY_EDIT = 1
const CSV_IMPORT = 2
const Controller = {
'saveRecord': () => {
activeRecordList.forEach((actualRecord) => {
if (actualRecord.workingTime === '00:00:00') {
return
}
WorkingHoursRepository.addOrUpdate(actualRecord.workingDay, actualRecord);
})
activeDate = nextDate
makeTimekeepingList()
},
'cancelActiveRecord': () => {
activeRecordList = []
activeRecord = null
}
}
const WeekController = {
'makeTimekeepingList': () => {
let actualDay = WeekController.getMondayFromWeek(
activeDate === null ? new TimekeepingDate() : new TimekeepingDate(activeDate)
)
activeRecordList = []
activeDate = actualDay.getDateString()
for (const daysDiff in [0, 1, 2, 3, 4, 5, 6]) {
activeRecordList.push({workingTime: '00:00:00', workingDay: actualDay.getDateString()})
actualDay = actualDay.getNextDay()
}
nextDate = actualDay.getDateString()
WorkingHoursRepository.browse(activeRecordList[0].workingDay, activeRecordList[6].workingDay).then(data => {
data.forEach(item => {
let actualDay = new TimekeepingDate(item.workingDay)
activeRecordList[actualDay.getDay()-1].workingTime = item.workingTime
})
})
},
'getMondayFromWeek': actualDayObject => {
if (actualDayObject.getDate() === 0) {
actualDayObject.setDate(actualDayObject.getDate() - 7)
}
if (actualDayObject.getDate() !== 1) {
actualDayObject.setDate(actualDayObject.getDate() - (actualDayObject.getDay() - 1))
}
return actualDayObject
}
}
const DayController = {
'makeTimekeepingList': () => {
let actualDay = activeDate === null ? new TimekeepingDate() : new TimekeepingDate(activeDate)
WorkingHoursRepository.readOrNew(actualDay.getDateString()).then(data => {
activeRecordList = [ data ]
activeDate = actualDay.getDateString()
nextDate = actualDay.getNextDay().getDateString()
})
}
}
const CsvController = {
'makeTimekeepingList': () => {
MenuController.dailyEdit()
}
}
const MenuController = {
'dailyEdit': () => {
period_of_edit = DAILY_EDIT
makeTimekeepingList = DayController.makeTimekeepingList
makeTimekeepingList()
},
'weeklyEdit': () => {
period_of_edit = WEEKLY_EDIT
makeTimekeepingList = WeekController.makeTimekeepingList
makeTimekeepingList()
},
'csvImport': () => {
period_of_edit = CSV_IMPORT
activeRecordList = []
makeTimekeepingList = CsvController.makeTimekeepingList
}
}
let activeDate = null
let nextDate = null
let activeRecordList = []
export let activeRecord = null
let period_of_edit
let makeTimekeepingList
MenuController.dailyEdit()
</script>
<!--suppress HtmlUnknownTarget -->
<form action="/working-hours" name="editRecord">
<nav class="menu">
<span on:click={MenuController.dailyEdit} class:active={period_of_edit === DAILY_EDIT}>Täglich</span>
<span on:click={MenuController.weeklyEdit} class:active={period_of_edit === WEEKLY_EDIT}>Wöchentlich</span>
<span on:click={MenuController.csvImport} class:active={period_of_edit === CSV_IMPORT}>Import per CSV</span>
</nav>
{#if period_of_edit === DAILY_EDIT}
<EditByDay bind:activeRecordList bind:activeDate bind:makeTimekeepingList/>
{/if}
{#if period_of_edit === WEEKLY_EDIT}
<EditByWeek bind:activeRecordList bind:activeDate bind:makeTimekeepingList/>
{/if}
{#if period_of_edit === CSV_IMPORT}
<ImportCsv bind:activeRecordList bind:makeTimekeepingList/>
{/if}
<fieldset name="buttons">
<button on:click={Controller.saveRecord} type="button">Übernehmen und Weiter
<IconifyIcon icon={checkIcon} color="green"/>
</button>
<button on:click={Controller.cancelActiveRecord} type="button" class="sub-button">Abbrechen
<IconifyIcon icon={xIcon}/>
</button>
</fieldset>
</form>
@@ -0,0 +1,24 @@
<script>
export let activeDate = null
export let activeRecordList = []
export let makeTimekeepingList = () => {}
makeTimekeepingList()
</script>
{#if activeRecordList.length < 1}
<p>Loading...</p>
{:else}
<fieldset name="record-data-by-day">
<div>
<label for="workingDay">Arbeitstag</label>
<input bind:value={activeDate} type="date" on:change={makeTimekeepingList}
id="workingDay" required pattern="\d\{4}-[0-1]\d-[0-3]\d\">
</div>
<div>
<label for="workingTime">Arbeitszeit</label>
<input bind:value={activeRecordList[0].workingTime} placeholder="Arbeitszeit" type="time"
id="workingTime" required pattern="[0-5]\d:[0-5]\d:[0-5]\d">
</div>
</fieldset>
{/if}
@@ -0,0 +1,62 @@
<script>
export let activeDate = null
export let activeRecordList = []
export let makeTimekeepingList = () => {}
makeTimekeepingList()
</script>
<style>
tbody.weekend td input, tbody.weekend td {
color: red;
}
input#monday {
display: inline;
width: auto;
}
</style>
{#if activeRecordList.length < 1}
<p>Loading...</p>
{:else}
<fieldset name="how-week-is-use">
<div>
<label for="monday">Woche vom</label>
<input bind:value={activeDate} type="date" on:change={makeTimekeepingList}
id="monday" required pattern="\d\{4}-[0-1]\d-[0-3]\d\">
</div>
</fieldset>
<fieldset name="record-data-by-week">
<div>
<table>
<tbody>
{#each ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag'] as day, index}
<tr>
<td>
{day}
</td>
<td>
<input bind:value={activeRecordList[index].workingTime} placeholder="Arbeitszeit" type="time"
required pattern="[0-5]\d:[0-5]\d:[0-5]\d">
</td>
</tr>
{/each}
</tbody>
<tbody class="weekend">
{#each ['Samstag', 'Sontag'] as day, index}
<tr>
<td>
{day}
</td>
<td>
<input bind:value={activeRecordList[index+5].workingTime} placeholder="Arbeitszeit" type="time"
required pattern="[0-5]\d:[0-5]\d:[0-5]\d">
</td>
</tr>
{/each}
</tbody>
</table>
</div>
</fieldset>
{/if}
@@ -0,0 +1,80 @@
<script>
import Papa from '../../../papaparse.min'
export let activeRecordList = []
let imported_data = []
let files = null
const VerarbeiteDateien = () => {
for (const file of files) {
VerarbeiteCsv(file)
}
}
const VerarbeiteCsv = file => {
Papa.parse(file, {
header: true,
skipEmptyLines: true,
complete: results => {
let cash_work_days = {}
results.data.forEach(item => {
// noinspection JSNonASCIINames
let activity = item['Aktivität']
if (activity.trim() === 'Mittagspause') {
return
}
let work_from = new Date(item['Von'])
let work_to = new Date(item['Bis'])
let actual_day = work_from.toISOString().substring(0, 10)
let actual_work_hours = (work_to - work_from)/(1000*60*60)
if (cash_work_days[actual_day] === undefined) {
cash_work_days[actual_day] = actual_work_hours
} else {
cash_work_days[actual_day] += actual_work_hours
}
})
for (let day in cash_work_days) {
let hours = cash_work_days[day]
let hours_digits = Math.trunc(hours)
let minutes_digits = Math.round((hours-hours_digits)*60)
let working_time = String(hours_digits).padStart(2, '0') + ":"
+ String(minutes_digits).padStart(2, '0') + ':00'
activeRecordList.push({workingTime: working_time, workingDay: day})
}
imported_data = activeRecordList
},
})
}
</script>
<fieldset>
<legend>Download-Liste</legend>
<div class="zelle">
<label for="csv-file">Download der Zeiten von <i>aTimeLogger2</i></label>
<input type="file" accept="text/csv" id="csv-file" bind:files/>
<button type="button" on:click={VerarbeiteDateien}>Upload</button>
</div>
</fieldset>
<fieldset name="record-data-for-import">
<div>
{#if imported_data.length < 1}
<p>Loading...</p>
{:else}
<table>
<tbody>
{#each imported_data as item}
<tr>
<td>
{item.workingDay}
</td>
<td>
{item.workingTime}
</td>
</tr>
{/each}
</tbody>
</table>
{/if}
</div>
</fieldset>
+77
View File
@@ -0,0 +1,77 @@
<script>
import {WorkingHoursRepository} from "../../components/Repositories.svelte"
import {TimekeepingDate} from "../../components/TimekeepingDate.svelte"
export let activeRecord = null
let isLoading = true
let records = []
import IconifyIcon from '@iconify/svelte'
import wrenchIcon from '@iconify-icons/oi/wrench'
import documentIcon from '@iconify-icons/oi/document'
const Controller = {
'listRecords': () => {
Controller.cancelActiveRecord();
WorkingHoursRepository.browse().then(data => {
Controller.cancelActiveRecord()
records = data
isLoading = false
});
},
'newRecord': async () => {
const actDate = new TimekeepingDate()
activeRecord = await WorkingHoursRepository.readOrNew(actDate.getDateString())
},
'selectActiveRecord': record => WorkingHoursRepository.read(record.workingDay).then(data => {
if (data === null) {
Controller.listRecords()
return
}
activeRecord = data;
}),
'cancelActiveRecord': () => {
activeRecord = null;
}
}
Controller.listRecords()
</script>
<!--suppress HtmlUnknownTarget -->
<form action="/working-hours">
<fieldset>
<button on:click={Controller.newRecord} type="button">Neuer Eintrag
<IconifyIcon icon={documentIcon}/>
</button>
</fieldset>
</form>
{#if isLoading === true}
<p>Loading...</p>
{:else}
<table>
<colgroup>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th>Datum</th>
<th>Arbeitsstunden</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody>
{#each records as record}
<tr>
<td>{record.workingDay}</td>
<td>{record.workingTime}</td>
<td>
<button on:click={() => Controller.selectActiveRecord(record)} type="button">Bearbeiten
<IconifyIcon icon={wrenchIcon}/>
</button>
</td>
</tr>
{/each}
</tbody>
</table>
{/if}
+3 -23
View File
@@ -1,31 +1,11 @@
<script>
import Views from "./Views.svelte";
export let params;
import {WorkingHoursViewsRepository} from "../components/Repositories.svelte";
export let params
params = {
title: 'Jahresansicht',
records: [],
isLoading: true
promise: WorkingHoursViewsRepository.yearly()
}
const View = {
'browse': () => {
fetch(env.API_URL + '/views/working-hours/yearly')
.then(res => {
if (!res.ok) {
throw new Error('Fail!');
}
return res.json();
})
.then(data => {
params.records = data;
params.isLoading = false;
})
.catch(err => {
params.isLoading = false;
console.log(err);
});
}
};
View.browse();
</script>
<Views {params} />