using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Bowin.Common.Linq.Entity;
using EMIS.ViewModel;
using EMIS.ViewModel.EnrollManage.NewStudentManage;

namespace EMIS.CommonLogic.EnrollManage.NewStudentManage
{
    public interface INewStudentEnterServices
    {
        /// <summary>
        /// 查询录取名单信息View
        /// </summary>
        /// <param name="configuretView"></param>
        /// <param name="campusID"></param>
        /// <param name="collegeID"></param>
        /// <param name="gradeID"></param>
        /// <param name="standardID"></param>
        /// <param name="educationID"></param>
        /// <param name="learningformID"></param>
        /// <param name="learnSystem"></param>
        /// <param name="grademajorID"></param>
        /// <param name="classmajorID"></param>
        /// <param name="generalPurpose"></param>
        /// <param name="generalExist"></param>
        /// <param name="newStudentEnterStatus"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        IGridResultSet<NewStudentView> GetNewStudentEnterViewGrid(ConfiguretView configuretView, Guid? campusID, Guid? collegeID, int? gradeID, int? standardID, 
                int? educationID, int? learningformID, string learnSystem, Guid? grademajorID, Guid? classmajorID, int? generalPurpose, int? generalExist, int? newStudentEnterStatus, int pageIndex, int pageSize);

        /// <summary>
        /// 查询录取名单信息List
        /// </summary>
        /// <param name="configuretView"></param>
        /// <param name="campusID"></param>
        /// <param name="collegeID"></param>
        /// <param name="gradeID"></param>
        /// <param name="standardID"></param>
        /// <param name="educationID"></param>
        /// <param name="learningformID"></param>
        /// <param name="learnSystem"></param>
        /// <param name="grademajorID"></param>
        /// <param name="classmajorID"></param>
        /// <param name="generalPurpose"></param>
        /// <param name="generalExist"></param>
        /// <param name="newStudentEnterStatus"></param>
        /// <returns></returns>
        IList<NewStudentView> GetNewStudentEnterViewList(ConfiguretView configuretView, Guid? campusID, Guid? collegeID, int? gradeID, int? standardID, 
                int? educationID, int? learningformID, string learnSystem, Guid? grademajorID, Guid? classmajorID, int? generalPurpose, int? generalExist, int? newStudentEnterStatus);

        /// <summary>
        /// 查询对应的录取名单信息NewStudentView
        /// </summary>
        /// <param name="newStudentID"></param>
        /// <returns></returns>
        NewStudentView GetNewStudentEnterView(Guid? newStudentID);

        /// <summary>
        /// 录取查询
        /// </summary>
        /// <param name="examineeNum"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        NewStudentView GetNewStudentEnterView(string examineeNum, string userName);

        /// <summary>
        /// 编辑(新增、修改,业务主键:考生号唯一)
        /// 注:需对相应的业务进行处理,如:学号等
        /// </summary>
        /// <param name="newStudentView"></param>
        /// <param name="photoUrl"></param>
        void NewStudentEnterEdit(NewStudentView newStudentView, string photoUrl);

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="newStudentIDList"></param>
        /// <returns></returns>
        bool NewStudentEnterDelete(List<Guid?> newStudentIDList);

        /// <summary>
        /// 删除照片(单个删除)
        /// </summary>
        /// <param name="newStudentID"></param>
        void DeletePhoto(Guid? newStudentID);

        /// <summary>
        /// 删除照片(批量删除)
        /// </summary>
        /// <param name="newStudentIDs"></param>
        /// <returns></returns>
        bool PicDelete(List<Guid?> newStudentIDs);

        /// <summary>
        /// 取消分配
        /// </summary>
        /// <param name="newStudentIDList"></param>
        /// <returns></returns>
        string NewStudentEnterCancelAssignCollege(List<Guid?> newStudentIDList);

