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

LeadToOpportunityHandler::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 1 Features 0
Metric Value
dl 0
loc 11
rs 9.4285
c 4
b 1
f 0
cc 1
eloc 9
nc 1
nop 4
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