<?php

namespace App\Http\Controllers\Web\Person;

use Aix\Pay\Data\PayOrder;
use App\Http\Controllers\Web\WebBaseController;
use App\Models\Report;
use App\Models\Resume;
use App\Services\Common\PayService;
use App\Services\Common\TplService;
use App\Services\Person\MemberHandselService;
use App\Services\Person\MemberPointService;
use Illuminate\Http\Request;

class MemberController extends WebBaseController
{
    /**
     * @var ResumeService
     */
    protected $MemberHandselService;
    protected $MemberPointService;
    protected $payService;
    protected $tplService;

    /**
     * MemberController constructor.
     * @param MemberHandselService $MemberHandselService
     * @param MemberPointService $MemberPointService
     * @param PayService $payService
     */
    public function __construct(MemberHandselService $MemberHandselService, MemberPointService $MemberPointService, PayService $payService, TplService $tplService)
    {
        $this->MemberHandselService = $MemberHandselService;
        $this->MemberPointService = $MemberPointService;
        $this->payService = $payService;
        $this->tplService = $tplService;
    }

    /**
     * @des 会员服务
     */
    public function service()
    {
        $res = $this->MemberPointService->getPointsById(auth('web-member')->user());
        return view('app.person.service')->with([
            'content'=>$res['content'],
            'points'=>$res['points'],
            'lastPoints'=>$res['lastPoints'],
            'member'=>$res['member'],
            'memhanselGet'=>$res['memhanselGet'],
            'memhanselPo'=>$res['memhanselPo'],
        ]);
    }

    /**
     * 我的任务
     */
    public function task()
    {
        return view('app.person.task', $this->MemberPointService->getTask(auth('web-member')->user()));
    }

    /**
     * 增值服务。
     */
    public function increment()
    {
        $tpl = $this->tplService->getTpl(auth('web-member')->user());
        return view('app.person.increment', ['tpl'=>$tpl]);
    }

    /**
     * 添加增值服务。
     */
    public function increment_add()
    {
         $res = $this->MemberPointService->increment_add(request()->type, auth('web-member')->user());
         return view('app.person.'.$res['tpl'], ['resume'=>$res['resume'], 'info'=>$res['info'],'points'=>$res['points'],'payment'=>$res['payment']]);
    }

    /**
     * 支付。
     */
    public function pay(Request $request)
    {
        $order = $this->MemberPointService->pay($request->all(), auth('web-member')->user());
        $tradeNo = $this->payService->getTradeNo($order['order']->id);
        $res = $this->MemberPointService->updateOrder($tradeNo, $order['input'], $order['order'],$request->route());
        if ($res['code']=='wechat') {
            if ($res['type']=='wap') {
                return $res['tradeCode'];
            } elseif ($res['type']=='official'){
                return json_encode(['tradeCode'=>$res['tradeCode']]);
            } else {
                return json_encode(['tradeCode'=>$res['tradeCode'],'tradeNo'=>$res['tradeNo']]);
            }
        } else {
            return $res['tradeCode'];
        }
    }

    public function payStatus(Request $request)
    {
        $res = $this->MemberPointService->payStatus($request->tradeNo);
        if ($res) {
            return json_encode(['code'=>1]);
        } else {
            return json_encode(['code'=>0]);
        }
    }

    public function order_list(Request $request)
    {
         $res = $this->MemberPointService->order_list(auth('web-member')->user(), $request->all());
         return view('app.person.order_list', ['order'=>$res['order']]);
    }

    public function order_detail($oid)
    {
        $content = $this->MemberPointService->order_detail($oid,auth('web-member')->user());
         return view('app.person.order_detail', ['order'=>$content]);
    }

    public function order_cancel()
    {
        $result = $this->MemberPointService->order_cancel(request()->id,auth('web-member')->user());
        if ($result) {
            return $this->sendSuccessResponse('取消成功!');
        } else {
            return $this->sendErrorResponse('取消失败!');
        }
    }

    public function order_delete()
    {
        $result = $this->MemberPointService->order_delete(request()->id,auth('web-member')->user());
        if ($result) {
            return $this->sendSuccessResponse('删除成功!');
        } else {
            return $this->sendErrorResponse('删除失败!');
        }
    }

    public function payAgain(Request $request)
    {
        $res = $this->MemberPointService->payAgain(request()->id, $request->route());
        if ($res['code']=='wechat') {
            if ($res['type']=='wap') {
                return $res['tradeCode'];
            } else {
                return json_encode(['tradeCode'=>$res['tradeCode'],'tradeNo'=>$res['tradeNo']]);
            }
        } else {
            return $res['tradeCode'];
        }
    }
}