package com.xinelu.applet.service.nursepersonapplogin;


import com.xinelu.applet.dto.nursepersonapplogin.OrderFallbackDTO;
import com.xinelu.applet.vo.nursepersonapplogin.NurseAppLoginSysUserVO;
import com.xinelu.applet.vo.nursepersonapplogin.NursePersonAppLoginsUserVO;
import com.xinelu.applet.vo.nursepersonapplogin.OrderAndItemVO;
import com.xinelu.applet.vo.nursepersonapplogin.PersonNurseStationAppVO;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.appointmentorderdetails.AppointmentOrderDetails;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @Description 护理人员APP登录注册业务层
 * @Author zh
 * @Date 2022-10-28
 */
public interface INursePersonAppLoginService {

    /**
     * 工单首页查询已完成以及未完成数量
     *
     * @param nurseStationPersonId 护理员id
     * @return int
     **/
    AjaxResult selectOrderByNursePersonCount(Long nurseStationPersonId);


    /**
     * 服务人员我的任务界面 查询服务订单
     *
     * @param orderAndItem 预约订单信息
     * @return 结果
     */
    List<OrderAndItemVO> selectAppointmentOrder(OrderAndItemVO orderAndItem);

    /**
     * 服务人员-服务订单详情
     *
     * @param orderNo 订单编号
     * @return 结果
     */
    AjaxResult selectOrderDetailsAndPatient(String orderNo);

    /**
     * 服务人员 - 任务回退
     *
     * @param orderFallbackDTO 订单信息
     * @return 结果
     */
    AjaxResult updateAppointmentOrder(OrderFallbackDTO orderFallbackDTO);

    /**
     * 任务确认完成
     *
     * @param appointmentOrderDetails 图片路径
     * @return 结果
     */
    AjaxResult updateOrderDetails(AppointmentOrderDetails appointmentOrderDetails);

    /**
     * 护理人员 注册用户信息
     *
     * @param nurseAppLogin 注册信息
     * @return com.xinyilu.common.core.domain.AjaxResult
     **/
    AjaxResult nurseAppLoginSysUser(NurseAppLoginSysUserVO nurseAppLogin);


    /**
     * APP登录用户信息
     *
     * @param phone                 账号
     * @param stationPersonPassword 密码
     * @return 结果
     */
    AjaxResult logins(String phone, String stationPersonPassword);


    /**
     * 忘记密码
     *
     * @param phonenumber           账号
     * @param stationPersonPassword 密码
     * @return 结果
     */
    AjaxResult updatePassword(String phonenumber, String stationPersonPassword, String verification);

    /**
     * 查询护理站人员的个人信息
     *
     * @param nurseAppLoginSysUserVO 个人信息
     * @return com.xinyilu.nurseapplet.domain.vo.nursepersonapplogin.NursePersonAppLoginsUserVO
     **/
    NursePersonAppLoginsUserVO getNursePersonPersonalInformation(NurseAppLoginSysUserVO nurseAppLoginSysUserVO);


    /**
     * 修改用户护理人员的账户密码
     *
     * @param nurseAppLoginSysUserVO 用户信息
     * @return int
     **/
    AjaxResult updateUserPassWord(NurseAppLoginSysUserVO nurseAppLoginSysUserVO);

    /**
     * 修改被护理人人员上传文件头像
     *
     * @param avatar 头像地址
     * @param userId userId护理人人员id
     * @return com.xinyilu.common.core.domain.AjaxResult
     **/
    boolean updateHeadAvatarHeadUserId(@Param("userId") Long userId, @Param("avatar") String avatar, String userIdAvatar);

    /**
     * 修改被护理人人员上传文件头像
     *
     * @param multipartFile 文件
     * @param userId        userId护理人人员id
     * @return com.xinyilu.common.core.domain.AjaxResult
     * @throws Exception 异常信息
     **/
    AjaxResult updateHeadAvatarHead(MultipartFile multipartFile, Long userId) throws Exception;


    /**
     * 查询护理站列表
     *
     * @param nurseStation 护理站列表
     * @return com.xinyilu.base.domain.nursestation.NurseStation
     **/
    List<PersonNurseStationAppVO> getPersonNurseStationLists(PersonNurseStationAppVO nurseStation);
}
