task-managment / src / server / task / domain / models.ts
models.ts
Raw
import { ProjectStatus } from "@/helpers/validators"

export const priorityType=['baja','media','alta'] as const
export type PriorityType= typeof priorityType[number]
export const taskStatus=['no iniciada','en proceso','completada','revisada','cancelada','reabierta'] as const
export type TaskStatus = typeof taskStatus[number] | 'pendiente' | 'expirada'

export const projectStatus=['no iniciada','en proceso','completada','cancelada','reabierta'] as const
export type projectStatus = typeof projectStatus[number]

export interface Task {
  id: string;
  startDate: string;
  expireDate?: string;
  startedTime?: Date;
  endedTime?: Date;
  status?: TaskStatus;
  createdAt?: Date;
  comments: string;
  priority: PriorityType;
  updatedAt?: Date;
  floorName:string,
  projectId:string,
  areaId:string
  projectName:string,
  areaName:string
  userId:string
  user?:User
}

export interface WeeklyActivity {
  day: string; 
  count: number; 
}

export interface MonthlyActivity {
  compleatedTasks: number; 
  floors: number;
  projects: number; 
}


export interface TaskId{
  value:string
}
export interface FilterTasks {
    searchQuery?: string;
    status?: TaskStatus;
    statusFilter?: 'pendientes' | 'expiradas' | 'completada';
    range?:string
    onlyRecentModifiedTask?:boolean
    onlyUserTask?:boolean
    limit?:number
  }
  

// Interface para Project
export interface Project {
  id: number;
  name: string;
}

// Interface para Area
export interface Area {
  id: number;
  type: string;
}

// Interface para Floor
export interface Floor {
  id: number;
  name: string;
}

// Interface para User
export interface User {
  id: string;
  firstName: string;
  lastName: string;
}

// Interface para la estructura de la consulta de Task





export interface ProjectTaskQueryResult{
    id:string,
    name:string,
    status:ProjectStatus
    task:Task[]
}

export interface TasksByDate{
    startDate:string,
    tasks:Task[]
}