This commit is contained in:
Julien Fastré 2022-07-01 15:05:13 +02:00
parent 93c5e83454
commit f513749780
7 changed files with 67 additions and 67 deletions

View File

@ -407,6 +407,7 @@ final class ActivityController extends AbstractController
if (array_key_exists('usersId', $activityData) && $activityType->getUsersVisible() > 0) { if (array_key_exists('usersId', $activityData) && $activityType->getUsersVisible() > 0) {
foreach ($activityData['usersId'] as $userId) { foreach ($activityData['usersId'] as $userId) {
$user = $this->userRepository->find($userId); $user = $this->userRepository->find($userId);
if (null !== $user) { if (null !== $user) {
$entity->addUser($user); $entity->addUser($user);
} }

View File

@ -309,50 +309,6 @@ class CalendarController extends AbstractController
]); ]);
} }
/**
* @Route("/{_locale}/calendar/calendar/{id}/to-activity", name="chill_calendar_calendar_to_activity")
*/
public function toActivity(Request $request, Calendar $calendar): RedirectResponse
{
$personsId = array_map(
static fn (Person $p): int => $p->getId(),
$calendar->getPersons()->toArray()
);
$professionalsId = array_map(
static fn (ThirdParty $thirdParty): ?int => $thirdParty->getId(),
$calendar->getProfessionals()->toArray()
);
$usersId = array_map(
static fn (User $user): ?int => $user->getId(),
array_merge($calendar->getUsers()->toArray(), [$calendar->getMainUser()])
);
$durationTime = $calendar->getEndDate()->diff($calendar->getStartDate());
$durationTimeInMinutes = $durationTime->days * 1440 + $durationTime->h * 60 + $durationTime->i;
$activityData = [
'calendarId' => $calendar->getId(),
'personsId' => $personsId,
'professionalsId' => $professionalsId,
'usersId' => $usersId,
'date' => $calendar->getStartDate()->format('Y-m-d'),
'durationTime' => $durationTimeInMinutes,
'location' => $calendar->getLocation() ? $calendar->getLocation()->getId() : null,
'comment' => $calendar->getComment()->getComment(),
];
return $this->redirectToRoute(
'chill_activity_activity_new',
[
'accompanying_period_id' => $calendar->getAccompanyingPeriod()->getId(),
'activityData' => $activityData,
'returnPath' => $request->query->get('returnPath', null),
]
);
}
/** /**
* Show a calendar item. * Show a calendar item.
* *
@ -424,6 +380,50 @@ class CalendarController extends AbstractController
]); ]);
} }
/**
* @Route("/{_locale}/calendar/calendar/{id}/to-activity", name="chill_calendar_calendar_to_activity")
*/
public function toActivity(Request $request, Calendar $calendar): RedirectResponse
{
$personsId = array_map(
static fn (Person $p): int => $p->getId(),
$calendar->getPersons()->toArray()
);
$professionalsId = array_map(
static fn (ThirdParty $thirdParty): ?int => $thirdParty->getId(),
$calendar->getProfessionals()->toArray()
);
$usersId = array_map(
static fn (User $user): ?int => $user->getId(),
array_merge($calendar->getUsers()->toArray(), [$calendar->getMainUser()])
);
$durationTime = $calendar->getEndDate()->diff($calendar->getStartDate());
$durationTimeInMinutes = $durationTime->days * 1440 + $durationTime->h * 60 + $durationTime->i;
$activityData = [
'calendarId' => $calendar->getId(),
'personsId' => $personsId,
'professionalsId' => $professionalsId,
'usersId' => $usersId,
'date' => $calendar->getStartDate()->format('Y-m-d'),
'durationTime' => $durationTimeInMinutes,
'location' => $calendar->getLocation() ? $calendar->getLocation()->getId() : null,
'comment' => $calendar->getComment()->getComment(),
];
return $this->redirectToRoute(
'chill_activity_activity_new',
[
'accompanying_period_id' => $calendar->getAccompanyingPeriod()->getId(),
'activityData' => $activityData,
'returnPath' => $request->query->get('returnPath', null),
]
);
}
private function buildListFilterOrder(): FilterOrderHelper private function buildListFilterOrder(): FilterOrderHelper
{ {
$filterOrder = $this->filterOrderHelperFactory->create(self::class); $filterOrder = $this->filterOrderHelperFactory->create(self::class);

View File

@ -1,5 +1,14 @@
<?php <?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\CalendarBundle\Messenger\Handler; namespace Chill\CalendarBundle\Messenger\Handler;
use Chill\CalendarBundle\Messenger\Message\CalendarRemovedMessage; use Chill\CalendarBundle\Messenger\Message\CalendarRemovedMessage;
@ -9,21 +18,18 @@ use Chill\MainBundle\Repository\UserRepositoryInterface;
use Symfony\Component\Messenger\Handler\MessageHandlerInterface; use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
/** /**
* Handle the deletion of calendar * Handle the deletion of calendar.
* *
* @AsMessageHandler * @AsMessageHandler
*/ */
class CalendarRemoveHandler implements MessageHandlerInterface class CalendarRemoveHandler implements MessageHandlerInterface
{ {
private RemoteCalendarConnectorInterface $remoteCalendarConnector;
private CalendarRangeRepository $calendarRangeRepository; private CalendarRangeRepository $calendarRangeRepository;
private RemoteCalendarConnectorInterface $remoteCalendarConnector;
private UserRepositoryInterface $userRepository; private UserRepositoryInterface $userRepository;
/**
* @param RemoteCalendarConnectorInterface $remoteCalendarConnector
* @param CalendarRangeRepository $calendarRangeRepository
* @param UserRepositoryInterface $userRepository
*/
public function __construct(RemoteCalendarConnectorInterface $remoteCalendarConnector, CalendarRangeRepository $calendarRangeRepository, UserRepositoryInterface $userRepository) public function __construct(RemoteCalendarConnectorInterface $remoteCalendarConnector, CalendarRangeRepository $calendarRangeRepository, UserRepositoryInterface $userRepository)
{ {
$this->remoteCalendarConnector = $remoteCalendarConnector; $this->remoteCalendarConnector = $remoteCalendarConnector;

View File

@ -16,6 +16,8 @@ use Chill\MainBundle\Entity\User;
class CalendarRemovedMessage class CalendarRemovedMessage
{ {
private ?int $associatedCalendarRangeId = null;
private ?int $byUserId = null; private ?int $byUserId = null;
private int $calendarUserId; private int $calendarUserId;
@ -24,8 +26,6 @@ class CalendarRemovedMessage
private string $remoteId; private string $remoteId;
private ?int $associatedCalendarRangeId = null;
public function __construct(Calendar $calendar, ?User $byUser) public function __construct(Calendar $calendar, ?User $byUser)
{ {
$this->remoteId = $calendar->getRemoteId(); $this->remoteId = $calendar->getRemoteId();
@ -41,6 +41,11 @@ class CalendarRemovedMessage
} }
} }
public function getAssociatedCalendarRangeId(): ?int
{
return $this->associatedCalendarRangeId;
}
public function getByUserId(): ?int public function getByUserId(): ?int
{ {
return $this->byUserId; return $this->byUserId;
@ -60,14 +65,4 @@ class CalendarRemovedMessage
{ {
return $this->remoteId; return $this->remoteId;
} }
/**
* @return int|null
*/
public function getAssociatedCalendarRangeId(): ?int
{
return $this->associatedCalendarRangeId;
}
} }

View File

@ -149,7 +149,6 @@ class MSGraphRemoteCalendarConnector implements RemoteCalendarConnectorInterface
} }
} }
public function removeCalendarRange(string $remoteId, array $remoteAttributes, User $user): void public function removeCalendarRange(string $remoteId, array $remoteAttributes, User $user): void
{ {
if ('' === $remoteId) { if ('' === $remoteId) {

View File

@ -40,7 +40,6 @@ class NullRemoteCalendarConnector implements RemoteCalendarConnectorInterface
{ {
} }
public function removeCalendarRange(string $remoteId, array $remoteAttributes, User $user): void public function removeCalendarRange(string $remoteId, array $remoteAttributes, User $user): void
{ {
} }

View File

@ -39,10 +39,10 @@ interface RemoteCalendarConnectorInterface
*/ */
public function listEventsForUser(User $user, DateTimeImmutable $startDate, DateTimeImmutable $endDate): array; public function listEventsForUser(User $user, DateTimeImmutable $startDate, DateTimeImmutable $endDate): array;
public function removeCalendarRange(string $remoteId, array $remoteAttributes, User $user): void;
public function removeCalendar(string $remoteId, array $remoteAttributes, User $user, ?CalendarRange $associatedCalendarRange = null): void; public function removeCalendar(string $remoteId, array $remoteAttributes, User $user, ?CalendarRange $associatedCalendarRange = null): void;
public function removeCalendarRange(string $remoteId, array $remoteAttributes, User $user): void;
/** /**
* @param array<array{inviteId: int, userId: int, userEmail: int, userLabel: string}> $oldInvites * @param array<array{inviteId: int, userId: int, userEmail: int, userLabel: string}> $oldInvites
*/ */