refs #724. New field . RemotePc

develop-jenkins
Manuel Aranda Rosales 2024-10-03 08:57:56 +02:00
parent feb239f3de
commit ca23d41241
4 changed files with 68 additions and 9 deletions

View File

@ -12,6 +12,9 @@ resources:
ApiPlatform\Metadata\Get:
provider: App\State\Provider\TraceProvider
order:
createdAt: DESC
properties:
App\Entity\Trace:
id:

View File

@ -127,6 +127,18 @@ services:
arguments: [ { 'synchronized': ~ } ]
tags: [ 'api_platform.filter' ]
api_platform.filter.remote_calendar.order:
parent: 'api_platform.doctrine.orm.order_filter'
arguments:
$properties: { 'id': ~, 'name': ~ }
$orderParameterName: 'order'
tags: [ 'api_platform.filter' ]
api_platform.filter.remote_calendar.search:
parent: 'api_platform.doctrine.orm.search_filter'
arguments: [ { 'id': 'exact', 'name': 'partial', } ]
tags: [ 'api_platform.filter' ]
api_platform.filter.user.order:
parent: 'api_platform.doctrine.orm.order_filter'
arguments:

View File

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20241002062742 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE organizational_unit ADD remote_pc TINYINT(1) NOT NULL, ADD reserved TINYINT(1) NOT NULL');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE organizational_unit DROP remote_pc, DROP reserved');
}
}

View File

@ -84,20 +84,33 @@ class RemoteCalendar extends AbstractEntity
return $this;
}
public function isRemoteAvailable(): bool
public function isAvailable(): bool
{
$now = new \DateTime();
foreach ($this->getRules() as $rule) {
$dayOfWeek = (int) $now->format('w');
$adjustedDayOfWeek = ($dayOfWeek + 6) % 7;
if (!in_array($adjustedDayOfWeek, $rule->getBusyWeekdays())) {
return false;
if ($rule->isRemoteAvailable()) {
$fromDate = $rule->getAvailableFromDate();
$toDate = $rule->getAvailableToDate();
if ($fromDate && $toDate && $fromDate <= $now && $now <= $toDate) {
return true;
}
} else {
$dayOfWeek = (int) $now->format('w');
$adjustedDayOfWeek = ($dayOfWeek + 6) % 7;
if (!in_array($adjustedDayOfWeek, $rule->getBusyWeekdays())) {
return true;
}
$currentTime = $now->format('H:i');
if (!($currentTime >= $rule->getBusyFromHour() && $currentTime <= $rule->getBusyToHour())) {
return true;
}
}
$currentTime = $now->format('H:i');
return ($currentTime >= $rule->getBusyFromHour() && $currentTime <= $rule->getBusyToHour());
}
return false;
}
}