<?php

namespace Database\Seeders;

use App\Models\Feature;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Throwable;

class FeaturesSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $seederData = json_decode(
            Storage::disk('json')->get('features.json'),
            true
        );

        DB::beginTransaction();
        try {
            foreach ($seederData as $featureData) {
                $feature = Feature::where('name', $featureData['name'])->first();

                if (!$feature) {
                    $feature =  new Feature();
                    $feature->name = $featureData['name'];
                }
                $feature->description = $featureData['description'];
                $feature->trial_enabled = $featureData['trialEnabled'];
                $feature->value = $featureData['value'];

                $feature->save();
            }
            DB::commit();
        } catch (Throwable $e) {
            DB::rollBack();
            throw($e);
        }
    }
}
