Commit a4e099fb7454fb69d6885e8992e5ebd3fe44f487
1 parent
040df559
16.05.16 ann fotorama gallery
Showing
5 changed files
with
138 additions
and
17 deletions
Show diff stats
common/models/Customers.php
| ... | ... | @@ -21,6 +21,8 @@ use yii\behaviors\TimestampBehavior; |
| 21 | 21 | */ |
| 22 | 22 | class Customers extends User |
| 23 | 23 | { |
| 24 | + | |
| 25 | + const SCENARIO_ORDER = 'order'; | |
| 24 | 26 | /** |
| 25 | 27 | * @inheritdoc |
| 26 | 28 | */ |
| ... | ... | @@ -42,6 +44,16 @@ class Customers extends User |
| 42 | 44 | // [['email'], 'unique'], |
| 43 | 45 | // [['password_reset_token'], 'unique'], |
| 44 | 46 | // [['phone'], 'unique'], |
| 47 | + [ | |
| 48 | + ['username', 'auth_key', 'password_hash', 'email', 'phone'], | |
| 49 | + 'required', | |
| 50 | + 'on'=>[Customers::SCENARIO_DEFAULT] | |
| 51 | + ], | |
| 52 | + [ | |
| 53 | + ['username', 'auth_key', 'password_hash', 'email', 'phone'], | |
| 54 | + 'safe', | |
| 55 | + 'on'=>[Customers::SCENARIO_ORDER] | |
| 56 | + ], | |
| 45 | 57 | ]; |
| 46 | 58 | } |
| 47 | 59 | ... | ... |
common/models/Orders.php
| ... | ... | @@ -96,6 +96,28 @@ class Orders extends \yii\db\ActiveRecord |
| 96 | 96 | ]; |
| 97 | 97 | } |
| 98 | 98 | |
| 99 | + | |
| 100 | + public function afterSave($insert, $changedAttributes) | |
| 101 | + { | |
| 102 | + parent::afterSave($insert, $changedAttributes); | |
| 103 | + if($this->isNewRecord){ | |
| 104 | + $customer = Customers::find()->where(['phone'=> $this->phone])->one(); | |
| 105 | + if($customer instanceof Customers){ | |
| 106 | + $this->customer_id = $customer->id; | |
| 107 | + $this->save(); | |
| 108 | + } else { | |
| 109 | + $customer = new Customers(['scenario' => Customers::SCENARIO_ORDER]); | |
| 110 | + $customer->email = $this->email; | |
| 111 | + $customer->phone = $this->phone; | |
| 112 | + $customer->username = $this->name; | |
| 113 | + $this->customer_id = $customer->id; | |
| 114 | + $this->save(); | |
| 115 | + } | |
| 116 | + } | |
| 117 | + | |
| 118 | + | |
| 119 | + } | |
| 120 | + | |
| 99 | 121 | /** |
| 100 | 122 | * @return \yii\db\ActiveQuery |
| 101 | 123 | */ | ... | ... |
| 1 | +<?php | |
| 2 | + | |
| 3 | +namespace common\models; | |
| 4 | + | |
| 5 | +use Yii; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * This is the model class for table "remote_orders". | |
| 9 | + * | |
| 10 | + * @property string $ID_Client | |
| 11 | + * @property string $Price_old | |
| 12 | + * @property string $ID_Product | |
| 13 | + * @property string $Quantity | |
| 14 | + * @property string $Rate | |
| 15 | + * @property string $Sum | |
| 16 | + * @property integer $Payment_type | |
| 17 | + * @property string $ID | |
| 18 | + * @property string $Date | |
| 19 | + */ | |
| 20 | +class RemoteOrders extends \yii\db\ActiveRecord | |
| 21 | +{ | |
| 22 | + /** | |
| 23 | + * @inheritdoc | |
| 24 | + */ | |
| 25 | + public static function tableName() | |
| 26 | + { | |
| 27 | + return 'remote_orders'; | |
| 28 | + } | |
| 29 | + | |
| 30 | + /** | |
| 31 | + * @inheritdoc | |
| 32 | + */ | |
| 33 | + public function rules() | |
| 34 | + { | |
| 35 | + return [ | |
| 36 | + [['Price_old', 'Quantity', 'Rate', 'Sum'], 'number'], | |
| 37 | + [['Payment_type'], 'integer'], | |
| 38 | + [['Date'], 'safe'], | |
| 39 | + [['ID_Client', 'ID_Product', 'ID'], 'string', 'max' => 20], | |
| 40 | + ]; | |
| 41 | + } | |
| 42 | + | |
| 43 | + /** | |
| 44 | + * @inheritdoc | |
| 45 | + */ | |
| 46 | + public function attributeLabels() | |
| 47 | + { | |
| 48 | + return [ | |
| 49 | + 'ID_Client' => 'Id Client', | |
| 50 | + 'Price_old' => 'Price Old', | |
| 51 | + 'ID_Product' => 'Id Product', | |
| 52 | + 'Quantity' => 'Quantity', | |
| 53 | + 'Rate' => 'Rate', | |
| 54 | + 'Sum' => 'Sum', | |
| 55 | + 'Payment_type' => 'Payment Type', | |
| 56 | + 'ID' => 'ID', | |
| 57 | + 'Date' => 'Date', | |
| 58 | + ]; | |
| 59 | + } | |
| 60 | +} | ... | ... |
common/widgets/BasketHead.php
| ... | ... | @@ -26,25 +26,12 @@ class BasketHead extends Widget |
| 26 | 26 | $sessionData = \Yii::$app->session->get('order'); |
| 27 | 27 | unset($sessionData['order_id']); |
| 28 | 28 | $count = count($sessionData); |
| 29 | - $price = 0; | |
| 30 | - if(is_array($sessionData) && !empty($sessionData)){ | |
| 31 | 29 | |
| 32 | - $variant = ProductVariant::find()->where(['product_variant_id'=>array_keys($sessionData)])->indexBy('product_variant_id')->all(); | |
| 30 | + return $this->render('basket_head',[ | |
| 31 | + 'count' => $count | |
| 32 | + ]); | |
| 33 | 33 | |
| 34 | 34 | |
| 35 | - foreach ($sessionData as $k => $item) { | |
| 36 | - $sessionData[$k]['item'] = $variant[$k]; | |
| 37 | - $price += $variant[$k]->price * $sessionData[$k]['num']; | |
| 38 | - } | |
| 39 | - | |
| 40 | - | |
| 41 | - return $this->render('basket_head',[ | |
| 42 | - 'items'=>$sessionData, | |
| 43 | - 'count' => $count, | |
| 44 | - 'price' => $price | |
| 45 | - ]); | |
| 46 | - | |
| 47 | - } | |
| 48 | 35 | |
| 49 | 36 | } |
| 50 | 37 | } |
| 51 | 38 | \ No newline at end of file | ... | ... |
frontend/controllers/OrdersController.php
| ... | ... | @@ -5,6 +5,7 @@ namespace frontend\controllers; |
| 5 | 5 | use common\models\Customers; |
| 6 | 6 | use common\models\OrderItems; |
| 7 | 7 | use common\models\Orders; |
| 8 | +use common\models\RemoteOrders; | |
| 8 | 9 | use common\modules\product\models\ProductVariant; |
| 9 | 10 | use common\widgets\BasketModal; |
| 10 | 11 | use Yii; |
| ... | ... | @@ -77,7 +78,7 @@ class OrdersController extends Controller |
| 77 | 78 | if(!empty($order_id)){ |
| 78 | 79 | $order_model = Orders::findOne($order_id); |
| 79 | 80 | } else{ |
| 80 | - $order_model = new Orders; | |
| 81 | + $this->redirect(['orders/first']); | |
| 81 | 82 | } |
| 82 | 83 | |
| 83 | 84 | unset($sessionData['order_id']); |
| ... | ... | @@ -89,6 +90,45 @@ class OrdersController extends Controller |
| 89 | 90 | |
| 90 | 91 | foreach ($sessionData as $k => $item) { |
| 91 | 92 | $itemModel = OrderItems::find()->where(['order_id'=>$order_id, 'item_id'=> $variant[$k]->product_variant_id])->one(); |
| 93 | + | |
| 94 | + $remoteItemModel = RemoteOrders::find()->where(['ID'=>$order_id, 'ID_Product'=> $variant[$k]->product_variant_id])->one(); | |
| 95 | + | |
| 96 | + | |
| 97 | + $payment = [ | |
| 98 | + '1' => 'Оплата наличными', | |
| 99 | + '2' => 'Оплата по безналичному расчету. Код ЕГРПОУ', | |
| 100 | + '3' => 'Приват 24', | |
| 101 | + '4' => 'Согласовать с менеджером', | |
| 102 | + ]; | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + if($remoteItemModel instanceof RemoteOrders){ | |
| 108 | + $itemModel->ID = $order_id; | |
| 109 | + $itemModel->ID_Client = $order_model->customer_id; | |
| 110 | + $itemModel->ID_Product = $variant[$k]->product_variant_id; | |
| 111 | + $itemModel->Quantity = $sessionData[$k]['num']; | |
| 112 | + $itemModel->Price_old = $variant[$k]->price; | |
| 113 | + $itemModel->Date = date("Y-m-d H:i:s"); | |
| 114 | +// $itemModel->Rate = ''; | |
| 115 | + $itemModel->Sum = $variant[$k]->price * $sessionData[$k]['num']; | |
| 116 | + $itemModel->Payment_type = $payment[$order_model->payment]; | |
| 117 | + $itemModel->save(); | |
| 118 | + } else { | |
| 119 | + $itemModel = new RemoteOrders(); | |
| 120 | + $itemModel->ID = $order_id; | |
| 121 | + $itemModel->ID_Client = $order_model->customer_id; | |
| 122 | + $itemModel->ID_Product = $variant[$k]->product_variant_id; | |
| 123 | + $itemModel->Quantity = $sessionData[$k]['num']; | |
| 124 | + $itemModel->Price_old = $variant[$k]->price; | |
| 125 | + $itemModel->Date = date("Y-m-d H:i:s"); | |
| 126 | +// $itemModel->Rate = ''; | |
| 127 | + $itemModel->Sum = $variant[$k]->price * $sessionData[$k]['num']; | |
| 128 | + $itemModel->Payment_type = $payment[$order_model->payment]; | |
| 129 | + $itemModel->save(); | |
| 130 | + } | |
| 131 | + | |
| 92 | 132 | if($itemModel instanceof OrderItems){ |
| 93 | 133 | $itemModel->order_id = $order_id; |
| 94 | 134 | $itemModel->item_id = $variant[$k]->product_variant_id; | ... | ... |