package com.crm.manager.service;

import com.crm.rely.backend.core.dto.base.BaseResultWithPagerDto;
import com.crm.rely.backend.core.dto.custom.CustomGetEmailDto;
import com.crm.rely.backend.core.dto.custom.CustomInfoDto;
import com.crm.rely.backend.core.dto.custom.potential.CustomListDto;
import com.crm.rely.backend.core.entity.base.SingleLongEntity;
import com.crm.rely.backend.core.entity.custom.info.*;
import com.crm.rely.backend.core.entity.custom.login.CustomLoginDayWithdrawLimitUpdateEntity;
import com.crm.rely.backend.core.pojo.table.CustomInfoTable;
import com.crm.rely.backend.core.pojo.table.UserEntryTable;
import com.crm.rely.backend.core.pojo.table.UserInfoTable;
import com.crm.rely.backend.exception.ServiceException;

import java.util.List;

/**
 * Created by max on 2020/6/16.
 */
public interface CustomInfoService {

    BaseResultWithPagerDto<List<CustomListDto>> getPageList(CustomSearchEntity entity) throws Exception;

    List<CustomListDto> getList(CustomSearchEntity entity) throws Exception;

    List<CustomListDto> getList(CustomSearchEntity entity, Boolean isIb) throws Exception;

    List<CustomGetEmailDto> getEmailList(CustomSearchGetEmailEntity entity) throws Exception;

    void approve(CustomApproveEntity entity) throws ServiceException;

    CustomInfoDto getSingleCustomInfo(Long id) throws Exception;

    CustomInfoDto getSingleCustomInfoByCId(Long id) throws Exception;

    CustomInfoDto getSingleCustomByLogin(Long login) throws Exception;

    void batchDeleteByIdList(List<Long> ids) throws Exception;

    void updatePassword(CustomUpdatePasswordByManagerEntity entity) throws ServiceException;

    void updateDayWithdrawLimit(CustomLoginDayWithdrawLimitUpdateEntity entity) throws ServiceException;

    void updateHide(CustomInfoUpdateHideEntity entity) throws ServiceException;

    InfoEntity login(SingleLongEntity entity) throws ServiceException;

    Long getSalesIdByEmail(String email);

    void verifyRealAgain(SingleLongEntity entity) throws ServiceException;

    List<CustomListDto> getUcardCustomList(CustomSearchEntity entity);

    CustomInfoTable addCustom(UserEntryTable entryTable, UserInfoTable userInfoTable) throws ServiceException;
}
