/**
  * 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);
 }
Exemplo n.º 5
0
 /**
  * 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();
 }