<?php

namespace Tests\Jobs\Callback;

use App\Jobs\Callback\ReportCharge;
use App\Service\Util\Support\Trace\TraceContext;
use Illuminate\Support\Facades\DB;
use PHPUnit\Framework\TestCase;

class ReportChargeTest extends \Tests\TestCase
{

    public function testHandle()
    {
        $this->prepareData();
        foreach (range(1, 150) as $i) {
            $traceContext = new TraceContext();
            $reportCharge = new ReportCharge(['uid' => 1000 + $i, 'orderId' => 10000 + $i,
                'traceInfo' => $traceContext->getTraceInfo()]);
            $reportCharge->handle();
        }

//        foreach (range(151, 163) as $i) {
//            $traceContext = new TraceContext();
//            $reportCharge = new ReportCharge(['uid' => 1000 + $i -150, 'orderId' => 10000 + $i,
//                'traceInfo' => $traceContext->getTraceInfo()]);
//            $reportCharge->handle();
//        }
//
//        foreach (range(164, 180) as $i) {
//            $traceContext = new TraceContext();
//            $reportCharge = new ReportCharge(['uid' => 1000 + $i, 'orderId' => 10000 + $i,
//                'traceInfo' => $traceContext->getTraceInfo()]);
//            $reportCharge->handle();
//        }
    }

    private function prepareData() {
        $promotionId = 5;
        $optimizerId = 10;
        foreach(range(1, 150) as $i) {
            $orders[] = [
                'id' => 10000 + $i,
                'uid' => 1000 + $i,
                'promotion_id' => $promotionId,
                'user_id' => $optimizerId,
                'price' => rand(60, 70),
                'pay_product_id' => 1,
                'status' => 'PAID',
                'trade_no' => uniqid(),
                'created_at' => '2023-07-04 13:'.(44 + rand(5, 10)),
                'updated_at' => date('Y-m-d H:i:s'),
            ];
            $ranses[] = [
                'uid' => 1000 + $i,
                'ranse_id' => $promotionId,
                'callback' => uniqid(),
                'ranse_start_at' => '2023-07-04 13:44:01',
                'ranse_end_at' => '2023-07-04 15:44:01',
                'advertiser_id' => '1234568',
                'adv_promotion_id' => '234',
                'report_result' => '[]',
                'created_at' => date('Y-m-d H:i:s'),
                'updated_at' => date('Y-m-d H:i:s'),
                'ranse_ip' =>'192.168.1.123',
                'optimizer_uid' => 5
            ];
        }

//        foreach (range(151, 163) as $i) {
//            $orders[] = [
//                'id' => 10000 + $i,
//                'uid' => 1000 + $i - 150,
//                'promotion_id' => $promotionId,
//                'user_id' => $optimizerId,
//                'price' => rand(40, 70),
//                'pay_product_id' => 1,
//                'status' => 'PAID',
//                'trade_no' => uniqid(),
//                'created_at' => '2023-07-04 13:'.(44 + rand(5, 10)),
//                'updated_at' => date('Y-m-d H:i:s'),
//            ];
//        }

//        foreach(range(164, 180) as $i) {
//            $orders[] = [
//                'id' => 10000 + $i,
//                'uid' => 1000 + $i,
//                'promotion_id' => $promotionId,
//                'user_id' => $optimizerId,
//                'price' => rand(40, 70),
//                'pay_product_id' => 1,
//                'status' => 'PAID',
//                'trade_no' => uniqid(),
//                'created_at' => '2023-05-19 14:44:01',
//                'updated_at' => date('Y-m-d H:i:s'),
//            ];
//            $ranses[] = [
//                'uid' => 1000 + $i,
//                'ranse_id' => 100,
//                'callback' => uniqid(),
//                'ranse_start_at' => '2023-05-19 14:44:01',
//                'ranse_end_at' => '2023-05-19 15:44:01',
//                'advertiser_id' => '1234568',
//                'adv_promotion_id' => '234',
//                'report_result' => '[]',
//                'created_at' => date('Y-m-d H:i:s'),
//                'updated_at' => date('Y-m-d H:i:s'),
//                'ranse_ip' =>'192.168.1.123',
//                'optimizer_uid' => 5
//            ];
//        }
        DB::table('orders')->where('id', '>=', 10001)->delete();
        DB::table('orders')->insert($orders);
        DB::table('callback_report_ranse_record')->delete();
        DB::table('callback_report_charge_record')->delete();
        DB::table('callback_report_ranse_record')->insert($ranses);
    }
}