<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\{Department,Plan,SmsTemplate,PointRule,Mission};
class DatabaseSeeder extends Seeder {
 public function run():void {
  Department::firstOrCreate(['name'=>'منتورینگ و راه‌اندازی']);
  foreach([['همراه آغاز',14,10,20,10,5],['همراه رشد',30,30,40,20,10],['همراه حرفه‌ای',60,100,60,50,20]] as [$name,$days,$products,$variants,$categories,$pages])Plan::firstOrCreate(['name'=>$name],['kind'=>'mentoring','description'=>'همراهی برای تکمیل اطلاعات و راه‌اندازی سایت؛ ظرفیت‌ها پیش از انتشار توسط مدیر قابل تنظیم است.','days'=>$days,'price'=>0,'active'=>false,'quotas'=>compact('products','variants','categories','pages')+['revisions'=>2],'features'=>['منتور اختصاصی','تکمیل صفحات اصلی','گفت‌وگو در دوره فعال','تحویل و بازبینی اطلاعات']]);
  foreach([['لوگوی ساده',7,1],['لوگوی اختصاصی',14,2]] as [$name,$days,$revisions])Plan::firstOrCreate(['name'=>$name],['kind'=>'logo','description'=>'طراحی لوگو بر پایه هویت کسب‌وکار شما؛ تعرفه و تعهد نهایی را مدیر تعیین می‌کند.','days'=>$days,'price'=>0,'active'=>false,'quotas'=>['products'=>0,'variants'=>0,'categories'=>0,'pages'=>0,'revisions'=>$revisions],'features'=>['دریافت توضیحات برند','ارائه پیش‌نمایش','فایل نهایی']]);
  foreach(json_decode(file_get_contents(__DIR__.'/templates.json'),true) as $event=>[$title,$body,$recipients,$params])SmsTemplate::firstOrCreate(['event'=>$event],['title'=>$title,'body'=>$body,'recipients'=>$recipients,'parameter_map'=>array_combine($params,$params)?:[],'active'=>true]);
  foreach([['profile','تکمیل حساب کاربری',20],['intake','تأیید اطلاعات سایت',100],['review_text','نظر متنی معتبر',50],['review_audio','نظر صوتی معتبر',100],['review_video','نظر ویدئویی معتبر',200]] as [$code,$title,$points])PointRule::firstOrCreate(['code'=>$code],compact('title','points'));
  Mission::firstOrCreate(['title'=>'تکمیل مدارک کسب‌وکار'],['description'=>'تصویر یکی از مدارک مرتبط با کسب‌وکار یا مجوزتان را برای بررسی ارسال کنید. اطلاعات غیرضروری و حساس را پیش از ارسال بپوشانید.','points'=>50,'active'=>true]);
 }
}
