HEX
Server: Apache
System: Linux server3230.server-vps.com 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64
User: lzgqnjwu (1002)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: //proc/1122/cwd/common/models/BotCallRow.php
<?php

namespace common\models;

use Yii;
use yii\helpers\Html;

/**
 * One call row from Google Sheet (not persisted).
 */
class BotCallRow
{
    /** @var int 0-based index in parsed data rows */
    public $index = 0;
    /** @var string */
    public $dateRaw = '';
    /** @var string */
    public $number = '';
    /** @var string */
    public $direction = '';
    /** @var string */
    public $organization = '';
    /** @var string */
    public $duration = '';
    /** @var string */
    public $transcript = '';
    /** @var string */
    public $assessment = '';
    /** @var string */
    public $summary = '';
    /** @var string */
    public $name = '';
    /** @var string Numeric ID from sheet column I when present */
    public $externalId = '';
    /** @var int|null bot_contacts.id */
    public $contactId;
    /** @var int 1-based row number in Google Sheet (for loading transcript on demand) */
    public $sourceSheetRow = 0;

    public function getFormattedDate(): string
    {
        $raw = trim($this->dateRaw);
        if ($raw === '') {
            return '—';
        }

        $ts = strtotime($raw);
        if ($ts !== false) {
            return date('d.m.Y H:i', $ts);
        }

        return $raw;
    }

    public function getDisplayName(): string
    {
        $name = trim($this->name);

        return $name !== '' ? $name : '—';
    }

    public function getDisplayNumber(): string
    {
        $number = trim($this->number);

        return $number !== '' ? $number : '—';
    }

    public function getDisplayAssessment(): string
    {
        $val = trim($this->assessment);

        return $val !== '' ? $val : '—';
    }

    public function getDisplaySummary(): string
    {
        $val = trim($this->summary);
        if ($val === '') {
            return '—';
        }
        if (mb_strlen($val) > 120) {
            return mb_substr($val, 0, 117) . '…';
        }

        return $val;
    }

    public function getShortDirection(): string
    {
        $raw = trim($this->direction);
        if ($raw === '') {
            return '—';
        }
        $lower = mb_strtolower($raw);
        if (mb_strpos($lower, 'вхід') !== false) {
            return Yii::t('common', 'Inbound call');
        }
        if (mb_strpos($lower, 'вихід') !== false) {
            return Yii::t('common', 'Outbound call');
        }
        if (mb_strlen($raw) > 28) {
            return mb_substr($raw, 0, 25) . '…';
        }

        return $raw;
    }

    public function getAssessmentBadge(): string
    {
        $val = trim($this->assessment);
        if ($val === '' || !is_numeric($val)) {
            return Html::tag('span', '—', ['class' => 'text-muted']);
        }
        $score = (int) $val;
        if ($score <= 4) {
            $class = 'badge badge-danger';
        } elseif ($score <= 6) {
            $class = 'badge badge-warning';
        } else {
            $class = 'badge badge-success';
        }

        return Html::tag('span', Html::encode((string) $score), ['class' => $class]);
    }
}