<?php


namespace App\Http\Controllers;


use App\Services\InviteService;
use App\Services\OfferService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;

class InvitesController extends Controller
{
    private $service;

    public function __construct(InviteService $service)
    {
        $this->service = $service;
    }

    //回复报价的类型id
    const INTEGRAL_TYPE_INVITE = 1;

    public function index(Request $request)
    {
        $map = [
            'user_id'   => $request->user->user_id,
            'page'      => $request->get('page'),
            'page_size' => $request->get('page_size'),
        ];
        $result = $this->service->getInviteList($map);

        return $this->Export(0, 'ok', $result);
    }

    public function store(Request $request)
    {
        $invitedUserId = $request->user->user_id;
        $userId = $request->get('user_id');
        if ($userId == $invitedUserId) {
            return $this->Export(self::CAN_NOT_INVITE_MYSELF);
        }
        if (!$invitedUserId) {
            return $this->Export(self::INVALID_PARAMETER);
        }

        //注意invited_user_id指的是点击邀请好友链接的用户id
        $map = [
            'user_id'         => $userId,
            'invited_user_id' => $invitedUserId,
            'integral_id'     => self::INTEGRAL_TYPE_INVITE,
        ];
        $result = $this->service->addInvite($map);
        if ($result['errcode'] === self::SUCCESS) {
            return $this->Export(0, 'ok');
        } else {
            return $this->Export(self::INVITE_FAIL);
        }
    }

    public function info(Request $request)
    {
        $userId = $request->user->user_id;
        $result = $this->service->getInviteInfo(['user_id' => $userId]);
        //返回user_id方便前端使用
        $result['data']['user_id'] = $userId;
        //还要获取最新的10条邀请记录,走缓存
        $newInvites = Cache::remember('recent_invites', 10, function () {
            return $this->service->getInviteList([]);
        });
        if (is_array($newInvites)) {
            $newInvites = array_get($newInvites, 'data');
            $newInvites = array_map(function ($value) {
                $value['invited_user_mobile'] = substr_replace($value['invited_user_mobile'],
                    '****', 3, 4);

                return $value;
            }, $newInvites);
        } else {
            $newInvites = [];
        }

        $result['data']['recent_invites'] = $newInvites;

        return $this->Export(0, 'ok', $result);
    }
}