<?php

namespace App\Http\Controllers\CsvController;

use App\Http\Controllers\CsvController\CsvCostCalc\CsvCostCalc;

class CsvDataHandling
{
    public function __construct($calculate_agent_cost = false)
    {
        $this->calculate_agent_cost = $calculate_agent_cost || config('app.gitea_calculate_agent_cost');
        $this->csv_cost_calc = new CsvCostCalc();

    }

    function handle_agent_issue($agents_issue_time, $time)
    {
        $time_agent = $time['user_name'];
        !array_key_exists($time_agent, $agents_issue_time) && $agents_issue_time[$time_agent] = 0;
        $agents_issue_time[$time_agent] += $time['time'];
        return $agents_issue_time;
    }

    function get_issue_total_time(array $issue_time)
    {
        $total_issue_time = 0;
        $agents_issue_time = [];
        foreach ($issue_time as $time) {
            $total_issue_time += (int)$time['time'];
            $this->calculate_agent_cost && $agents_issue_time = $this->handle_agent_issue($agents_issue_time, $time);
        }

        return [$total_issue_time, $agents_issue_time];
    }

    function handle_csv_time(array $array, array $issue, array $issue_time, array $company_agents = [], $calculate_agent_cost = false)
    {
        [$total_time, $agents_time] = $this->get_issue_total_time($issue_time);
        $array = $this->csv_cost_calc->total_time_cost($array, $total_time);
        if ($this->calculate_agent_cost) {
            $array = $this->csv_cost_calc->agent_cost_calc($array, $company_agents, $agents_time);
        }
        return $array;
    }
}