format('Y-m-d H:i:s'); } private function search_requested_by($issue_labels){ foreach ($issue_labels as $key => $label) { if (strpos($label['name'],'RequestBy') !== false) { return true; } } return false; } private function get_issue_total_time(array $issue_time) { $count = 0; foreach ($issue_time as $time) { $count += (int) $time['time']; } return $count; } private function check_issue_is_billed(array $issue_labels, array $issue_time): bool { $issue_time = $this->get_issue_total_time($issue_time); $issue_time = (gmdate('H:i:s', $issue_time) !== '00:00:00'); $label_requested_by_index = $this->search_requested_by($issue_labels); return $issue_time && $label_requested_by_index; } function handle_single_issue(string $from_date, string $to_date, array $issue, array $issue_time){ $from_datetime = $this->date_to_datetime($from_date); $to_datetime = $this->date_to_datetime($to_date); $closed_after_inital_date = substr($issue['closed_at'], 0, 19) > $from_datetime; $closed_after_ending_date = substr($issue['closed_at'], 0, 19) <= $to_datetime; $issue_is_billed = false; if(isset($issue['labels']) && sizeof($issue['labels']) > 0) { $issue_is_billed = $this->check_issue_is_billed($issue['labels'], $issue_time); } return $closed_after_inital_date && $closed_after_ending_date && $issue_is_billed; } }