<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Model\UserSampleApplyModel;
use App\Model\UserSampleInviteModel;
use DB;
use Excel;

Class ExportController extends Controller
{
    // 统一入口
    public function entrance(Request $request, $id)
    {
       return $this->$id($request);
    }

    // 导出会员
    public function selfSampleExport($request)
    {
        $UserSampleApplyModel = new UserSampleApplyModel();
        $UserSampleInviteModel = new UserSampleInviteModel();
        $data = $UserSampleApplyModel->lists($request, 1);

        foreach ($data as $k=>$v) {
            $cellData[$k]['user_id']         = $v['user_id'];
            $cellData[$k]['account']         = $v['account'];
            $cellData[$k]['invite_count']    = $v['invite_count'];
            $cellData[$k]['apply_num_total'] = $v['apply_num_total'];
            $cellData[$k]['apply_count']     = $v['apply_count'];
            $cellData[$k]['order_id']        = $v['order_id'];
            $cellData[$k]['order_sn']        = $v['order_sn'];
            $cellData[$k]['goods_id']        = $v['goods_id'];  
            $cellData[$k]['goods_name']      = $v['goods_name'];  

            $invite = $UserSampleInviteModel->where('user_id', $v['user_id'])->select('invitee_mobile')->get()->toArray();

            if (!empty($invite)) {
                $cellData[$k]['invitee'] = implode(',', array_column($invite, 'invitee_mobile'));
            } else {
                $cellData[$k]['invitee'] = '';
            }

            $cellData[$k]['create_time'] = $v['create_time']; 
        }

        $headerCell = ['用户ID', '用户账户', '邀请人数', '已申请样片数', '剩余领取次数', '订单ID', '订单编号', '样片ID', '样片名称', '邀请用户', '最近一次领取时间']; 
        $fileName   ='自营样片领取记录导出'.date('_YmdHis');
        $sheetName  = '自营样片';

        $this->commonFunc($cellData, $headerCell, $fileName, $sheetName);       
    }

    /**
     *  导出
     * @param  [type] $cellData   [导出数据]
     * @param  [type] $headerCell [菜单项]
     * @param  [type] $fileName   [文件名]
     * @param  string $sheetName  [sheet名]
     * @return [type]             [description]
     */
    public function commonFunc($cellData, $headerCell, $fileName, $sheetName='') 
    {
        $sheetName = $sheetName ? $sheetName : '导出';

        array_unshift($cellData, $headerCell);

        Excel::create($fileName, function($excel) use ($cellData, $sheetName){
            $excel->sheet($sheetName, function($sheet) use ($cellData){
                $sheet->rows($cellData);
            });
        })->export('xls');
    }


}