diff --git a/common/models/Customers.php b/common/models/Customers.php index 32c1176..558ce2a 100755 --- a/common/models/Customers.php +++ b/common/models/Customers.php @@ -21,6 +21,8 @@ use yii\behaviors\TimestampBehavior; */ class Customers extends User { + + const SCENARIO_ORDER = 'order'; /** * @inheritdoc */ @@ -42,6 +44,16 @@ class Customers extends User // [['email'], 'unique'], // [['password_reset_token'], 'unique'], // [['phone'], 'unique'], + [ + ['username', 'auth_key', 'password_hash', 'email', 'phone'], + 'required', + 'on'=>[Customers::SCENARIO_DEFAULT] + ], + [ + ['username', 'auth_key', 'password_hash', 'email', 'phone'], + 'safe', + 'on'=>[Customers::SCENARIO_ORDER] + ], ]; } diff --git a/common/models/Orders.php b/common/models/Orders.php index 47d8fa4..59764fa 100755 --- a/common/models/Orders.php +++ b/common/models/Orders.php @@ -96,6 +96,28 @@ class Orders extends \yii\db\ActiveRecord ]; } + + public function afterSave($insert, $changedAttributes) + { + parent::afterSave($insert, $changedAttributes); + if($this->isNewRecord){ + $customer = Customers::find()->where(['phone'=> $this->phone])->one(); + if($customer instanceof Customers){ + $this->customer_id = $customer->id; + $this->save(); + } else { + $customer = new Customers(['scenario' => Customers::SCENARIO_ORDER]); + $customer->email = $this->email; + $customer->phone = $this->phone; + $customer->username = $this->name; + $this->customer_id = $customer->id; + $this->save(); + } + } + + + } + /** * @return \yii\db\ActiveQuery */ diff --git a/common/models/RemoteOrders.php b/common/models/RemoteOrders.php new file mode 100644 index 0000000..c998a33 --- /dev/null +++ b/common/models/RemoteOrders.php @@ -0,0 +1,60 @@ + 20], + ]; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'ID_Client' => 'Id Client', + 'Price_old' => 'Price Old', + 'ID_Product' => 'Id Product', + 'Quantity' => 'Quantity', + 'Rate' => 'Rate', + 'Sum' => 'Sum', + 'Payment_type' => 'Payment Type', + 'ID' => 'ID', + 'Date' => 'Date', + ]; + } +} diff --git a/common/widgets/BasketHead.php b/common/widgets/BasketHead.php index c0dcac6..181d695 100755 --- a/common/widgets/BasketHead.php +++ b/common/widgets/BasketHead.php @@ -26,25 +26,12 @@ class BasketHead extends Widget $sessionData = \Yii::$app->session->get('order'); unset($sessionData['order_id']); $count = count($sessionData); - $price = 0; - if(is_array($sessionData) && !empty($sessionData)){ - $variant = ProductVariant::find()->where(['product_variant_id'=>array_keys($sessionData)])->indexBy('product_variant_id')->all(); + return $this->render('basket_head',[ + 'count' => $count + ]); - foreach ($sessionData as $k => $item) { - $sessionData[$k]['item'] = $variant[$k]; - $price += $variant[$k]->price * $sessionData[$k]['num']; - } - - - return $this->render('basket_head',[ - 'items'=>$sessionData, - 'count' => $count, - 'price' => $price - ]); - - } } } \ No newline at end of file diff --git a/frontend/controllers/OrdersController.php b/frontend/controllers/OrdersController.php index 077c462..420e60d 100755 --- a/frontend/controllers/OrdersController.php +++ b/frontend/controllers/OrdersController.php @@ -5,6 +5,7 @@ namespace frontend\controllers; use common\models\Customers; use common\models\OrderItems; use common\models\Orders; +use common\models\RemoteOrders; use common\modules\product\models\ProductVariant; use common\widgets\BasketModal; use Yii; @@ -77,7 +78,7 @@ class OrdersController extends Controller if(!empty($order_id)){ $order_model = Orders::findOne($order_id); } else{ - $order_model = new Orders; + $this->redirect(['orders/first']); } unset($sessionData['order_id']); @@ -89,6 +90,45 @@ class OrdersController extends Controller foreach ($sessionData as $k => $item) { $itemModel = OrderItems::find()->where(['order_id'=>$order_id, 'item_id'=> $variant[$k]->product_variant_id])->one(); + + $remoteItemModel = RemoteOrders::find()->where(['ID'=>$order_id, 'ID_Product'=> $variant[$k]->product_variant_id])->one(); + + + $payment = [ + '1' => 'Оплата наличными', + '2' => 'Оплата по безналичному расчету. Код ЕГРПОУ', + '3' => 'Приват 24', + '4' => 'Согласовать с менеджером', + ]; + + + + + if($remoteItemModel instanceof RemoteOrders){ + $itemModel->ID = $order_id; + $itemModel->ID_Client = $order_model->customer_id; + $itemModel->ID_Product = $variant[$k]->product_variant_id; + $itemModel->Quantity = $sessionData[$k]['num']; + $itemModel->Price_old = $variant[$k]->price; + $itemModel->Date = date("Y-m-d H:i:s"); +// $itemModel->Rate = ''; + $itemModel->Sum = $variant[$k]->price * $sessionData[$k]['num']; + $itemModel->Payment_type = $payment[$order_model->payment]; + $itemModel->save(); + } else { + $itemModel = new RemoteOrders(); + $itemModel->ID = $order_id; + $itemModel->ID_Client = $order_model->customer_id; + $itemModel->ID_Product = $variant[$k]->product_variant_id; + $itemModel->Quantity = $sessionData[$k]['num']; + $itemModel->Price_old = $variant[$k]->price; + $itemModel->Date = date("Y-m-d H:i:s"); +// $itemModel->Rate = ''; + $itemModel->Sum = $variant[$k]->price * $sessionData[$k]['num']; + $itemModel->Payment_type = $payment[$order_model->payment]; + $itemModel->save(); + } + if($itemModel instanceof OrderItems){ $itemModel->order_id = $order_id; $itemModel->item_id = $variant[$k]->product_variant_id; -- libgit2 0.21.4