Spaces:
Sleeping
Sleeping
| export type UserRole = | |
| | 'CEO' | |
| | 'COO' | |
| | 'Account Manager' | |
| | 'Project Manager' | |
| | 'Tech Lead' | |
| | 'Senior Developer' | |
| | 'Developer' | |
| | 'Testing Manager' | |
| | 'Senior Tester' | |
| | 'Tester' | |
| | 'HR Manager' | |
| | 'HR'; | |
| export interface User { | |
| id: string; | |
| name: string; | |
| email: string; | |
| role: UserRole; | |
| avatar?: string; | |
| } | |
| export type ProjectStatus = 'Completed' | 'Overdue' | 'In Progress'; | |
| export interface Project { | |
| id: string; | |
| name: string; | |
| description: string; | |
| status: ProjectStatus; | |
| progress: number; | |
| startDate: string; | |
| endDate: string; | |
| teamId?: string; | |
| leadId?: string; | |
| } | |
| export interface Team { | |
| id: number; | |
| name: string; | |
| description: string; | |
| } | |
| export interface TeamCreateRequest { | |
| id: number; | |
| name: string; | |
| description: string; | |
| } | |
| export interface TeamUpdateRequest { | |
| id: number; | |
| name: string; | |
| description: string; | |
| } | |
| export interface TeamMember { | |
| id: number; | |
| description: string; | |
| teamsId: number; | |
| employeeId: number; | |
| roleId: number; | |
| isActive?: string; | |
| } | |
| export interface TeamMemberCreateRequest { | |
| id: number; | |
| description: string; | |
| teamsId: number; | |
| employeeId: number; | |
| roleId: number; | |
| } | |
| export interface TeamMemberUpdateRequest { | |
| id: number; | |
| description: string; | |
| teamsId: number; | |
| employeeId: number; | |
| roleId: number; | |
| } | |
| export type IssuePriority = 'Low' | 'Medium' | 'High' | 'Critical'; | |
| export type IssueStatus = 'New' | 'In Progress' | 'In Review' | 'Done'; | |
| export type IssueType = 'Bug' | 'Feature' | 'Task' | 'Improvement'; | |
| export interface Issue { | |
| id: string; | |
| title: string; | |
| description: string; | |
| projectId: string; | |
| assigneeId?: string; | |
| reporterId: string; | |
| priority: IssuePriority; | |
| status: IssueStatus; | |
| type: IssueType; | |
| createdAt: string; | |
| updatedAt: string; | |
| } | |
| export interface Task { | |
| id: string; | |
| title: string; | |
| description: string; | |
| issueId?: string; | |
| assigneeId?: string; | |
| status: IssueStatus; | |
| priority: IssuePriority; | |
| dueDate?: string; | |
| createdAt: string; | |
| updatedAt: string; | |
| } | |
| export interface DashboardStats { | |
| projects: number; | |
| employees: number; | |
| tasks: number; | |
| clients: number; | |
| revenue: number; | |
| expenses: number; | |
| profit: number; | |
| completedTasks: number; | |
| pendingTasks: number; | |
| inProgressTasks: number; | |
| onHoldTasks: number; | |
| reviewTasks: number; | |
| } | |
| export interface ChartData { | |
| name: string; | |
| value: number; | |
| color?: string; | |
| } | |
| export interface ResponseData<T> { | |
| data: T; | |
| success: boolean; | |
| message?: string; | |
| } | |
| export interface LoginResponse { | |
| userId: number; | |
| email: string; | |
| firstName: string; | |
| lastName: string; | |
| roleId: number; | |
| roleName: string | null; | |
| token: string; | |
| employeeId: number; | |
| } | |
| export interface Employee { | |
| empCode: any; | |
| id: number; | |
| firstName: string; | |
| lastName: string; | |
| email: string; | |
| roleId: number; | |
| phone?: string; | |
| department?: string; | |
| position?: string; | |
| joiningDate?: string; | |
| profileImage?: string | null; | |
| address?: string; | |
| city?: string; | |
| state?: string; | |
| country?: string; | |
| postalCode?: string; | |
| managerId?: number | null; | |
| userId: number; | |
| reportingToId?: number | null; | |
| } | |
| export interface EmployeeRegistrationRequest { | |
| id: number; | |
| empCode: string; | |
| firstName: string; | |
| middleName: string; | |
| lastName: string; | |
| email: string; | |
| mobile: string; | |
| type: string; | |
| academics: string; | |
| financialData: string; | |
| description: string; | |
| passwordHash: string; | |
| roleId: number; | |
| status?: string; | |
| } | |
| export interface Role { | |
| roleId: number; | |
| roleName: string; | |
| description: string; | |
| } | |
| export interface RoleCreateRequest { | |
| roleName: string; | |
| description: string; | |
| } | |
| export interface RoleUpdateRequest { | |
| roleId: number; | |
| roleName: string; | |
| description: string; | |
| } | |
| export interface ProjectApi { | |
| id: number; | |
| projectName: string; | |
| projectCode: string; | |
| category: string; | |
| projectManager: string; | |
| client: string; | |
| startDate: string; | |
| endDate: string; | |
| description: string; | |
| teamId: number; | |
| taskStartDate?: string; | |
| taskEndDate?: string; | |
| status?: string; | |
| } | |
| export interface ProjectCreateRequest { | |
| projectName: string; | |
| projectCode: string; | |
| category: string; | |
| projectManager: string; | |
| client: string; | |
| startDate: string; | |
| endDate: string; | |
| description: string; | |
| teamId: number; | |
| } | |
| export interface ProjectUpdateRequest { | |
| id: number; | |
| projectName: string; | |
| projectCode: string; | |
| category: string; | |
| projectManager: string; | |
| client: string; | |
| startDate: string; | |
| endDate: string; | |
| description: string; | |
| teamId: number; | |
| } | |
| export interface Deliverable { | |
| id: number; | |
| name: string; | |
| description: string; | |
| deliveryDate: string; | |
| projectId: number; | |
| status?: string; | |
| startDate?: string; | |
| endDate?: string; | |
| } | |
| export interface DeliverableCreateRequest { | |
| name: string; | |
| description: string; | |
| deliveryDate: string; | |
| projectId: number; | |
| status?: string; | |
| startDate?: string; | |
| endDate?: string; | |
| } | |
| export interface DeliverableUpdateRequest { | |
| id: number; | |
| name: string; | |
| description: string; | |
| deliveryDate: string; | |
| projectId: number; | |
| status?: string; | |
| startDate?: string; | |
| endDate?: string; | |
| } | |
| export interface IssueApi { | |
| id: number; | |
| biCode: string; | |
| type: string; | |
| description: string; | |
| estimates: string; | |
| esUnit: number; | |
| priority: string; | |
| severity: string; | |
| reportedBy: number; | |
| assignedTo: number; | |
| remainingHr: number; | |
| title: string; | |
| projectId: number; | |
| deliverablesId: number; | |
| status?: string; | |
| startDate?: string; | |
| endDate?: string; | |
| } | |
| export interface IssueCreateRequest { | |
| biCode: string; | |
| type: string; | |
| description: string; | |
| estimates: string; | |
| esUnit: number; | |
| priority: string; | |
| severity: string; | |
| reportedBy: number; | |
| assignedTo: number; | |
| remainingHr: number; | |
| title: string; | |
| projectId: number; | |
| deliverablesId: number; | |
| status?: string; | |
| startDate?: string; | |
| endDate?: string; | |
| } | |
| export interface IssueUpdateRequest { | |
| id: number; | |
| biCode: string; | |
| type: string; | |
| description: string; | |
| estimates: string; | |
| esUnit: number; | |
| priority: string; | |
| severity: string; | |
| reportedBy: number; | |
| assignedTo: number; | |
| remainingHr: number; | |
| title: string; | |
| projectId: number; | |
| deliverablesId: number; | |
| status?: string; | |
| startDate?: string; | |
| endDate?: string; | |
| } | |
| export interface ProjectTeamApi { | |
| id: number; | |
| description: string | null; | |
| teamsId: number; | |
| projectId: number; | |
| } | |
| export interface Permission { | |
| permissionId: number; | |
| permissionName: string; | |
| description: string; | |
| } | |
| export interface RolePermission { | |
| rolePermissionID: number; | |
| roleId: number; | |
| permissionId: number; | |
| } | |
| export interface RolePermissionCreateRequest { | |
| rolePermissionID: number; | |
| roleId: number; | |
| permissionId: number; | |
| } | |
| export interface Feature { | |
| featureId: number; | |
| featureName: string; | |
| description?: string; | |
| category?: string; | |
| isActive?: boolean; | |
| } | |
| export interface FeatureCreateRequest { | |
| featureId: number; | |
| featureName: string; | |
| description?: string; | |
| category?: string; | |
| isActive?: boolean; | |
| } | |
| export interface FeatureUpdateRequest { | |
| featureId: number; | |
| featureName: string; | |
| description?: string; | |
| category?: string; | |
| isActive?: boolean; | |
| } | |
| export interface RoleFeature { | |
| roleFeatureId: number; | |
| roleId: number; | |
| featureId: number; | |
| permissionIds: number[]; | |
| } | |
| export interface RoleFeatureCreateRequest { | |
| roleFeatureId: number; | |
| roleId: number; | |
| featureId: number; | |
| permissionIds: number[]; | |
| } | |
| export interface RoleFeatureUpdateRequest { | |
| roleFeatureId: number; | |
| roleId: number; | |
| featureId: number; | |
| permissionIds: number[]; | |
| } | |
| // Attendance types | |
| export interface AttendanceRecord { | |
| id: number; | |
| employeeId: number; | |
| date: string; | |
| inTime: string | null; | |
| outTime: string | null; | |
| status: 'Present' | 'Absent' | 'Half Day' | 'Leave'; | |
| comments?: string; | |
| } | |
| export interface AttendanceUploadRequest { | |
| month: string; | |
| year: number; | |
| records: AttendanceRecord[]; | |
| } | |
| export interface AttendanceResponse { | |
| success: boolean; | |
| message: string; | |
| data: AttendanceRecord[]; | |
| } | |
| export type LeaveStatus = 'Pending' | 'Approved' | 'Rejected' | 'Cancelled'; | |
| export type LeaveType = | |
| | 'Annual' | |
| | 'Sick' | |
| | 'Personal' | |
| | 'Unpaid' | |
| | 'Maternity' | |
| | 'Paternity' | |
| | 'Bereavement' | |
| | 'Compensatory' | |
| | 'Half Day' | |
| | 'Other'; | |
| export interface Leave { | |
| id: number; | |
| employeeId: number; | |
| leaveMasterId?: number; | |
| startDate: string; | |
| endDate: string; | |
| reason: string; | |
| type: LeaveType; | |
| status: LeaveStatus; | |
| appliedOn: string; | |
| approvedById?: number; | |
| approvedOn?: string; | |
| actionDate?: string; | |
| comments?: string; | |
| documents?: string; | |
| halfDay?: boolean; | |
| workingDays?: number; | |
| compOff?: boolean; | |
| updatedByName?: string; | |
| } | |
| export interface LeaveCreateRequest { | |
| id?: number; | |
| employeeId: number; | |
| leaveMasterId?: number; | |
| startDate: string; | |
| endDate: string; | |
| reason: string; | |
| type: LeaveType; | |
| status?: LeaveStatus; | |
| appliedOn?: string; | |
| comments?: string; | |
| documents?: string; | |
| halfDay?: boolean; | |
| halfDayPortion?: 'first' | 'second'; | |
| workingDays?: number; | |
| compOff?: boolean; | |
| } | |
| export interface LeaveUpdateRequest { | |
| id: number; | |
| employeeId: number; | |
| leaveMasterId?: number; | |
| startDate: string; | |
| endDate: string; | |
| reason: string; | |
| type: LeaveType; | |
| status: LeaveStatus; | |
| appliedOn: string; | |
| approvedById?: number; | |
| approvedOn?: string; | |
| actionDate?: string; | |
| comments?: string; | |
| documents?: string; | |
| halfDay?: boolean; | |
| halfDayPortion?: 'first' | 'second'; | |
| workingDays?: number; | |
| compOff?: boolean; | |
| } | |
| export interface LeaveStatusUpdateRequest { | |
| id: number; | |
| status: LeaveStatus; | |
| approvedById: number; | |
| approverId?: number; | |
| comments?: string; | |
| actionDate: string; | |
| } | |
| export interface LeaveBalance { | |
| id: number; | |
| employeeId: number; | |
| year: number; | |
| leavesMasterId: number; | |
| allocated: number; | |
| used: number; | |
| pending: number; | |
| carryForward: number; | |
| leaveType?: string; | |
| createdBy?: number; | |
| createdAt?: string; | |
| createdByName?: string; | |
| updatedBy?: number; | |
| updatedAt?: string; | |
| updatedByName?: string; | |
| } | |
| export interface LeaveMaster { | |
| id: number; | |
| leaveType: string; | |
| description: string; | |
| defaultDays: number; | |
| carryForwardLimit: number; | |
| isActive: boolean; | |
| maxConsecutiveDays?: number; | |
| minDaysBeforeApply: number; | |
| requiresApproval: boolean; | |
| requiresDocumentation: boolean; | |
| applyToRoles: string; // Comma-separated list of role IDs | |
| createdAt: string; | |
| updatedAt: string; | |
| } | |
| export interface LeaveMasterCreateRequest { | |
| leaveType: string; | |
| description: string; | |
| defaultDays: number; | |
| carryForwardLimit: number; | |
| isActive: boolean; | |
| maxConsecutiveDays?: number; | |
| minDaysBeforeApply: number; | |
| requiresApproval: boolean; | |
| requiresDocumentation: boolean; | |
| applyToRoles: string; | |
| } | |
| export interface LeaveMasterUpdateRequest extends LeaveMasterCreateRequest { | |
| id: number; | |
| } | |
| export interface LeaveCalendarEvent { | |
| id: string; | |
| title: string; | |
| start: string; | |
| end: string; | |
| allDay: boolean; | |
| employeeId: number; | |
| employeeName: string; | |
| leaveType: LeaveType; | |
| status: LeaveStatus; | |
| } | |
| // Add a utility function to map API responses that might have different property names | |
| export function mapApiProject(apiProject: any): ProjectApi { | |
| // Robust status field detection | |
| // Handle various possible field names and normalize null/undefined to empty string | |
| const apiStatus = apiProject.status ?? apiProject.projectStatus ?? apiProject.Status ?? apiProject.ProjectStatus ?? ''; | |
| return { | |
| id: apiProject.id, | |
| projectName: apiProject.projectName || apiProject.name || `Project #${apiProject.id}`, | |
| projectCode: apiProject.projectCode || apiProject.code || '', | |
| category: apiProject.category || '', | |
| projectManager: apiProject.projectManager || '', | |
| client: apiProject.client || '', | |
| startDate: apiProject.startDate || '', | |
| endDate: apiProject.endDate || '', | |
| description: apiProject.description || '', | |
| teamId: apiProject.teamId || 0, | |
| taskStartDate: apiProject.taskStartDate || apiProject.TaskStartDate || '', | |
| taskEndDate: apiProject.taskEndDate || apiProject.TaskEndDate || '', | |
| status: (apiStatus !== null && apiStatus !== undefined) ? String(apiStatus) : '', | |
| }; | |
| } | |
| // Add a utility function to map API issues with different property names | |
| export function mapApiIssue(apiIssue: any): IssueApi { | |
| if (!apiIssue) { | |
| console.warn('Received null or undefined apiIssue object'); | |
| return { | |
| id: 0, | |
| biCode: '', | |
| type: 'Task', | |
| description: '', | |
| estimates: '', | |
| esUnit: 0, | |
| priority: 'Medium', | |
| severity: 'Minor', | |
| reportedBy: 0, | |
| assignedTo: 0, | |
| remainingHr: 0, | |
| title: '', | |
| projectId: 0, | |
| deliverablesId: 0, | |
| status: 'New' | |
| }; | |
| } | |
| console.log(`Mapping issue ID=${apiIssue.id}, title=${apiIssue.title || 'Untitled'}`); | |
| // Check for project ID in various formats | |
| let projectId = 0; | |
| if (apiIssue.projectId !== undefined && apiIssue.projectId !== null) { | |
| projectId = typeof apiIssue.projectId === 'string' | |
| ? parseInt(apiIssue.projectId, 10) | |
| : apiIssue.projectId; | |
| } else if (apiIssue.project_id !== undefined && apiIssue.project_id !== null) { | |
| projectId = typeof apiIssue.project_id === 'string' | |
| ? parseInt(apiIssue.project_id, 10) | |
| : apiIssue.project_id; | |
| } else if (apiIssue.project && apiIssue.project.id) { | |
| projectId = typeof apiIssue.project.id === 'string' | |
| ? parseInt(apiIssue.project.id, 10) | |
| : apiIssue.project.id; | |
| } | |
| // Check for deliverable ID in various formats | |
| let deliverableId = 0; | |
| const possibleDeliverableProps = ['deliverablesId', 'deliverableId', 'deliverable_id', 'deliverableID', 'deliverable_Id']; | |
| for (const prop of possibleDeliverableProps) { | |
| if (apiIssue[prop] !== undefined && apiIssue[prop] !== null) { | |
| // Convert to number if it's a string | |
| const value = typeof apiIssue[prop] === 'string' | |
| ? parseInt(apiIssue[prop], 10) | |
| : apiIssue[prop]; | |
| if (!isNaN(value)) { | |
| deliverableId = value; | |
| console.log(`Found deliverable ID ${deliverableId} in property ${prop} for issue ID=${apiIssue.id}`); | |
| break; | |
| } | |
| } | |
| } | |
| // Check if issue has a deliverable object with an id property | |
| if (deliverableId === 0 && apiIssue.deliverable) { | |
| if (typeof apiIssue.deliverable === 'number') { | |
| deliverableId = apiIssue.deliverable; | |
| console.log(`Found deliverable ID ${deliverableId} as direct number value for issue ID=${apiIssue.id}`); | |
| } else if (apiIssue.deliverable.id) { | |
| deliverableId = typeof apiIssue.deliverable.id === 'string' | |
| ? parseInt(apiIssue.deliverable.id, 10) | |
| : apiIssue.deliverable.id; | |
| console.log(`Found deliverable ID ${deliverableId} in nested deliverable.id property for issue ID=${apiIssue.id}`); | |
| } | |
| } | |
| // Get status from various possible fields | |
| let status = apiIssue.status || 'New'; | |
| if (!status && apiIssue.issueStatus) { | |
| status = apiIssue.issueStatus; | |
| } else if (!status && apiIssue.state) { | |
| status = apiIssue.state; | |
| } | |
| return { | |
| id: apiIssue.id || 0, | |
| biCode: apiIssue.biCode || apiIssue.code || '', | |
| type: apiIssue.type || apiIssue.issueType || 'Task', | |
| description: apiIssue.description || '', | |
| estimates: apiIssue.estimates || apiIssue.estimatedTime || '', | |
| esUnit: apiIssue.esUnit || apiIssue.estimationUnit || 0, | |
| priority: apiIssue.priority || 'Medium', | |
| severity: apiIssue.severity || 'Minor', | |
| reportedBy: apiIssue.reportedBy || apiIssue.reporter || 0, | |
| assignedTo: apiIssue.assignedTo || apiIssue.assignee || 0, | |
| remainingHr: apiIssue.remainingHr || apiIssue.remainingHours || 0, | |
| title: apiIssue.title || apiIssue.summary || '', | |
| projectId: projectId, | |
| deliverablesId: deliverableId, | |
| status: status, | |
| startDate: apiIssue.startDate || '', | |
| endDate: apiIssue.endDate || '' | |
| }; | |
| } | |
| export interface Todo { | |
| id: number; | |
| title: string; | |
| description: string; | |
| status: 'Pending' | 'In Progress' | 'Completed'; | |
| priority: 'Low' | 'Medium' | 'High'; | |
| dueDate: string; | |
| assigneeId?: number; | |
| projectId?: number; | |
| createdAt: string; | |
| updatedAt: string; | |
| } | |
| export interface TodoCreateRequest { | |
| title: string; | |
| description: string; | |
| status: 'Pending' | 'In Progress' | 'Completed'; | |
| priority: 'Low' | 'Medium' | 'High'; | |
| dueDate: string; | |
| assigneeId?: number; | |
| projectId?: number; | |
| } | |
| export interface TodoUpdateRequest { | |
| id: number; | |
| title: string; | |
| description: string; | |
| status: 'Pending' | 'In Progress' | 'Completed'; | |
| priority: 'Low' | 'Medium' | 'High'; | |
| dueDate: string; | |
| assigneeId?: number; | |
| projectId?: number; | |
| } | |
| export interface Holiday { | |
| id: number; | |
| name: string; | |
| date: string; | |
| description: string; | |
| isRecurring: boolean; | |
| appliesTo: string; | |
| } | |
| export interface HolidayCreateRequest { | |
| id?: number; | |
| name: string; | |
| date: string; | |
| description: string; | |
| isRecurring: boolean; | |
| appliesTo: string; | |
| } | |
| export interface HolidayUpdateRequest { | |
| id: number; | |
| name: string; | |
| date: string; | |
| description: string; | |
| isRecurring: boolean; | |
| appliesTo: string; | |
| } | |
| // Appraisal Module Types | |
| export interface AppraisalCycle { | |
| cycleId: number; | |
| name: string; | |
| startDate: string; | |
| endDate: string; | |
| } | |
| export interface AppraisalCycleCreateRequest { | |
| name: string; | |
| startDate: string; | |
| endDate: string; | |
| } | |
| export interface AppraisalCycleUpdateRequest { | |
| cycleId: number; | |
| name: string; | |
| startDate: string; | |
| endDate: string; | |
| } | |
| export interface Appraisal { | |
| appraisalId: number; | |
| employeeId: number; | |
| appraiserId: number; | |
| cycleId: number; | |
| dateOfAppraisal: string; | |
| place: string; | |
| status: 'Draft' | 'SelfSubmitted' | 'ManagerReviewed' | 'Completed'; | |
| } | |
| export interface AppraisalCreateRequest { | |
| employeeId: number; | |
| appraiserId: number; | |
| cycleId: number; | |
| dateOfAppraisal: string; | |
| place: string; | |
| } | |
| export interface AppraisalUpdateRequest { | |
| appraisalId: number; | |
| employeeId: number; | |
| appraiserId: number; | |
| cycleId: number; | |
| dateOfAppraisal: string; | |
| place: string; | |
| status: 'Draft' | 'SelfSubmitted' | 'ManagerReviewed' | 'Completed'; | |
| } | |
| export interface AssessmentArea { | |
| areaId: number; | |
| title: string; | |
| } | |
| export interface AssessmentAreaCreateRequest { | |
| title: string; | |
| } | |
| export interface AssessmentAreaUpdateRequest { | |
| areaId: number; | |
| title: string; | |
| } | |
| export interface RoleAssessmentQuestion { | |
| questionId: number; | |
| roleId: number; | |
| areaId: number; | |
| questionText: string; | |
| } | |
| export interface RoleAssessmentQuestionCreateRequest { | |
| roleId: number; | |
| areaId: number; | |
| questionText: string; | |
| } | |
| export interface RoleAssessmentQuestionUpdateRequest { | |
| questionId: number; | |
| roleId: number; | |
| areaId: number; | |
| questionText: string; | |
| } | |
| export interface AssessmentAnswer { | |
| answerId: number; | |
| appraisalId: number; | |
| questionId: number; | |
| selfRemarks: string; | |
| appraiserRemarks: string; | |
| createdBy?: number; | |
| createdAt?: string; | |
| createdByName?: string; | |
| updatedBy?: number; | |
| updatedAt?: string; | |
| updatedByName?: string; | |
| } | |
| export interface AssessmentAnswerCreateRequest { | |
| appraisalId: number; | |
| questionId: number; | |
| selfRemarks: string; | |
| appraiserRemarks?: string; | |
| createdBy?: number; | |
| createdAt?: string; | |
| createdByName?: string; | |
| updatedBy?: number; | |
| updatedAt?: string; | |
| updatedByName?: string; | |
| } | |
| export interface AssessmentAnswerUpdateRequest { | |
| answerId: number; | |
| appraisalId: number; | |
| questionId: number; | |
| selfRemarks: string; | |
| appraiserRemarks: string; | |
| updatedBy?: number; | |
| updatedAt?: string; | |
| updatedByName?: string; | |
| } | |
| export type CompetencyCategory = 'Core' | 'Technical' | 'Leadership' | 'Communication' | 'Teamwork'; | |
| export interface Competency { | |
| competencyId: number; | |
| title: string; | |
| weightage: number; | |
| category: CompetencyCategory; | |
| } | |
| export interface CompetencyCreateRequest { | |
| title: string; | |
| weightage: number; | |
| category: CompetencyCategory; | |
| } | |
| export interface CompetencyUpdateRequest { | |
| competencyId: number; | |
| title: string; | |
| weightage: number; | |
| category: CompetencyCategory; | |
| } | |
| export interface CompetencyIndicator { | |
| indicatorId: number; | |
| competencyId: number; | |
| indicatorText: string; | |
| } | |
| export interface CompetencyIndicatorCreateRequest { | |
| competencyId: number; | |
| indicatorText: string; | |
| } | |
| export interface CompetencyIndicatorUpdateRequest { | |
| indicatorId: number; | |
| competencyId: number; | |
| indicatorText: string; | |
| } | |
| export interface CompetencyRating { | |
| ratingId: number; | |
| appraisalId: number; | |
| indicatorId: number; | |
| selfRating: number; | |
| appraiserRating: number; | |
| weightedScore: number; | |
| appraiserRemark: string; | |
| } | |
| export interface CompetencyRatingCreateRequest { | |
| appraisalId: number; | |
| indicatorId: number; | |
| selfRating: number; | |
| appraiserRating?: number; | |
| weightedScore?: number; | |
| appraiserRemark?: string; | |
| } | |
| export interface CompetencyRatingUpdateRequest { | |
| ratingId: number; | |
| appraisalId: number; | |
| indicatorId: number; | |
| selfRating: number; | |
| appraiserRating: number; | |
| weightedScore: number; | |
| appraiserRemark: string; | |
| } | |
| export interface TrainingNeed { | |
| trainingId: number; | |
| appraisalId: number; | |
| needDescription: string; | |
| } | |
| export interface TrainingNeedCreateRequest { | |
| appraisalId: number; | |
| needDescription: string; | |
| } | |
| export interface TrainingNeedUpdateRequest { | |
| trainingId: number; | |
| appraisalId: number; | |
| needDescription: string; | |
| } | |
| export interface HrRemark { | |
| hrRemarkId: number; | |
| appraisalId: number; | |
| remarks: string; | |
| } | |
| export interface HrRemarkCreateRequest { | |
| appraisalId: number; | |
| remarks: string; | |
| } | |
| export interface HrRemarkUpdateRequest { | |
| hrRemarkId: number; | |
| appraisalId: number; | |
| remarks: string; | |
| } | |
| // Meeting Room Booking Types | |
| export interface MeetingRoom { | |
| id: number; | |
| name: string; | |
| capacity: number; | |
| location: string; | |
| features: string[]; | |
| isAvailable: boolean; | |
| description?: string; | |
| imageUrl?: string; | |
| } | |
| export interface MeetingRoomCreateRequest { | |
| name: string; | |
| capacity: number; | |
| location: string; | |
| features: string[]; | |
| isAvailable: boolean; | |
| description?: string; | |
| imageUrl?: string; | |
| } | |
| export interface MeetingRoomUpdateRequest { | |
| id: number; | |
| name?: string; | |
| capacity?: number; | |
| location?: string; | |
| features?: string[]; | |
| isAvailable?: boolean; | |
| description?: string; | |
| imageUrl?: string; | |
| } | |
| export interface RoomBooking { | |
| id: number; | |
| roomId: number; | |
| roomName: string; | |
| employeeId: number; | |
| employeeName: string; | |
| title: string; | |
| startTime: string; | |
| endTime: string; | |
| attendees: number[]; | |
| bookingAttendees?: string; | |
| description?: string; | |
| status: string; | |
| createdAt: string; | |
| updatedAt: string; | |
| } | |
| export interface RoomBookingCreateRequest { | |
| roomId: number; | |
| roomName?: string; | |
| employeeId: number; | |
| employeeName?: string; | |
| title: string; | |
| startTime: string; | |
| endTime: string; | |
| attendees: number[]; | |
| description?: string; | |
| status?: 'pending' | 'approved' | 'rejected' | 'cancelled'; | |
| createdAt?: string; | |
| updatedAt?: string; | |
| } | |
| export interface RoomBookingUpdateRequest { | |
| id: number; | |
| roomId?: number; | |
| title?: string; | |
| startTime?: string; | |
| endTime?: string; | |
| attendees?: number[]; | |
| description?: string; | |
| status?: 'pending' | 'approved' | 'rejected' | 'cancelled'; | |
| } | |
| // Communication Trail Types | |
| export interface Communication { | |
| communicationId: number; | |
| communicationDate: string; | |
| topic: string; | |
| details: string; | |
| decisionMade: string; | |
| mode: string; | |
| participants: string; | |
| projectId?: number | null; | |
| createdBy: number | null; | |
| createdAt: string | null; | |
| createdByName: string | null; | |
| updatedBy: number | null; | |
| updatedAt: string | null; | |
| updatedByName: string | null; | |
| } | |
| export interface CommunicationCreateRequest { | |
| communicationId?: number; | |
| communicationDate: string; | |
| topic: string; | |
| details: string; | |
| decisionMade: string; | |
| mode: string; | |
| participants: string; | |
| projectId?: number | null; | |
| } | |
| export interface CommunicationUpdateRequest { | |
| communicationId: number; | |
| communicationDate: string; | |
| topic: string; | |
| details: string; | |
| decisionMade: string; | |
| mode: string; | |
| participants: string; | |
| projectId?: number | null; | |
| } | |
| export interface ManagementRemark { | |
| id: number; | |
| appraisalId: number; | |
| designation: string; | |
| remarks: string; | |
| createdBy?: number | null; | |
| createdAt?: string | null; | |
| createdByName?: string | null; | |
| updatedBy?: number | null; | |
| updatedAt?: string | null; | |
| updatedByName?: string | null; | |
| } | |
| export interface ManagementRemarkCreateRequest { | |
| appraisalId: number; | |
| designation: string; | |
| remarks: string; | |
| } | |
| export interface ManagementRemarkUpdateRequest { | |
| id: number; | |
| appraisalId: number; | |
| designation: string; | |
| remarks: string; | |
| } | |
| export interface MaintenanceAmcDate { | |
| maintenanceId: number; | |
| projectId: number; | |
| maintenanceType: string; | |
| startDate: string; | |
| endDate: string; | |
| notes: string; | |
| createdBy: number | null; | |
| createdAt: string; | |
| createdByName: string | null; | |
| updatedBy: number; | |
| updatedAt: string; | |
| updatedByName: string | null; | |
| } | |
| export interface MaintenanceAmcDateCreateRequest { | |
| maintenanceId?: number; | |
| projectId: number; | |
| maintenanceType: string; | |
| startDate: string; | |
| endDate: string; | |
| notes: string; | |
| } | |
| export interface MaintenanceAmcDateUpdateRequest { | |
| maintenanceId: number; | |
| projectId: number; | |
| maintenanceType: string; | |
| startDate: string; | |
| endDate: string; | |
| notes: string; | |
| } | |
| export interface ReleaseDate { | |
| releaseId: number; | |
| projectId: number; | |
| releaseName: string; | |
| releaseDateValue: string; | |
| description: string; | |
| createdBy: number | null; | |
| createdAt: string; | |
| createdByName: string | null; | |
| updatedBy: number; | |
| updatedAt: string; | |
| updatedByName: string | null; | |
| } | |
| export interface ReleaseDateCreateRequest { | |
| releaseId?: number; | |
| projectId: number; | |
| releaseName: string; | |
| releaseDateValue: string; | |
| description: string; | |
| } | |
| export interface ReleaseDateUpdateRequest { | |
| releaseId: number; | |
| projectId: number; | |
| releaseName: string; | |
| releaseDateValue: string; | |
| description: string; | |
| } | |
| export interface EmployeeProjectDetail { | |
| id: number; | |
| employeeId: number; | |
| projectName: string; | |
| clientCompany: string; | |
| startDate: string; | |
| endDate: string; | |
| technologiesUsed: string; | |
| role: string; | |
| responsibilities: string; | |
| projectDetails: string; | |
| sector: string; | |
| createdBy?: number | null; | |
| createdAt?: string; | |
| createdByName?: string | null; | |
| updatedBy?: number | null; | |
| updatedAt?: string; | |
| updatedByName?: string | null; | |
| } | |
| // Asset Management Module Types | |
| export * from './asset-management'; | |
| // Asset Request Management Module Types | |
| export * from './asset-request'; | |