toDateTimeString().'\')'; } if ($roundingMinutes < 1) { throw new LogicException('Rounding minutes must be greater than 0'); } $end = 'coalesce("end", \''.Carbon::now()->toDateTimeString().'\')'; if ($roundingType === TimeEntryRoundingType::Down) { return 'date_bin(\''.$roundingMinutes.' minutes\', '.$end.', '.$this->getStartSelectRawForRounding($roundingType, $roundingMinutes).')'; } elseif ($roundingType === TimeEntryRoundingType::Up) { return 'date_bin(\''.$roundingMinutes.' minutes\', '.$end.' + interval \''.$roundingMinutes.' minutes\', '.$this->getStartSelectRawForRounding($roundingType, $roundingMinutes).')'; } elseif ($roundingType === TimeEntryRoundingType::Nearest) { return 'date_bin(\''.$roundingMinutes.' minutes\', '.$end.' + interval \''.($roundingMinutes / 2).' minutes\', '.$this->getStartSelectRawForRounding($roundingType, $roundingMinutes).')'; } } }