<?php

namespace App\Service\Callback;

use Illuminate\Support\Facades\DB;

class TrackService
{
    public static function getTrackRecord($callbackType, $searchInfo) {
        switch ($callbackType) {
            case 'juliangAccount':
                $ip =  $searchInfo['ip'];
                $ranseId = $searchInfo['ranseId'];
                $now = time();
                foreach (self::getTrackTable($now,180) as $table) {
                    $record = DB::connection('track_record')
                        ->table($table)
                        ->where([
                            'ip' => $ip, 'connection_id' => $ranseId, 'link_source' => 'tiktok',
                        ])->where('created_at', '>=', $now - 180)
                        ->orderBy('id', 'desc')
                        ->first();
                    if($record) {
                        break;
                    }
                }
                return $record ? [
                    'callback' => $record->callback,
                    'advertiser_id' => $record->advertiser_id,
                    'adv_promotion_id' => $record->promotion_id
                ] : null;

                break;
        }
        return null;
    }

    public static function getTrackTable($endTimstamp, $duration) {
        $currentYm = date('Ym', $endTimstamp);
        $startCurrentYm = date('Ym', $endTimstamp - $duration);
        $tables = ['douyin_tracks'.$currentYm];
        if($currentYm != $startCurrentYm) {
            $tables[] = 'douyin_tracks'.$startCurrentYm;
        }
        return $tables;
    }
}