Merge branch 'calendar/finalization' of gitlab.com:Chill-Projet/chill-bundles into calendar/finalization

This commit is contained in:
Mathieu Jaumotte 2022-09-21 12:46:03 +02:00
commit 8d7013b988
17 changed files with 80 additions and 41 deletions

View File

@ -203,6 +203,11 @@ class Calendar implements TrackCreationInterface, TrackUpdateInterface
*/
private string $status = self::STATUS_VALID;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $urgent = false;
public function __construct()
{
$this->comment = new CommentEmbeddable();

View File

@ -85,6 +85,6 @@ final class AgentAggregator implements AggregatorInterface
public function getTitle(): string
{
return 'Group appointments by agent';
return 'Group calendars by agent';
}
}

View File

@ -40,7 +40,7 @@ class CancelReasonAggregator implements AggregatorInterface
public function alterQuery(QueryBuilder $qb, $data)
{
// TODO: still needs to take into account appointments without a cancel reason somehow
// TODO: still needs to take into account calendars without a cancel reason somehow
if (!in_array('calcancel', $qb->getAllAliases(), true)) {
$qb->join('cal.cancelReason', 'calcancel');
}
@ -88,6 +88,6 @@ class CancelReasonAggregator implements AggregatorInterface
public function getTitle(): string
{
return 'Group appointments by cancel reason';
return 'Group calendars by cancel reason';
}
}

View File

@ -41,7 +41,7 @@ final class JobAggregator implements AggregatorInterface
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('caluser', $qb->getAllAliases(), true)) {
$qb->join('cal.user', 'caluser');
$qb->join('cal.mainUser', 'caluser');
}
$qb->addSelect('IDENTITY(caluser.userJob) as job_aggregator');
@ -87,6 +87,6 @@ final class JobAggregator implements AggregatorInterface
public function getTitle(): string
{
return 'Group appointments by agent job';
return 'Group calendars by agent job';
}
}

View File

@ -80,6 +80,6 @@ final class LocationAggregator implements AggregatorInterface
public function getTitle(): string
{
return 'Group appointments by location';
return 'Group calendars by location';
}
}

View File

@ -87,6 +87,6 @@ final class LocationTypeAggregator implements AggregatorInterface
public function getTitle(): string
{
return 'Group appointments by location type';
return 'Group calendars by location type';
}
}

View File

@ -55,10 +55,10 @@ class MonthYearAggregator implements AggregatorInterface
return 'by month and year';
}
$month = substr($value, 0, 2);
$year = substr($value, 3, 4);
$month = (int)substr($value, 0, 2);
$year = (int)substr($value, 3, 4);
return strftime('%B %G', mktime(0, 0, 0, $month, '1', $year));
return strftime('%B %G', mktime(0, 0, 0, $month, 1, $year));
};
}
@ -69,6 +69,6 @@ class MonthYearAggregator implements AggregatorInterface
public function getTitle(): string
{
return 'Group appointments by month and year';
return 'Group calendars by month and year';
}
}

View File

@ -41,7 +41,7 @@ final class ScopeAggregator implements AggregatorInterface
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('caluser', $qb->getAllAliases(), true)) {
$qb->join('cal.user', 'caluser');
$qb->join('cal.mainUser', 'caluser');
}
$qb->addSelect('IDENTITY(caluser.mainScope) as scope_aggregator');
@ -87,6 +87,6 @@ final class ScopeAggregator implements AggregatorInterface
public function getTitle(): string
{
return 'Group appointments by agent scope';
return 'Group calendars by agent scope';
}
}

View File

@ -21,7 +21,8 @@ use Closure;
use Doctrine\ORM\AbstractQuery;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Process\Exception\LogicException;
use Symfony\Component\Validator\Exception\LogicException;
class CountCalendars implements ExportInterface, GroupedExportInterface
{
@ -44,7 +45,7 @@ class CountCalendars implements ExportInterface, GroupedExportInterface
public function getDescription(): string
{
return 'Count appointments by various parameters.';
return 'Count calendars by various parameters.';
}
public function getGroup(): string
@ -78,7 +79,7 @@ class CountCalendars implements ExportInterface, GroupedExportInterface
public function getTitle(): string
{
return 'Count appointments';
return 'Count calendars';
}
public function getType(): string

View File

@ -44,7 +44,7 @@ class StatCalendarAvgDuration implements ExportInterface, GroupedExportInterface
public function getDescription(): string
{
return 'Get the average of appointment duration according to various filters';
return 'Get the average of calendar duration according to various filters';
}
public function getGroup(): string
@ -78,7 +78,7 @@ class StatCalendarAvgDuration implements ExportInterface, GroupedExportInterface
public function getTitle(): string
{
return 'Average appointment duration';
return 'Average calendar duration';
}
public function getType(): string

View File

@ -44,7 +44,7 @@ class StatCalendarSumDuration implements ExportInterface, GroupedExportInterface
public function getDescription(): string
{
return 'Get the sum of appointment durations according to various filters';
return 'Get the sum of calendar durations according to various filters';
}
public function getGroup(): string
@ -78,7 +78,7 @@ class StatCalendarSumDuration implements ExportInterface, GroupedExportInterface
public function getTitle(): string
{
return 'Sum of appointment durations';
return 'Sum of calendar durations';
}
public function getType(): string

View File

@ -82,6 +82,6 @@ class AgentFilter implements FilterInterface
public function getTitle(): string
{
return 'Filter appointments by agent';
return 'Filter calendars by agent';
}
}

