Completed
Push — master ( 535b09...0667cb )
by
unknown
56:23
created

LeadToOpportunityHandler   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 5

Importance

Changes 8
Bugs 1 Features 2
Metric Value
wmc 6
lcom 2
cbo 5
dl 0
loc 59
rs 10
c 8
b 1
f 2

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 1
A process() 0 8 3
A create() 0 11 1
A onSuccess() 0 4 1
1
<?php
2
3
namespace OroCRM\Bundle\SalesBundle\Form\Handler;
4
5
use Doctrine\Common\Persistence\ObjectManager;
6
7
use Oro\Bundle\FormBundle\Model\UpdateHandler;
8
9
use OroCRM\Bundle\SalesBundle\Entity\Opportunity;
10
use OroCRM\Bundle\SalesBundle\Entity\Lead;
11
use OroCRM\Bundle\ChannelBundle\Provider\RequestChannelProvider;
12
use OroCRM\Bundle\SalesBundle\Provider\LeadToOpportunityProvider;
13
14
use Symfony\Component\Form\FormInterface;
15
use Symfony\Component\HttpFoundation\Request;
16
17
class LeadToOpportunityHandler extends OpportunityHandler
18
{
19
    /** @var LeadToOpportunityProvider */
20
    protected $leadToOpportunityProvider;
21
22
    /** @var callable */
23
    protected $errorMessageCallback;
24
25
    public function __construct(
26
        FormInterface $form,
27
        Request $request,
28
        ObjectManager $manager,
29
        RequestChannelProvider $requestChannelProvider,
30
        LeadToOpportunityProvider $leadToOpportunityProvider
31
    ) {
32
        $this->leadToOpportunityProvider = $leadToOpportunityProvider;
33
        parent::__construct($form, $request, $manager, $requestChannelProvider);
34
    }
35
36
    /**
37
     * @inheritdoc
38
     */
39
    public function process(Opportunity $entity)
40
    {
41
        $processResult = parent::process($entity);
42
        if ($processResult && in_array($this->request->getMethod(), array('POST', 'PUT'))) {
43
            return $this->leadToOpportunityProvider->saveOpportunity($entity, $this->errorMessageCallback);
44
        }
45
        return $processResult;
46
    }
47
48
    /**
49
     * @param Lead          $lead
50
     * @param UpdateHandler $handler
51
     * @param string        $saveMessage
52
     * @param callable      $errorMessageCallback
53
     *
54
     * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
55
     */
56
    public function create(
57
        Lead $lead,
58
        UpdateHandler $handler,
59
        $saveMessage,
60
        callable $errorMessageCallback
61
    ) {
62
        $this->errorMessageCallback = $errorMessageCallback;
63
        $isGetRequest = $this->request->getMethod() === 'GET';
64
        $opportunity = $this->leadToOpportunityProvider->prepareOpportunityForForm($lead, $isGetRequest);
65
        return $handler->update($opportunity, $this->form, $saveMessage, $this);
66
    }
67
68
    /**
69
     * @param Opportunity $entity
70
     */
71
    protected function onSuccess(Opportunity $entity)
72
    {
73
        $this->manager->persist($entity);
74
    }
75
}
76