/** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth'); $this->viewData['user_id'] = (int) Auth::User()->id; $this->viewData['controller_heading'] = 'Initiatives'; $this->viewData['controller_name'] = $this->controller; $this->viewData['whatisit'] = 'Initiative'; $this->viewData['plans'] = Plan::where('user_id', $this->viewData['user_id'])->where('status', 0)->orderBy('name')->lists('name', 'id'); $this->viewData['currentPlan'] = NULL; if (!empty($_GET['plan_id'])) { $this->viewData['currentPlan'] = Plan::find($_GET['plan_id']); } else { if (!empty($this->viewData['plans'])) { $this->viewData['currentPlan'] = Plan::where('user_id', $this->viewData['user_id'])->where('status', 0)->orderBy('name')->get()->first(); } } $this->viewData['dimensions'] = Dimension::leftJoin('plans', 'plans.id', '=', 'dimensions.plan_id')->where('plans.user_id', $this->viewData['user_id'])->where('dimensions.plan_id', $this->viewData['currentPlan']->id)->where('dimensions.status', 0)->orderBy('dimensions.name')->select('dimensions.*')->lists('dimensions.name', 'dimensions.id'); $this->viewData['currentDimension'] = NULL; if (!empty($_GET['dimension_id'])) { $this->viewData['currentDimension'] = Dimension::find($_GET['dimension_id']); } else { if (!empty($this->viewData['dimensions'])) { $this->viewData['currentDimension'] = Dimension::where('dimensions.plan_id', $this->viewData['currentPlan']->id)->where('dimensions.status', 0)->orderBy('dimensions.name')->get()->first(); } } $this->viewData['currentDimensionId'] = !empty($this->viewData['currentDimension']) ? $this->viewData['currentDimension']->id : ''; $this->viewData['objectives'] = Objective::leftJoin('dimensions', 'dimensions.id', '=', 'objectives.dimension_id')->leftJoin('plans', 'plans.id', '=', 'dimensions.plan_id')->where('plans.user_id', '=', $this->viewData['user_id'])->where('objectives.dimension_id', '=', $this->viewData['currentDimensionId'])->where('objectives.status', 0)->orderBy('objectives.name')->select('objectives.*')->lists('objectives.name', 'objectives.id'); }
/** * Populate graph for plans graph * * @return void */ public function populatePlansGraph() { $graph = []; $index = 0; foreach ($this->viewData['plans'] as $plan) { $graph[$index]['id'] = $plan->id; $graph[$index]['title'] = $plan->name . ' from ' . date('F, Y', strtotime($plan->starting_date)) . ' to ' . date('F, Y', strtotime($plan->ending_date)); $graph[$index]['SeriesName'] = "Average"; $dimensions = Dimension::leftJoin('plans', 'plans.id', '=', 'dimensions.plan_id')->where('plans.user_id', '=', $this->viewData['user_id'])->where('plans.id', '=', $plan->id)->select('dimensions.*')->get(); $count = count($dimensions); $graph[$index]['columnValueSuffix'] = " %"; $graph[$index]['columnData'] = []; $dimensionsTotalAVERAGE = 0; $dimensionsCount = 0; foreach ($dimensions as $dimension) { $dimension_av = $this->getAverageDimension($dimension); $graph[$index]['categories'][] = $dimension->name; $graph[$index]['categoriesSecond'][] = $dimension->name; $graph[$index]['Target'][] = 100; $graph[$index]['Actual'][] = $dimension_av->AVERAGE; $graph[$index]['ActualSecond'][] = $dimension_av->AVERAGE; $dimensionsTotalAVERAGE += $dimension_av->AVERAGE; $graph[$index]['categoryLinks'][$dimension->name] = url('/dimensions/' . $dimension->id); //array_push($graph[$index]['categories'], $dimension->name); $dimensionsCount++; } $graph[$index]['categoriesSecond'][] = "Average"; $graph[$index]['ActualSecond'][] = $dimensionsCount > 0 ? round($dimensionsTotalAVERAGE / $dimensionsCount, 1) : 0.0; $index++; } $this->viewData['graph'] = json_encode($graph); }
/** * Display the specified resource. * * @param int $id * @return Response */ public function show($id) { $this->viewData['success'] = true; $this->viewData['content'] = []; $dimension = _MODEL::find($id); // dimension if (empty($dimension)) { $this->viewData['success'] = false; return response()->json($this->viewData); } $this->viewData['content']['dimension'] = $dimension; $this->viewData['content']['dimension']['objectives'] = $dimension->objectives; return response()->json($this->viewData); }
/** * Display the specified resource. * * @param int $id * @return Response */ private function populateDimensionTabularAndGraph($dimension_id) { $list = _MODEL::leftJoin('plans', 'plans.id', '=', 'dimensions.plan_id')->where('dimensions.id', '=', (int) $dimension_id)->select('dimensions.*')->get(); $this->viewData['graphData'] = []; $this->viewData['graphData']['title'] = "BSC Report - Dimension: " . $list[0]->name; $this->viewData['graphData']['subtitle'] = "Report for " . $list[0]->name . "'s objectives"; $this->viewData['graphData']['data'] = []; foreach ($list as $row) { $row->AVERAGE = 0; // get objectives list related to dimension $objectives = $row->objectives; $objective_AVERAGE = 0; $objective_count = 0; $total_bojectives = 0; foreach ($objectives as $objective) { $objective->AVERAGE = 0; //get initiatives related to objective $initiatives = $objective->initiatives; $initiative_AVERAGE = 0; $initiative_count = 0; foreach ($initiatives as $initiative) { // get measures related to initiative $measures = $initiative->measures; $measure_count = 0; $percent = 0; foreach ($measures as $measure) { $measure->percent = 0; $measure->actual = ActualMeasure::where('actual_measures.measure_id', '=', (int) $measure->id)->sum('actual_measures.actual_measure'); if ($measure->target != 0) { $percent += $measure->actual / $measure->target * 100; $measure->AVERAGE = $measure->actual / $measure->target * 100; } $measure_count++; } $initiative->measures = $measures; //end measures if ($measure_count != 0) { $initiative_AVERAGE += $percent / $measure_count; $initiative->AVERAGE = $percent / $measure_count; } $initiative_count++; } // $objective->initiatives = $initiatives; //end initiative if ($initiative_count != 0) { $objective_AVERAGE += $initiative_AVERAGE / $initiative_count; $objective->AVERAGE = $initiative_AVERAGE / $initiative_count; } $objective_count++; } // $row->objectives = $objectives; if ($objective_count != 0) { $row->AVERAGE = $objective_AVERAGE / $objective_count; } } $this->viewData['plan_dimensions'] = $list; self::populateDimensionGraph(); // echo '<pre>';print_r($this->viewData['graphData']);die;print_r($this->viewData['plan_dimensions'][0]->objectives); }
/** * Display the specified resource. * * @param int $id * @return Response */ private function populateDimensionsTabularAndGraph($plan_id) { $list = Dimension::leftJoin('plans', 'plans.id', '=', 'dimensions.plan_id')->where('plans.id', '=', (int) $plan_id)->select('dimensions.*')->get(); foreach ($list as $row) { $row->AVERAGE = 0; // get objectives list related to dimension $objectives = $row->objectives; $objective_AVERAGE = 0; $objective_count = 0; foreach ($objectives as $objective) { $objective->AVERAGE = 0; //get initiatives related to objective $initiatives = $objective->initiatives; $initiative_AVERAGE = 0; $initiative_count = 0; foreach ($initiatives as $initiative) { // get measures related to initiative $measures = $initiative->measures; $measure_count = 0; $percent = 0; foreach ($measures as $measure) { $measure->percent = 0; $measure->actual = ActualMeasure::where('actual_measures.measure_id', '=', (int) $measure->id)->sum('actual_measures.actual_measure'); if ($measure->target != 0) { $percent += $measure->actual / $measure->target * 100; $measure->AVERAGE = $measure->actual / $measure->target * 100; } $measure_count++; } $initiative->measures = $measures; //end measures if ($measure_count != 0) { $initiative_AVERAGE += $percent / $measure_count; $initiative->AVERAGE = $percent / $measure_count; } $initiative_count++; } // $objective->initiatives = $initiatives; //end initiative if ($initiative_count != 0) { $objective_AVERAGE += $initiative_AVERAGE / $initiative_count; $objective->AVERAGE = $initiative_AVERAGE / $initiative_count; } $objective_count++; } // $row->objectives = $objectives; if ($objective_count != 0) { $row->AVERAGE = $objective_AVERAGE / $objective_count; } } $this->viewData['plan_dimensions'] = $list; self::populatePlanGraph(); }