        /// <summary>
        /// 导入照片
        /// </summary>
        /// <param name="photoPaths"></param>
        /// <param name="importPicType"></param>
        /// <param name="inCount"></param>
        /// <param name="errCount"></param>
        /// <param name="errDataTable"></param>
        void NewStudentEnterPicImport(IList<string> photoPaths, string importPicType, out int? inCount, out int? errCount, out DataTable errDataTable);

        /// <summary>
        /// 导入标识
        /// </summary>
        /// <param name="cellheader"></param>
        /// <param name="inCount"></param>
        /// <param name="upCount"></param>
        /// <param name="errdataList"></param>
        /// <param name="errCount"></param>
        /// <param name="sourcePhysicalPath"></param>
        void NewStudentEnterDoubtImport(Dictionary<string, string> cellheader, out int? inCount, out int? upCount, out List<NewStudentView> errdataList, out int? errCount, string sourcePhysicalPath);

        /// <summary>
        /// 查询标识名单信息View
        /// </summary>
        /// <param name="configuretView"></param>
        /// <param name="campusID"></param>
        /// <param name="collegeID"></param>
        /// <param name="gradeID"></param>
        /// <param name="standardID"></param>
        /// <param name="educationID"></param>
        /// <param name="learningformID"></param>
        /// <param name="learnSystem"></param>
        /// <param name="isPhotoUrl"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        IGridResultSet<NewStudentView> GetNewStudentEnterDoubtViewGrid(ConfiguretView configuretView, Guid? campusID, Guid? collegeID, int? gradeID, int? standardID, int? educationID, int? learningformID, string learnSystem, int? isPhotoUrl, int pageIndex, int pageSize);

        /// <summary>
        /// 查询标识名单信息List
        /// </summary>
        /// <param name="configuretView"></param>
        /// <param name="campusID"></param>
        /// <param name="collegeID"></param>
        /// <param name="gradeID"></param>
        /// <param name="standardID"></param>
        /// <param name="educationID"></param>
        /// <param name="learningformID"></param>
        /// <param name="learnSystem"></param>
        /// <param name="isPhotoUrl"></param>
        /// <returns></returns>
        IList<NewStudentView> GetNewStudentEnterDoubtViewList(ConfiguretView configuretView, Guid? campusID, Guid? collegeID, int? gradeID, int? standardID, int? educationID, int? learningformID, string learnSystem, int? isPhotoUrl);

        /// <summary>
        /// 审核(确定)
        /// </summary>
        /// <param name="newStudentIDList"></param>
        /// <returns></returns>
        string NewStudentEnterDoubtApprove(List<Guid?> newStudentIDList);

        /// <summary>
        /// 初始化(班级信息、学号)
        /// </summary>
        /// <param name="newStudentIDList"></param>
        /// <returns></returns>
        string NewStudentEnterInit(List<Guid?> newStudentIDList);

        /// <summary>
        /// 手动分配班级和生成学号(此为默认规则,一对一的情况,初始学号为:班级编号+流水号,下一位学号为:对应的最大学号+1)
        /// 注:个性化配置
        /// </summary>
        /// <param name="newStudentIDList"></param>
        /// <param name="classmajorID"></param>
        /// <returns></returns>
        string NewStudentEnterAssignClass(List<Guid?> newStudentIDList, Guid? classmajorID);

        /// <summary>
        /// 自动分配班级和生成学号,一对一的情况
        /// 注:个性化配置
        /// </summary>
        /// <param name="newStudentIDList"></param>
        /// <returns></returns>
        string NewStudentEnterAutoAssignClass(List<Guid?> newStudentIDList);

        /// <summary>
        /// 提交(需判断是否已分班且生成学号,并对学生信息进行验证,如:考生号或准考证号唯一、学号唯一)
        /// 注:个性化配置
        /// </summary>
        /// <param name="newStudentIDList"></param>
        /// <returns></returns>
        string NewStudentEnterSubmit(List<Guid?> newStudentIDList);

    }
}