package com.lesingle.edu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lesingle.edu.dto.request.ParentCreateRequest;
import com.lesingle.edu.dto.request.ParentUpdateRequest;
import com.lesingle.edu.entity.Parent;

import java.util.List;

/**
 * 家长服务接口
 */
public interface ParentService extends com.baomidou.mybatisplus.extension.service.IService<Parent> {

    /**
     * 创建家长
     */
    Parent createParent(Long tenantId, ParentCreateRequest request);

    /**
     * 更新家长
     */
    Parent updateParent(Long id, ParentUpdateRequest request);

    /**
     * 更新家长（带租户验证）
     */
    Parent updateParentWithTenantCheck(Long id, Long tenantId, ParentUpdateRequest request);

    /**
     * 根据 ID 查询家长
     */
    Parent getParentById(Long id);

    /**
     * 根据 ID 查询家长（带租户验证）
     */
    Parent getParentByIdWithTenantCheck(Long id, Long tenantId);

    /**
     * 分页查询家长
     */
    Page<Parent> getParentPage(Long tenantId, Integer pageNum, Integer pageSize, String keyword, String status);

    /**
     * 删除家长
     */
    void deleteParent(Long id);

    /**
     * 删除家长（带租户验证）
     */
    void deleteParentWithTenantCheck(Long id, Long tenantId);

    /**
     * 重置密码
     */
    void resetPassword(Long id, String newPassword);

    /**
     * 重置密码（带租户验证）
     */
    void resetPasswordWithTenantCheck(Long id, Long tenantId, String newPassword);

    /**
     * 重置密码并返回临时密码（带租户验证）
     */
    String resetPasswordAndReturnTemp(Long id, Long tenantId);

    /**
     * 绑定学生
     */
    void bindStudent(Long parentId, Long studentId, String relationship, Boolean isPrimary);

    /**
     * 绑定学生（带租户验证）
     */
    void bindStudentWithTenantCheck(Long parentId, Long studentId, Long tenantId, String relationship, Boolean isPrimary);

    /**
     * 解绑学生
     */
    void unbindStudent(Long parentId, Long studentId);

    /**
     * 解绑学生（带租户验证）
     */
    void unbindStudentWithTenantCheck(Long parentId, Long studentId, Long tenantId);

}
