/** * @return \yii\db\ActiveQuery */ public function getGroupSalesLines() { return $this->hasMany(GroupSalesLine::className(), ['kelompok_id' => 'id']); }
/** * Displays a single SalesActivity model. * @param integer $uid instead user_id * @return mixed */ public function actionViewTimeLine(integer $uid = null, $customer = null, $start = null, $year = null, $group = null) { if (!$year) { $year = date('Y'); } $salesActivityForm = new SalesActivityForm(); $charts = ['pie' => [], 'line' => []]; #prepared for all chart $now = true; $plan = SalesActivityPlan::find(); $pieType = 'customer'; $salesName = "All Sales Man"; $salesActivityForm->sales = $uid; $salesActivityForm->customer = $customer; $salesActivityForm->date_begin = $start; if ($group) { // jika ada group id // cari user nya $userIds = \app\models\GroupSalesLine::find()->select('name')->where(['kelompok_id' => $group])->column(); // var_dump($userIds); } // untuk filter dropdown by year if ($year) { $plan->andWhere('EXTRACT(YEAR FROM sales_activity_plan.the_date) = ' . $year); } // untuk filter dropdown by group $connection = Yii::$app->db; $queryGroup = <<<query SELECT DISTINCT(id), initcap(name) AS name FROM group_sales WHERE is_main_group = true AND parent_id IS NULL ORDER BY name ASC query; $modelGroup = $connection->createCommand($queryGroup)->queryAll(); // untuk filter dari form input if ($salesActivityForm->load(Yii::$app->request->get()) && $salesActivityForm->validate()) { /*var_dump($salesActivityForm->date_begin); die();*/ $uid = $salesActivityForm->sales; if ($uid) { // die(); $salesName = ResUsers::findOne($uid)->partner->name; $plan->where('sales_activity_plan.user_id = :uid')->addParams([':uid' => $uid]); $pieType = 'customer'; } if ($salesActivityForm->customer) { $plan->andWhere('(sales_activity_plan.partner_id = :partner OR sales_activity_plan.actual_partner_id = :partner)')->addParams([':partner' => $salesActivityForm->customer]); $pieType = 'sales'; $custName = ResPartner::findOne($salesActivityForm->customer)->name; } $start = $salesActivityForm->date_begin; } else { $msg = []; foreach ($salesActivityForm->errors as $error) { foreach ($error as $err) { $msg[] = $err; } } if ($msg) { Yii::$app->session->setFlash('danger', implode(' and ', $msg)); } } // filter user berdasarkan group dropdown if ($group) { $plan->andWhere(['user_id' => $userIds]); } // if defined start and end date if ($start) { $now = false; } if ($now) { $plan->andWhere('sales_activity_plan.the_date <= :now')->addParams([':now' => date('Y-m-d')]); } // echo $plan->createCommand()->sql; // var_dump($plan->with(['partner','user','user.partner','actualPartner'])->orderBy('year_p DESC, week_no DESC, dow DESC, user_id, daylight, not_planned_actual')->asArray()->all()); // die(); $dataProvider = new ArrayDataProvider(['allModels' => $plan->with(['partner', 'user', 'user.partner', 'actualPartner'])->orderBy('year_p DESC, week_no DESC, dow DESC, user_id, daylight, not_planned_actual')->asArray()->all()]); $pies = []; // var_dump($pieType); if ($pieType && $pieType == 'customer') { $chartData = $this->getCustomerActivityCompositionByUser($uid); // var_dump($chartData); $series = $chartData['series']; $pies[] = ['title' => 'Customer Visit Activity By ' . $salesName, 'series' => $chartData['series'], 'drillDown' => $chartData['drillDown'], 'drillDownTitle' => 'Customer Visit Activity']; } elseif ($pieType && ($pieType = 'sales')) { $series = $this->getCustomerActivityCompositionByCustomer($salesActivityForm->customer); $pies[] = ['title' => 'Relationship Activities On ' . $custName, 'series' => $series, 'drillDownTitle' => 'User Visit Activity On ' . ResPartner::findOne($salesActivityForm->customer)->name, 'drillDown' => []]; // var_dump($series); } else { $pieSeries = false; } $charts['pie'] = $pies; // var_dump($charts); return $this->render('viewTimeLine', ['dataProvider' => $dataProvider, 'salesActivityForm' => $salesActivityForm, 'series' => $series, 'charts' => $charts, 'year' => $year, 'group_active' => $group, 'modelGroup' => $modelGroup]); }