calculate_agent_cost = $calculate_agent_cost || config('app.gitea_calculate_agent_cost'); } private function sum_total_cost(array $array) { (float)$total = 0; foreach ($array as $issue_total) { $issue_total_cost = $issue_total['Costo totale']; $total += $issue_total_cost; } $totalSumCsvLine = array( 'Progetto' => '', '#' => '', 'Titolo' => '', 'URL' => '', 'Aperto_il' => '', 'Chiuso_il' => '', 'Etichette' => '', 'Kind' => '', 'Request By' => '', 'Priority' => '', 'Tempo totale' => '', 'Costo totale' => $total, ); array_push($array, $totalSumCsvLine); return $array; } private function add_agents_csv_line($agent_struct, $last_csv_line) { $agents_csv_line = $last_csv_line; foreach ($agent_struct as $agent_name => $agent_sum) { $agents_csv_line[$agent_name] = ''; $agents_csv_line[$agent_name . ' costo'] = $agent_sum; } return $agents_csv_line; } private function init_agents_struct($company_agents){ return array_combine($company_agents, array_fill(0, count($company_agents), 0)); } private function extract_agent_cost(array $array,array $agent_struct){ $i=0; $issue_length = count( $array ); foreach ($array as $issue) { if(++$i == $issue_length) break; foreach ($agent_struct as $agent_name => $agent_sum) { $agent_cost = $issue[$agent_name . ' costo']; $agent_struct[$agent_name] += $agent_cost; } } return $agent_struct; } private function sum_agents_cost($array, $company_agents) { $agent_struct = $this->init_agents_struct($company_agents); $agent_struct = $this->extract_agent_cost($array, $agent_struct); $agents_csv_line = $this->add_agents_csv_line($agent_struct, end($array)); $array[key($array)] = $agents_csv_line; return $array; } function sum_costs(array $array, $company_agents = []) { $array = $this->sum_total_cost($array); if ($this->calculate_agent_cost) { $array = $this->sum_agents_cost($array, $company_agents); } return $array; } }