import { IClientEntity, IEntityCreateDto, IProjectEntity, IUserEntity, ProjectUserStatusEnum, UserRoleEnum } from "../../entities"; import { TimeUnitEnum } from "../../enums"; import { IProjectRevenueSplitData } from "./project_revenue_split.create.dto.interface"; export interface IProjectUserDto { id: number; role: UserRoleEnum; projectUserStatus?: ProjectUserStatusEnum; } export interface IProjectEntityDependent { users: IProjectUserDto[]; revenueSplitData: IProjectRevenueSplitData[]; } export type IProjectCreateExclude = "organizationId" | "billingRate" | "usageNotificationSentPercentage"; export interface IProjectHourlyRate { id: number; rate: number; unit: TimeUnitEnum.HOUR; } export interface IProjectFixedTypeRate { rate: number; unit: TimeUnitEnum; maxEstimatedHours?: number; extraHoursRate?: number; } export interface IProjectAdhocRate { rate: number; maxEstimatedHours?: number; extraHoursRate?: number; } export interface IProjectCreateDtoExtra { projectBillingRate: IProjectHourlyRate[] | IProjectFixedTypeRate | IProjectAdhocRate; } export interface IProjectCreateDto extends Omit, IProjectCreateExclude>, IProjectEntityDependent, IProjectCreateDtoExtra { } export interface IProjectCreateDtoValidationData { clientEntity: IClientEntity; userEntities: IUserEntity[]; }