All files / src/domains/hr/attendance/schemas assignment.schema.ts

0% Statements 0/38
0% Branches 0/16
100% Functions 0/0
0% Lines 0/32

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108                                                                                                                                                                                                                       
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Schema as MongooseSchema } from 'mongoose';
 
@Schema({ timestamps: true, collection: 'employee_shift_assignments' })
export class EmployeeShiftAssignment extends Document {
  @Prop({ required: true, index: true })
  tenantId: string;
 
  @Prop({ required: true, index: true })
  employeeId: string;
 
  @Prop({ required: true, type: MongooseSchema.Types.ObjectId, ref: 'Shift' })
  shiftId: string;
 
  @Prop({ required: true })
  effectiveFrom: Date;
 
  @Prop({ default: null })
  effectiveTo: Date;
 
  @Prop()
  assignmentType: string; // Tenant, Branch, Department, Designation, Team, Employee
 
  @Prop()
  source: string; // Direct, Roster, Rotation, Default
 
  @Prop({ default: 'active' })
  status: string;
}
export const EmployeeShiftAssignmentSchema = SchemaFactory.createForClass(
  EmployeeShiftAssignment,
);
EmployeeShiftAssignmentSchema.index({
  tenantId: 1,
  employeeId: 1,
  effectiveFrom: -1,
});
 
@Schema({ timestamps: true, collection: 'employee_work_week_assignments' })
export class EmployeeWorkWeekAssignment extends Document {
  @Prop({ required: true, index: true })
  tenantId: string;
 
  @Prop({ required: true, index: true })
  employeeId: string;
 
  @Prop({
    required: true,
    type: MongooseSchema.Types.ObjectId,
    ref: 'WorkWeek',
  })
  workWeekId: string;
 
  @Prop({ required: true })
  effectiveFrom: Date;
 
  @Prop({ default: null })
  effectiveTo: Date;
 
  @Prop()
  assignmentType: string;
 
  @Prop({ default: 'active' })
  status: string;
}
export const EmployeeWorkWeekAssignmentSchema = SchemaFactory.createForClass(
  EmployeeWorkWeekAssignment,
);
EmployeeWorkWeekAssignmentSchema.index({
  tenantId: 1,
  employeeId: 1,
  effectiveFrom: -1,
});
 
@Schema({ timestamps: true, collection: 'holiday_calendar_assignments' })
export class HolidayCalendarAssignment extends Document {
  @Prop({ required: true, index: true })
  tenantId: string;
 
  @Prop({ required: true, index: true })
  assignmentTargetId: string; // Could be employeeId, branchId, etc.
 
  @Prop({ required: true })
  assignmentType: string; // Tenant, Branch, Employee
 
  @Prop({
    required: true,
    type: MongooseSchema.Types.ObjectId,
    ref: 'HolidayCalendar',
  })
  holidayCalendarId: string;
 
  @Prop({ required: true })
  year: number;
 
  @Prop({ default: 'active' })
  status: string;
}
export const HolidayCalendarAssignmentSchema = SchemaFactory.createForClass(
  HolidayCalendarAssignment,
);
HolidayCalendarAssignmentSchema.index({
  tenantId: 1,
  assignmentType: 1,
  assignmentTargetId: 1,
  year: 1,
});