internal_percentage_to_deduct = config('app.price_internal_percentage_to_deduct'); $this->partner_organization = strtolower(config('app.gitea_partner_organization')); $this->price_partner = [ 'high' => $this->calculate_minute_cost((int)config('app.price_partner_high')), 'normal' => $this->calculate_minute_cost((int)config('app.price_partner_normal')), 'low' => $this->calculate_minute_cost((int)config('app.price_partner_low')), '0'=>0, ]; $this->price_client = [ 'high' => $this->calculate_minute_cost((int)config('app.price_client_high')), 'normal' => $this->calculate_minute_cost((int)config('app.price_client_normal')), 'low' => $this->calculate_minute_cost((int)config('app.price_client_low')), '0'=>0, ]; } private function calculate_minute_cost(int $hourly_cost) { return $hourly_cost / 60; } private function extract_string_from_label($label) { return strtolower(substr($label, strpos($label, '/') + 1)); } function select_correct_cost($requested_by, $priority) { $requested_by = $this->extract_string_from_label($requested_by); $priority = $this->extract_string_from_label($priority); $requested_by_partner = str_contains($requested_by, strtolower($this->partner_organization)); try { $priority = match ($priority) { 'critical', 'high' => 'high', 'medium' => 'normal', 'low' => 'low', default =>'0' }; } catch (Exception $e) { Log::error('E-CSV-MINUTECOSTCALC - '. $e->getMessage()); } if ($requested_by_partner) { return $this->price_partner[$priority]; } return $this->price_client[$priority]; } }