import { type ListFrontEndInterface } from '../CommonType'

export interface createSprintForm {
    sprintId: number
    sprintName: string
    departmentId: number
    sprintDescription: string
    sprintStartDate: string
    sprintEndDate: string
}

export interface User {
    userId: number
    userName: string
    emailAddress: string
    contactNo: string
    imageUrl: string
}

export interface GetSprintListInterfaceType {
    sprintId: number
    sprintName: string
    departmentId: number
    department: string
    sprintDescription: string
    sprintStartDate: string
    sprintEndDate: string
    completedTaskCount: number
    toDoTaskCount: number
    inProgressTaskCount: number
    sprintStatus: number
    sprintStatusName: string
}

export interface GetSprintTaskForminterfaceType {
    sprintId: number
    flag: number
    searchString: string
    pageNo: number
    pageSize: number
    assignedBy: number
    assignedTo: number
}

export interface createSprintFormTypeInterface {
    onSave: (data: createSprintForm, callBack: CallableFunction) => void
    handleModalClose: () => void
}

export interface TaskAttachment {
    taskAttachmentId: string
    taskId: string
    attachmentFile: string
    description: string
}

export interface TaskAttachmentinterface {
    TaskAttachmentList: TaskAttachment[]
    TaskAttachmentListCount: number
}
export interface TaskAttachmentDataTypeInterface extends TaskAttachment {
    key: React.Key
}
export interface TaskAttachmentPayloadInterface {
    data: TaskAttachment[]
    noOfRecords: number
}

export interface GetSprintTaskListInterfaceType {
    taskId: string
    taskNo: number
    taskName: string
    priorityName: string
    priorityColourCode: string
    taskTypeName: string
    sortOrder: number
    businessTypeName: string
    clientName: string
    serviceName: string
    description: string
    assignedByName: string
    assignedToName: string
    fromDate: string
    toDate: string
    daysCount: number
    daysColourCode: string
    status: string
    statusColourCode: string
    notifyToStatusChange: number
    subTaskViews: SubTaskView[]
    userStatusId: number
    taskFollowerViews: []
    isNewChatExist: number
    projectTierInfo: string
    projectStatusId: number
    projectStatusLbl: string
    userStatusLbl: string
    subTaskStatus: number
}

export interface SubTaskView {
    subTaskId: number
    subTaskNo: string
    subTaskName: string
    taskId: string
    taskName: string
    priorityName: string
    taskTypeName: string
    sortOrder: number
    description: string | null
    assignedByName: string
    assignedToName: string
    fromDate: string
    toDate: string
    daysCount: number
    daysColourCode: string
    status: string
    notifyToStatusChange: number
    projectTierInfo: string
}

export interface todoSatteInterface {
    userimageList: any
}

export interface hoursListStateInterface {
    hoursList: any
    hoursListCount: any
}

export interface TaskFollower {
    taskFollowerId: number
    taskId: number
    followerId: number
    followerName: string
    followerImageURL: string
}

export interface BacklogListInterFace {
    taskId: number
    taskNo: string
    taskName: string
    priorityName: string
    priorityColourCode: string
    taskTypeName: string
    sortOrder: number
    businessTypeName: string
    clientName: string
    serviceName: string
    description: string
    assignedByName: string
    assignedToName: string
    fromDate: string
    toDate: string
    daysCount: number
    daysColourCode: string
    status: string
    statusColourCode: string
    notifyToStatusChange: number
    subTaskViews: any[]
    taskFollowerViews: TaskFollower[]
    subTaskStatus: number
    isNewChatExist: number
    projectTierInfo: any
    projectStatusId: number
    userStatusId: number
    projectStatusLbl: string
    userStatusLbl: string
    projectId: number
    projectName: string
}

export interface BacklogListStateInterface {
    sprintList: GetSprintListInterfaceType[]
    sprintListCount: number
    sprintTaskList: GetSprintTaskListInterfaceType[]
    sprintBackLogList: BacklogListInterFace[]
    userList: ListFrontEndInterface[]
    sprintBackLogListCount: number
}

export interface TaskFollowerView {
    taskFollowerId: number
    taskId: string
    followerId: number
    followerName: string
    followerImageURL: string
}

export interface TaskFollowerRequestBody {
    taskFollowerId: number
    taskId: string
    followerIds: number[]
}
export interface TaskFollowerRequestBodysform {
    userList: ListFrontEndInterface[]
    follwersList: TaskFollowerRequestBody[]
    follwersListCount: number
}
export interface TaskFollowersRequestBodysform {
    follwersList: TaskFollowerRequestBody[]
    follwersListCount: number
}

export interface FirstPagePropss extends TaskFollowersRequestBodysform {
    userList: ListFrontEndInterface[]
}
export interface followersListDataTypeInterface
    extends TaskFollowerRequestBody {
    key: React.Key
}
export interface follwersPayloadInterface {
    data: TaskFollowerRequestBody[]
    noOfRecords: number
}

export interface todoForminterface extends todoSatteInterface {
    sprintTaskList: GetSprintTaskListInterfaceType[]
    currentStatus: string
}
