task-managment / src / server / project / application / project-service-definition.ts
project-service-definition.ts
Raw
import { UserId } from "@/server/user/domain/models";
import {
  Area,
  AreaId,
  Floor,
  FloorId,
  Project,
  ProjectDetail,
  ProjectEarningsResults,
  ProjectFilter,
  ProjectId,
  ProjectMaterials,
  ProjectQueryResuls,
  ProjectSummary,
} from "../domain/models";

export interface ProjectService {
  createProject(data: Project, userId: UserId): Promise<Project>;
  updateProject(data: Partial<Project>, userId: UserId): Promise<Project>;
  getProjects(filter: ProjectFilter): Promise<ProjectQueryResuls>;
  getProjectById(projectId: ProjectId): Promise<ProjectDetail>;
  searchProjects(filter: ProjectFilter): Promise<Partial<Project[]>>;
  getAllProjectMaterials(): Promise<ProjectMaterials[]>;
  getProjectSummary(filter: ProjectFilter): Promise<ProjectSummary[]>;
  getProjectEarnings(filter: ProjectFilter): Promise<ProjectEarningsResults>;
  createProjectArea(data: Area, userId: UserId): Promise<Area>;
  updateProjectArea(
    data: Partial<Area>,
    userId: UserId
  ): Promise<Partial<Area>>;
  deleteProjectArea(areaId: AreaId, userId: UserId): Promise<Area>;
  createProjectFloor(data: Floor, userId: UserId): Promise<Floor>;

  updateProjectFloor(
    data: Partial<Floor>,
    userId: UserId
  ): Promise<Partial<Floor>>;

  deleteProjectFloor(floorId: FloorId, userId: UserId): Promise<Partial<Floor>>;
  isFloorInProjectExist(floorName:string,projectId: ProjectId):Promise<boolean>
}