@axelbest: Ta funkcja wygląda tak (ale ja to pisałem jakieś 1.5 roku temu teraz to chce trochę inaczej napisać)
private function calculateAverage($dataStart,$dataEnd,$dayInput = "") {
$Moods = Moods::query();
$hour = Auth::User()->start_day;
$average = 0;
$second = 0;
$sumMood = 0;
$sumAnxiety = 0;
$sumNer = 0;
$sumStimu = 0;
$harmonyMood = [];
$harmonyStimu = [];
$harmonyNer = [];
$harmonyAnxiety = [];
$Moods->select(DB::Raw("(DATE(IF(HOUR(date_start) >= '$hour', date_start,Date_add(date_start, INTERVAL - 1 DAY) )) ) as dat "))
->selectRaw("Date_add(date_start, INTERVAL - '$hour' HOUR) as date_start")
->selectRaw("Date_add(date_end, INTERVAL - '$hour' HOUR) as date_end")
->selectRaw("time(Date_add(date_end,INTERVAL - '$hour' HOUR)) as d")
->selectRaw("level_anxiety as level_anxiety")
->selectRaw("level_nervousness as level_nervousness")
->selectRaw("level_stimulation as level_stimulation")
->selectRaw("level_mood as level_mood")
->where("id_users",$this->IdUsers);
if ($dataStart != "") {
$Moods->where("date_start",">=",$dataStart);
$Moods->where("date_start","<",$dataEnd);
}
$Moods->whereRaw("time(Date_add(date_start,INTERVAL - '$hour' HOUR)) < '" .$this->hourEnd . "'");
$Moods->whereRaw("time(Date_add(date_end,INTERVAL - '$hour' HOUR)) >= '" .$this->hourStart . "'");
$list = $Moods->get();
$i = 0;
foreach ($list as $moodss) {
$time1 = strtotime($moodss->date_start);
$time2 = strtotime($moodss->date_end);
$divi1 = explode(" ",$moodss->date_start);
$divi2 = explode(" ",$moodss->date_end);
$dataa = explode(" ",$dataEnd);
$dateComparate1 = strtotime($divi1[0] . " " . $this->hourStart );
$dateComparate2 = strtotime($divi2[0] . " " . $this->hourEnd);
if ($time1 <= $dateComparate1) {
$div = $dateComparate1;
}
else {
$div = $time1;
}
if ($time2 >= $dateComparate2) {
$div2 = $dateComparate2;
}
else {
$div2 = $time2;
}
$sumAnxiety += ($div2 - $div) * $moodss->level_anxiety;
$harmonyAnxiety[$i] = $moodss->level_anxiety;
$sumNer += ($div2 - $div) * $moodss->level_nervousness;
$harmonyNer[$i] = $moodss->level_nervousness;
$sumStimu += ($div2 - $div) * $moodss->level_stimulation;
$harmonyStimu[$i] = $moodss->level_stimulation;
$sumMood += ($div2 - $div) * $moodss->level_mood;
$harmonyMood[$i] = $moodss->level_mood;
$second += $div2 - $div;
$this->list["mood"][$i] = $moodss->level_mood;
$this->list["anxiety"][$i] = $moodss->level_anxiety;
$this->list["nervousness"][$i] = $moodss->level_nervousness;
$this->list["stimulation"][$i] = $moodss->level_stimulation;
$i++;
}
$this->countList = $i;
if ($i == 0) {
//return;
}
//if ($type == "anxiety") {
array_push($this->tableAnxiety,round(($this->sortMood($harmonyAnxiety) ),2));
//}
//else if ($type=="ner") {
array_push($this->tableNer,round(($this->sortMood($harmonyNer) ),2));
//}
//else if ($type=="stimulation") {
array_push($this->tableStimu,round(($this->sortMood($harmonyStimu) ),2));
//}
//else {
array_push($this->tableMood,round(($this->sortMood($harmonyMood) ),2));
//}
if ($second == 0) {
return [];
}
$return = [];
//if ($type == "mood") {
array_push($return,round($sumMood / $second,2));
//return ;
//}
//else if ($type=="anxiety") {
array_push($return,round($sumAnxiety / $second,2));
//return round($sumAnxiety / $second,2);
//}
//else if ($type=="ner") {
array_push($return,round($sumNer / $second,2));
//return round($sumNer / $second,2);
//}
//else {
array_push($return,round($sumStimu / $second,2));
//return round($sumStimu / $second,2);
//}
return $return;
}