View File

@ -66,7 +66,7 @@ class BetweenDatesFilter implements FilterInterface
public function describeAction($data, $format = 'string'): array
{
return ['Filtered by appointments between %dateFrom% and %dateTo%', [
return ['Filtered by calendars between %dateFrom% and %dateTo%', [
'%dateFrom%' => $data['date_from']->format('d-m-Y'),
'%dateTo%' => $data['date_to']->format('d-m-Y'),
]];
@ -74,6 +74,6 @@ class BetweenDatesFilter implements FilterInterface
public function getTitle(): string
{
return 'Filter appointments between certain dates';
return 'Filter calendars between certain dates';
}
}

View File

@ -43,7 +43,7 @@ class JobFilter implements FilterInterface
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('caluser', $qb->getAllAliases(), true)) {
$qb->join('cal.user', 'caluser');
$qb->join('cal.mainUser', 'caluser');
}
$where = $qb->getDQLPart('where');
@ -95,6 +95,6 @@ class JobFilter implements FilterInterface
public function getTitle(): string
{
return 'Filter appointments by agent job';
return 'Filter calendars by agent job';
}
}

View File

@ -43,7 +43,7 @@ class ScopeFilter implements FilterInterface
public function alterQuery(QueryBuilder $qb, $data)
{
if (!in_array('caluser', $qb->getAllAliases(), true)) {
$qb->join('cal.user', 'caluser');
$qb->join('cal.mainUser', 'caluser');
}
$where = $qb->getDQLPart('where');
@ -95,6 +95,6 @@ class ScopeFilter implements FilterInterface
public function getTitle()
{
return 'Filter appointments by agent scope';
return 'Filter calendars by agent scope';
}
}

View File

@ -0,0 +1,33 @@
<?php
declare(strict_types=1);
namespace Chill\Migrations\Calendar;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20220921101643 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add urgent property to calendar entity';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE chill_calendar.calendar ADD urgent BOOLEAN DEFAULT NULL');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE chill_calendar.calendar DROP urgent');
}
}

View File

@ -72,8 +72,8 @@ invite:
# exports
Exports of calendar: Exports des rendez-vous
Count appointments: Nombre de rendez-vous
Count appointments by various parameters.: Compte le nombre de rendez-vous en fonction de différents paramètres.
Count calendars: Nombre de rendez-vous
Count calendars by various parameters.: Compte le nombre de rendez-vous en fonction de différents paramètres.
Average appointment duration: Moyenne de la durée des rendez-vous
Get the average of appointment duration according to various filters: Calcule la moyenne des durées des rendez-vous en fonction de différents paramètres.
@ -82,21 +82,21 @@ Sum of appointment durations: Somme de la durée des rendez-vous
Get the sum of appointment durations according to various filters: Calcule la somme des durées des rendez-vous en fonction de différents paramètres.
'Filtered by agent: only %agents%': "Filtré par agents: uniquement %agents%"
Filter appointments by agent: Filtrer les rendez-vous par agents
Filter appointments by agent job: Filtrer les rendez-vous par métiers des agents
Filter calendars by agent: Filtrer les rendez-vous par agents
Filter calendars by agent job: Filtrer les rendez-vous par métiers des agents
'Filtered by agent job: only %jobs%': 'Filtré par métiers des agents: uniquement les %jobs%'
Filter appointments by agent scope: Filtrer les rendez-vous par services des agents
Filter calendars by agent scope: Filtrer les rendez-vous par services des agents
'Filtered by agent scope: only %scopes%': 'Filtré par services des agents: uniquement les services %scopes%'
Filter appointments between certain dates: Filtrer les rendez-vous par date du rendez-vous
'Filtered by appointments between %dateFrom% and %dateTo%': 'Filtré par rendez-vous entre %dateFrom% et %dateTo%'
Filter calendars between certain dates: Filtrer les rendez-vous par date du rendez-vous
'Filtered by calendars between %dateFrom% and %dateTo%': 'Filtré par rendez-vous entre %dateFrom% et %dateTo%'
Group appointments by agent: Grouper les rendez-vous par agent
Group appointments by agent job: Grouper les rendez-vous par métier de l'agent
Group appointments by agent scope: Grouper les rendez-vous par service de l'agent
Group appointments by location type: Grouper les rendez-vous par type de localisation
Group appointments by location: Grouper les rendez-vous par lieu de rendez-vous
Group appointments by cancel reason: Grouper les rendez-vous par motif d'annulation
Group appointments by month and year: Grouper les rendez-vous par mois et année
Group calendars by agent: Grouper les rendez-vous par agent
Group calendars by agent job: Grouper les rendez-vous par métier de l'agent
Group calendars by agent scope: Grouper les rendez-vous par service de l'agent
Group calendars by location type: Grouper les rendez-vous par type de localisation
Group calendars by location: Grouper les rendez-vous par lieu de rendez-vous
Group calendars by cancel reason: Grouper les rendez-vous par motif d'annulation
Group calendars by month and year: Grouper les rendez-vous par mois et année
Scope: Service
Job: Métier
Location type: Type de localisation