/** * Display a listing of the resource. * * @return Response */ public function index(Request $request) { $reports = Report::orderBy('id', 'desc')->get(); // remove data when viewing list of all reports foreach ($reports as $key => $report) { unset($reports[$key]->data); } return $reports; }
public function paginate() { $report = Report::orderBy('created_at', 'desc')->paginate(4); $report_array = array(); // will fetch every performance and results for the specific report foreach ($report as $key => $value) { $query = DB::table('reports')->join('performances', 'performances.report_id', '=', 'reports.id')->join('results', 'results.performance_id', '=', 'performances.id')->join('positions', 'positions.id', '=', 'performances.position_id')->join('projects', 'projects.id', '=', 'reports.project_id')->join('members', 'members.id', '=', 'performances.member_id')->select('members.*', 'performances.*', DB::raw('DATE_FORMAT(performances.date_start, "%b. %d, %Y") as date_start_formatted'), DB::raw('DATE_FORMAT(performances.date_end, "%b. %d, %Y") as date_end_formatted'), 'results.*', 'projects.*', 'projects.name as project', 'positions.name as position')->whereNull('reports.deleted_at')->whereNull('performances.deleted_at')->where('performances.report_id', $value->id)->where('results.report_id', $value->id)->groupBy('performances.id')->orderBy('positions.name')->orderBy('members.full_name')->get(); foreach ($query as $queryKey => $queryValue) { $quality_target = DB::table('targets')->join('positions', 'positions.id', '=', 'targets.position_id')->join('members', 'members.experience', '=', 'targets.experience')->select('*')->where('targets.position_id', $queryValue->position_id)->where('targets.experience', $queryValue->experience)->where('targets.type', 'Quality')->where('targets.created_at', '<=', $this->date_end)->orderBy('targets.created_at', 'desc')->first(); if (!$quality_target) { $quality_target = DB::table('targets')->join('positions', 'positions.id', '=', 'targets.position_id')->join('members', 'members.experience', '=', 'targets.experience')->select('*')->where('targets.position_id', $queryValue->position_id)->where('targets.experience', $queryValue->experience)->where('targets.type', 'Quality')->where('targets.active', true)->first(); } if ($queryValue->productivity < 100 && $queryValue->quality >= 100) { $queryValue->quadrant = 'Quadrant 1'; } else { if ($queryValue->productivity >= 100 && $queryValue->quality >= 100) { $queryValue->quadrant = 'Quadrant 2'; } else { if ($queryValue->productivity >= 100 && $queryValue->quality < 100) { $queryValue->quadrant = 'Quadrant 3'; } else { $queryValue->quadrant = 'Quadrant 4'; } } } // $queryValue->quota = (($queryValue->productivity >= 100) && ($queryValue->quality >= $quality_target->value)) ? 'Met' : 'Not met'; } // push each results to custom array array_push($report_array, $query); } return response()->json($report_array); }