<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use App\Models\Children;
use App\Models\CheckIn;
use App\Models\Leave;

class CheckLeave implements FromCollection, WithHeadings {
	public $classId;
	public function __construct($classId)
	{
		$this->class_id = $classId;
	}
	public function collection() {
		$children = Children::select(['id','realname','starttime'])->where('classes','like',"%\"{$this->class_id}\"%")->get();
		$dateArr=CheckIn::select(\DB::raw('DISTINCT check_date'))->where('class_id',$this->class_id)->orderBy('check_date')->pluck('check_date')->toArray();
		
		foreach($children as $key=>$child){
			foreach($dateArr as $k2=>$date ){
				//判断 请假、正常、无故缺席 并判断孩子加入时间
				$status='';
				$countCheckIn=CheckIn::where('child_id',$child->id)->where('check_date',$date)->where('class_id',$this->class_id)->count();
				$Leave=Leave::where('child_id',$child->id)->where('class_date',$date)->where('class_id',$this->class_id)->first();
				//
				if($countCheckIn){
					$status='正常';
				}else if($Leave){
					
					$status="已请假($Leave->reason)";
				}else if($child->starttime > $date){
					$status='还未加入训练';
				}else{
					$status='无故缺席';
				}
				$child->$k2=$status;
			}
			unset($child->id);
			unset($child->starttime);
		}
		return $children;
	}
	public function headings(): array {
		$dateArr=CheckIn::select(\DB::raw('DISTINCT check_date'))->where('class_id',$this->class_id)->orderBy('check_date')->pluck('check_date')->toArray();
		array_unshift($dateArr,"姓名/日期");
		return $dateArr;
	}
}
