<?php

namespace Tests\Feature;

use App\Modules\Admin\Subscriptions\Coupons;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use Carbon\Carbon;
use Illuminate\Support\Str;
use App\Models\CompanySubscriptionCoupons;
use App\Models\CouponSubscsriptionRate;

class CreateCouponTest extends TestCase
{
    /**
     * A basic feature test example.
     */
    use RefreshDatabase;
    public function test_create_coupon(): void
    {
        $coupon = new Coupons();
        $yesterday = date('Y-m-d', strtotime(now() . '-1 day'));

        $subscription = 1;

        $validity_date = now();
        $maxUsage = 3;
        $amount = 10;
        $type = 'percentage';
        $range = 12;
        $dateToday = date('Y-m-d');

        $coupon_code = strtoupper(Str::random(8));

        $subscriptionCouponData = array(
            'coupon_code' => $coupon_code,
            'validity_date' => date('Y-m-d', strtotime($validity_date)),
            'max_usage' => $maxUsage,
            'discount' => $amount,
            'type' => $type,
            'range' => $range,
            'created_at' => $dateToday,
        );

        $subscriptionCouponTransaction = CompanySubscriptionCoupons::create($subscriptionCouponData);

        $this->assertTrue($subscriptionCouponTransaction==true, 'Created Company Subscription Coupon Details');

        $couponSubscsriptionRateData = array(
            'coupon_id' => $subscriptionCouponTransaction->id,
            'company_subscription_rates_id' => $subscription, // 0 means available for all
            'current_usage' => 0,
            'for_all' => false,
        );

        $couponSubscsriptionRateTransction = CouponSubscsriptionRate::create($couponSubscsriptionRateData);

        $this->assertTrue($couponSubscsriptionRateTransction==true, 'Created Coupon Subscription Rate Details');

    }
}
