Completed
Push — develop ( 62651e...ddc457 )
by
unknown
09:17
created

Orders::findByJobId()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
/**
3
 * YAWIK
4
 *
5
 * @filesource
6
 * @license MIT
7
 * @copyright  2013 - 2016 Cross Solution <http://cross-solution.de>
8
 */
9
  
10
/** */
11
namespace Orders\Repository;
12
13
use Core\Repository\AbstractRepository;
14
use Orders\Entity\OrderInterface;
15
use Orders\Entity\OrderNumberCounter;
16
17
/**
18
 * ${CARET}
19
 * 
20
 * @author Mathias Gelhausen <[email protected]>
21
 * @todo write test 
22
 */
23
class Orders extends AbstractRepository
24
{
25
    public function createJobOrder(array $data=[])
26
    {
27
        $data['type'] = OrderInterface::TYPE_JOB;
28
29
        return $this->create($data);
30
    }
31
32
    public function create(array $data=[], $counterName = null, $counterFormat = null)
33
    {
34
        if (isset($data['counter'])) {
35
            $counterName = $data['counter'];
36
            unset($data['counter']);
37
        }
38
        if (null === $counterName) {
39
            $counterName = date('Y');
40
        }
41
42
        $counter = $this->dm->createQueryBuilder('\Orders\Entity\OrderNumberCounter')
43
                            ->findAndUpdate()
44
                            ->upsert(true)->returnNew(true)
45
                            ->field('name')->equals($counterName)
46
                            ->field('name')->set($counterName)
47
                            ->field('count')->inc(1)
48
                            ->getQuery()->execute();
49
50
        $data['number'] = $counter->format();
51
52
        return parent::create($data);
53
    }
54
55
    public function findByJobId($jobId)
56
    {
57
        $entity = $this->findOneBy(['entity.entity.$ref' => 'jobs', 'entity.entity.$id' => new \MongoId($jobId)]);
58
        return $entity;
59
    }
60
}