public function getDiagStats($year, $month) { $schedules = schedule::diagDateInRange($year, $month)->join('scheduleLog', 'schedule.scheduleLogId', '=', 'scheduleLog.scheduleLogId')->join('doctor', 'scheduleLog.doctorId', '=', 'doctor.userId')->where('doctor.userId', '=', $this->userId)->where('schedule.diagDate', '<', Carbon::now())->orderBy('diagDate')->get(); $i = -1; $lastDate = ''; $results = array(); foreach ($schedules as $s) { $schedule = schedule::where('scheduleId', $s['scheduleId'])->first(); if ($s->diagDate != $lastDate) { $i++; $results[$i]['morning'] = '-'; $results[$i]['afternoon'] = '-'; $results[$i]['sum'] = 0; $results[$i]['date'] = $schedule['diagDate']; $lastDate = $s->diagDate; } $patientNo = $schedule->patientsAmount(); $results[$i][$s->getOriginal('diagTime')] = $patientNo; $results[$i]['sum'] += $patientNo; } $results['sum']['date'] = 'รวม'; $results['sum']['morning'] = 0; $results['sum']['afternoon'] = 0; foreach ($results as $date) { if ($date['morning'] != '-') { $results['sum']['morning'] += $date['morning']; } if ($date['afternoon'] != '-') { $results['sum']['afternoon'] += $date['afternoon']; } } $results['sum']['sum'] = $results['sum']['morning'] + $results['sum']['afternoon']; return $results; }