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>
}