<?php

namespace App\Http\Controllers\CsvController;

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

class CsvDataHandling
{
    private $calculate_agent_cost;
    private $csv_cost_calc;

    public function __construct()
    {
        $this->calculate_agent_cost = env('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 = [])
    {
        [$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;
    }
}