Refactor form handler to update event marketing
<?
//.. Current Code
if (in_array('ROLE_ADMIN', $user->getRoles())) {
if ($submit == 'Approved') {
$this->eventMarketingHandler->approveEvent($eventMarketing);
$eventMarketing = $event->getParameter('eventMarketing');
$message = $this->translator->trans('event_marketing.approve.success', [], 'event-marketing');
} else if(($submit == 'Saved' && $eventMarketing->isApproved()) || ($submit == 'Saved' && !$eventMarketing->isPublished())) {
$this->eventMarketingHandler->mergeDraftToOriginal($eventMarketing);
$eventMarketing = $event->getParameter('eventMarketing');
$message = $this->translator->trans('event_marketing.update.success', [], 'event-marketing');
}
} else {
if ($submit == 'Saved' && !$eventMarketing->isPublished()) {
$this->eventMarketingHandler->mergeDraftToOriginal($eventMarketing);
$eventMarketing = $event->getParameter('eventMarketing');
$message = $this->translator->trans('event_marketing.update.success', [], 'event-marketing');
}
}
// Refactor
try {
if ($isApproveRequest) {
$this->eventMarketingHandler->approveEvent($event);
} else {
$this->eventMarketingHandler->mergeDraftToOrignal($event);
}
} catch (AuthenticationException $e) {
//.. update failed
}
//.. update success
class EventMarketingHandler
{
private $currentUser;
/**
* @return UserInterface
*/
protected function getCurrentUser()
{
return $this->currentUser = $this->tokenStorage->getToken()->getUser();
}
/**
* @throws AuthenticationException
*/
public function approveEvent(EventMarketing $event)
{
if (!$this->currentUser->hasRole('ROLE_ADMIN')) {
throw new AuthenticationException('You have no right to perform this action');
}
$this->eventMarketingManager->approve($event);
}
/**
* @throws AuthenticationException
*/
public function mergeDraftToOriginal(EventMarketing $event)
{
if ($event->isApproved() && !$this->currentUser->hasRole('ROLE_ADMIN')) {
throw new AuthenticationException('You have no right to perform this action');
}
$this->eventMarketingManager->mergeDraft($event);
}
}