package com.yuchen.saas.park.service.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.protobuf.ServiceException;
import com.yuchen.saas.park.api.entity.park.PmgBatParkVisitor;
import org.nest.springwrap.core.mp.base.BaseService;
import org.nest.springwrap.core.mp.support.Query;
import org.nest.springwrap.core.tool.api.R;

import java.util.List;

/**
 * @author 刘通
 * @date 2020/12/8 11:05
 */
public interface PmgBatParkVisitorService extends BaseService<PmgBatParkVisitor> {
    boolean submit(PmgBatParkVisitor pmgBatParkVisitor) throws ServiceException;
    boolean propertySet(Long visitorId) throws ServiceException;
    boolean deletePeople(List<Long> ids) throws ServiceException;

    /**
     * PC端 访客数据分页查询
     * @param parkId 园区ID
     * @param name 访客姓名
     * @param query 分页数据
     * @return
     */
    IPage<PmgBatParkVisitor> pageVisitor(Long parkId, String name, Query query);

    /**
     * 移动端 访客数据分页查询
     * @param payUserId 移动端 用户ID
     * @param current 当前页
     * @param size 分页数量
     * @return
     */
    IPage<PmgBatParkVisitor> pageVisitor(String payUserId, Integer current, Integer size);

    /**
     * 用户邀请访客
     * @param pmgBatParkVisitor 访客信息
     * @return
     */
    Boolean inviteGuests(PmgBatParkVisitor pmgBatParkVisitor);

    /**
     * 访客申请
     * @param pmgBatParkVisitor 访客信息
     * @return
     */
    R visitorRequest(PmgBatParkVisitor pmgBatParkVisitor);

    /**
     * 审核访客预约
     * @param userId 操作用户ID
     * @param id 预约信息ID
     * @param auditStatus 审核状态
     * @param auditReason 审核理由
     * @return
     */
    R visitorReview(Long userId, Long id, Integer auditStatus, String auditReason);

    /**
     * 移动端--访客取消
     * payUserId 用户ID （管理者则为 平台的UserId）
     * id 取消的记录ID
     * @return
     */
    R visitorCancel(String payUserId, Long id);

    /**
     * 移动端--访客审核数据分页查询
     * @param userId 移动端 用户ID
     * @param current 当前页
     * @param size 分页数量
     * @return
     */
    IPage<PmgBatParkVisitor> pageVisitorReview(String userId, Integer current, Integer size);

    /**
     * 移动端--主动邀请访客
     * @param pmgBatParkVisitor
     * @return
     */
    R visitorInvitation(PmgBatParkVisitor pmgBatParkVisitor);
}
