Completed
Push — master ( 6b46ba...13a39e )
by Tim
06:32 queued 04:28
created

QuantityAndStockStatusObserver::handle()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 34
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 34
ccs 0
cts 12
cp 0
rs 8.8571
c 0
b 0
f 0
cc 2
eloc 9
nc 2
nop 1
crap 6
1
<?php
2
3
/**
4
 * TechDivision\Import\Product\Observers\QuantityAndStockStatusObserver
5
 *
6
 * NOTICE OF LICENSE
7
 *
8
 * This source file is subject to the Open Software License (OSL 3.0)
9
 * that is available through the world-wide-web at this URL:
10
 * http://opensource.org/licenses/osl-3.0.php
11
 *
12
 * PHP version 5
13
 *
14
 * @author    Tim Wagner <[email protected]>
15
 * @copyright 2016 TechDivision GmbH <[email protected]>
16
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
 * @link      https://github.com/techdivision/import-product
18
 * @link      http://www.techdivision.com
19
 */
20
21
namespace TechDivision\Import\Product\Observers;
22
23
use TechDivision\Import\Product\Utils\ColumnKeys;
24
use TechDivision\Import\Product\Observers\AbstractProductImportObserver;
25
26
/**
27
 * Observer that prepares the inventory information found in the CSV file.
28
 *
29
 * @author    Tim Wagner <[email protected]>
30
 * @copyright 2016 TechDivision GmbH <[email protected]>
31
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
 * @link      https://github.com/techdivision/import-product
33
 * @link      http://www.techdivision.com
34
 */
35
class QuantityAndStockStatusObserver extends AbstractProductImportObserver
36
{
37
38
    /**
39
     * Will be invoked by the action on the events the listener has been registered for.
40
     *
41
     * @param array $row The row to handle
42
     *
43
     * @return array The modified row
44
     * @see \TechDivision\Import\Product\Observers\ImportObserverInterface::handle()
45
     */
46
    public function handle(array $row)
47
    {
48
49
        // load the header information
50
        $headers = $this->getHeaders();
51
52
        /*
53
        $qty = (float) $row[$this->headers[ColumnKeys::QTY]];
54
        $isInStock = (integer) $row[$this->headers[ColumnKeys::IS_IN_STOCK]];
55
56
        $this->getSystemLogger()->info("Found qty $qty and is_in_stock $isInStock");
57
58
        $quantityAndStockStatus = 0;
59
        if ($qty > 0 && $isInStock === 1) {
60
            $quantityAndStockStatus = 1;
61
        }
62
        */
63
64
        // try to load the appropriate key for the stock status
65
        if (isset($headers[ColumnKeys::QUANTITY_AND_STOCK_STATUS])) {
66
            $newKey = $headers[ColumnKeys::QUANTITY_AND_STOCK_STATUS];
67
        } else {
68
            $headers[ColumnKeys::QUANTITY_AND_STOCK_STATUS] = $newKey = sizeof($headers);
69
        }
70
71
        // append/replace the stock status
72
        $row[$newKey] = 1;
73
74
        // update the header information
75
        $this->setHeaders($headers);
76
77
        // return the prepared row
78
        return $row;
79
    }
80
}
81