cuonghuynh
5/25/2018 - 3:56 AM

Refactor form handler to update event marketing

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);
    }
}