ApiController::labelAction()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 22
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
rs 9.2
c 0
b 0
f 0
cc 3
eloc 11
nc 3
nop 0
1
<?php
2
3
/**
4
 *
5
 *
6
 * @category Mygento
7
 * @package Mygento_Yandexdelivery
8
 * @copyright 2017 NKS LLC. (http://www.mygento.ru)
9
 * @license GPLv2
10
 */
11
class Mygento_Yandexdelivery_Adminhtml_Yandexdelivery_ApiController extends Mage_Adminhtml_Controller_Action
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
12
{
13
14
    public function sendAction()
15
    {
16
17
        if (!$this->getRequest()->isPost()) {
18
            Mage::getSingleton('adminhtml/session')->addError('Sending error');
19
            return $this->_redirectReferer();
20
        }
21
22
        $keys = ['orderid', 'type', 'warehouse', 'sender', 'requisite', 'date', 'street', 'house'];
23
24
        foreach ($keys as $key) {
25
            $tmp = Mage::app()->getRequest()->getParam($key);
26
            if (!$tmp) {
27
                $return = 'No ' . $key . ' in POST';
28
                return $this->getResponse()->setBody($return);
29
            }
30
        }
31
32
        $result = Mage::getModel('yandexdelivery/carrier')->createOrder(
33
            Mage::app()->getRequest()->getParam('orderid'),
34
            Mage::app()->getRequest()->getParam('warehouse'),
35
            Mage::app()->getRequest()->getParam('sender'),
36
            Mage::app()->getRequest()->getParam('requisite'),
37
            Mage::app()->getRequest()->getParam('date'),
38
            Mage::app()->getRequest()->getParam('street'),
39
            Mage::app()->getRequest()->getParam('house')
40
        );
41
42
        if ($result->status == "ok") {
43
            Mage::getSingleton('adminhtml/session')->addSuccess(
44
                Mage::helper('yandexdelivery')->__('Order template has been successfully created')
45
            );
46
47
            $shipment = Mage::getModel('yandexdelivery/shipment');
48
49
            $data = [
50
                'yd_id' => $result->data->order->id,
51
                'order_id' => Mage::app()->getRequest()->getParam('orderid'),
52
                'sender_id' => Mage::app()->getRequest()->getParam('sender'),
53
                'requisite_id' => Mage::app()->getRequest()->getParam('requisite'),
54
                'warehouse_id' => Mage::app()->getRequest()->getParam('warehouse'),
55
                'type' => Mage::app()->getRequest()->getParam('type')
56
            ];
57
            $shipment->setData($data);
58
            $shipment->save();
59
60
            //will auto-approve sended earlier order template
61
            $this->confirmOrder($result->data->order->id, Mage::app()->getRequest()->getParam('sender'), Mage::app()->getRequest()->getParam('type'));
62
            return $this->_redirectReferer();
63
        }
64
        $msg = '';
65
        foreach ($result->data->errors as $error) {
66
            $msg .= $error . '. ';
67
        }
68
        Mage::getSingleton('adminhtml/session')->addError($msg);
69
        $this->_redirectReferer();
70
    }
71
72
    public function deleteAction()
73
    {
74
        $order_id = Mage::app()->getRequest()->getParam('orderid');
75
76
        if (!$order_id) {
77
            $return = 'no order id';
78
            return $this->getResponse()->setBody($return);
79
        }
80
81
        $ydId = Mage::getModel('yandexdelivery/carrier')->getYdId($order_id);
82
        $result = Mage::getModel('yandexdelivery/carrier')->deleteOrder($ydId);
83
84
        if ($result->status == "ok") {
85
            $message = ['status' => "ok"];
86
        } else {
87
            $errors = (array) $result->data->errors;
88
            $error_text = '';
89
            foreach ($errors as $key => $value) {
90
                $error_text .= $key . " - " . $value . "\n";
91
            }
92
            $message = ['error' => true, 'message' => $error_text];
93
        }
94
        $this->getResponse()->setBody(json_encode($message));
95
    }
96
97
    public function confirmAction()
98
    {
99
        $orderId = Mage::app()->getRequest()->getParam('orderid');
100
101
        if (!$orderId) {
102
            $return = 'no order id';
103
            $this->getResponse()->setBody($return);
104
            return;
105
        }
106
107
        $yandexShipment = Mage::getModel('yandexdelivery/carrier')->getShipment($orderId);
108
109
        $message = $this->confirmOrder($yandexShipment->getYdId(), $yandexShipment->getSenderId(), $yandexShipment->getType(), false);
110
111
        $this->getResponse()->setBody(json_encode($message));
112
    }
113
114
    private function confirmOrder($ydId, $senderId, $type, $showAdmin = true)
115
    {
116
117
        $result = Mage::getModel('yandexdelivery/carrier')->confirmOrders($ydId, $senderId, $type);
118
119
        if (!isset($result->data->result) || count($result->data->result->error) != 0 || count($result->data->errors)) {
120
            $msg = Mage::helper('yandexdelivery')->__('Order was not confirmed');
121
122
            if (isset($result->data->errors)) {
123
                $msg .= ':';
124
                foreach ((array) $result->data->errors as $error) {
125
                    $msg .= ' ' . $error;
126
                }
127
            }
128
            if ($showAdmin) {
129
                Mage::getSingleton('adminhtml/session')->addError($msg);
130
                return;
131
            }
132
            return ['error' => true, 'message' => $msg];
133
        }
134
        $msg = Mage::helper('yandexdelivery')->__('Order template has been successfully confirmed');
135
        if ($showAdmin) {
136
            Mage::getSingleton('adminhtml/session')->addSuccess($msg);
137
            return;
138
        }
139
        return ['status' => $msg];
140
    }
141
142
    protected function _isAllowed()
143
    {
144
        return Mage::getSingleton('admin/session')->isAllowed('catalog/yandexdelivery/api');
145
    }
146
147
    public function labelAction()
148
    {
149
        $order_id = Mage::app()->getRequest()->getParam('orderid');
150
151
        if (!$order_id) {
152
            $return = 'no order id';
153
            return $this->getResponse()->setBody($return);
154
        }
155
156
        $ydId = Mage::getModel('yandexdelivery/carrier')->getYdId($order_id);
157
158
        $result = Mage::getModel('yandexdelivery/carrier')->getSenderOrderLabel($ydId);
159
160
        if ($result->status == "ok") {
161
            // @codingStandardsIgnoreStart
162
            $data = base64_decode($result->data);
163
            // @codingStandardsIgnoreEnd
164
165
            return $this->_prepareDownloadResponse('yandexdelivery_' . $ydId . '.pdf', $data, 'application/pdf');
166
        }
167
        $this->getResponse()->setBody(Mage::helper('yandexdelivery')->__('Error getting order PDF'));
168
    }
169
170
    public function updatetion()
171
    {
172
        $orderId = Mage::app()->getRequest()->getParam('orderid');
173
174
        if (!$orderId) {
175
            $return = 'no order id';
176
            $this->getResponse()->setBody($return);
177
            return;
178
        }
179
180
        $yandexShipment = Mage::getModel('yandexdelivery/carrier')->getShipment($orderId);
0 ignored issues
show
Unused Code introduced by
$yandexShipment is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
181
182
        Mage::getModel('yandexdelivery/carrier')->updateOrder($orderId, $warehouseId, $senderId, $requisiteId);
0 ignored issues
show
Bug introduced by
The variable $warehouseId does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $senderId does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $requisiteId does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
183
    }
184
}
185