|
| 1 | +package com.skia.lab.Components; |
| 2 | + |
| 3 | +import java.time.LocalDate; |
| 4 | +import java.time.LocalTime; |
| 5 | + |
| 6 | +import org.springframework.stereotype.Component; |
| 7 | + |
| 8 | +import com.github.javafaker.Faker; |
| 9 | +import com.skia.lab.models.usecase.AbsenceType; |
| 10 | +import com.skia.lab.models.usecase.Attendance; |
| 11 | +import com.skia.lab.models.usecase.Department; |
| 12 | +import com.skia.lab.models.usecase.Employee; |
| 13 | +import com.skia.lab.models.usecase.Hire; |
| 14 | +import com.skia.lab.repository.usecase.AttendanceRepository; |
| 15 | +import com.skia.lab.repository.usecase.DepartmentRepository; |
| 16 | +import com.skia.lab.repository.usecase.EmployeeRepository; |
| 17 | +import com.skia.lab.repository.usecase.HireRepository; |
| 18 | +import com.skia.lab.repository.usecase.PerformanceEvaluationRepository; |
| 19 | +import com.skia.lab.repository.usecase.TrainingRepository; |
| 20 | +import com.skia.lab.repository.usecase.WageRepository; |
| 21 | + |
| 22 | +@Component |
| 23 | +public class MockDataGenerator { |
| 24 | + private final EmployeeRepository employeeRepository; |
| 25 | + private final DepartmentRepository departmentRepository; |
| 26 | + private final HireRepository hireRepository; |
| 27 | + private final AttendanceRepository attendanceRepository; |
| 28 | + private final PerformanceEvaluationRepository performanceEvaluationRepository; |
| 29 | + private final TrainingRepository trainingRepository; |
| 30 | + private final WageRepository wageRepository; |
| 31 | + private final Faker faker; |
| 32 | + |
| 33 | + public MockDataGenerator(EmployeeRepository employeeRepository, |
| 34 | + DepartmentRepository departmentRepository, |
| 35 | + HireRepository hireRepository, |
| 36 | + AttendanceRepository attendanceRepository, |
| 37 | + PerformanceEvaluationRepository performanceEvaluationRepository, |
| 38 | + TrainingRepository trainingRepository, |
| 39 | + WageRepository wageRepository |
| 40 | + ) { |
| 41 | + this.employeeRepository = employeeRepository; |
| 42 | + this.departmentRepository = departmentRepository; |
| 43 | + this.hireRepository = hireRepository; |
| 44 | + this.attendanceRepository = attendanceRepository; |
| 45 | + this.performanceEvaluationRepository = performanceEvaluationRepository; |
| 46 | + this.trainingRepository = trainingRepository; |
| 47 | + this.wageRepository = wageRepository; |
| 48 | + this.faker = new Faker(); |
| 49 | + } |
| 50 | + |
| 51 | + public void generateMockData() { |
| 52 | + |
| 53 | + long eIdx = 0; |
| 54 | + |
| 55 | + if(departmentRepository.count() != 0) departmentRepository.deleteAll(); |
| 56 | + if(departmentRepository.count() == 0){ |
| 57 | + for (int i = 0; i < 5; i++) { |
| 58 | + var d = new Department(faker.animal().name()); |
| 59 | + d.setId((long)i); |
| 60 | + departmentRepository.save(d); |
| 61 | + } |
| 62 | + } |
| 63 | + |
| 64 | + |
| 65 | + if(employeeRepository.count() != 0) employeeRepository.deleteAll(); |
| 66 | + |
| 67 | + Employee[] employees = new Employee[40]; |
| 68 | + if(employeeRepository.count() == 0){ |
| 69 | + |
| 70 | + |
| 71 | + for (int i = 0; i < 40; i++) { |
| 72 | + employees[i] = new Employee(); |
| 73 | + employees[i].setFirstName(faker.name().firstName()); |
| 74 | + employees[i].setLastName(faker.name().lastName()); |
| 75 | + employees[i].setBirthDate(LocalDate.now()); |
| 76 | + employees[i].setAddress(faker.address().fullAddress()); |
| 77 | + employees[i].setPhoneNumber(faker.name().fullName()); |
| 78 | + employees[i].setEmail(faker.internet().emailAddress()); |
| 79 | + long a = 4; |
| 80 | + if(i>10 && i<20) a = 1; |
| 81 | + if(i>20 && i<30) a = 2; |
| 82 | + if(i>30 && i<40) a = 3; |
| 83 | + if(departmentRepository.existsById(a)) |
| 84 | + employees[i].setDepartment(departmentRepository.findById(a).get()); |
| 85 | + |
| 86 | + if(i>10) employees[i].setManager(employees[10]); |
| 87 | + if(i<10 && i >0) employees[i].setManager(employees[0]); |
| 88 | + |
| 89 | + // employee.setDepartment(i<10 ? department1 : department2); |
| 90 | + employeeRepository.save(employees[i]); |
| 91 | + if(i == 0) eIdx = employees[i].getId(); |
| 92 | + } |
| 93 | + } |
| 94 | + if(hireRepository.count() != 0) hireRepository.deleteAll(); |
| 95 | + if(hireRepository.count() == 0){ |
| 96 | + |
| 97 | + var e0 =employeeRepository.findById((long)eIdx); |
| 98 | + Hire hire0 = new Hire(LocalDate.now(), faker.name().title(), 50000, "commercio", e0.get()); |
| 99 | + hireRepository.save(hire0); |
| 100 | + for (int i = 1; i < 20; i++) { |
| 101 | + var e =employeeRepository.findById((long)employees[i].getId()); |
| 102 | + Hire hire = new Hire(LocalDate.now(), "Sales", 30000, "commercio", e.get()); |
| 103 | + |
| 104 | + hireRepository.save(hire); |
| 105 | + } |
| 106 | + |
| 107 | + } |
| 108 | + |
| 109 | + if(attendanceRepository.count() != 0) attendanceRepository.deleteAll(); |
| 110 | + if(attendanceRepository.count() == 0){ |
| 111 | + |
| 112 | + var e0 =employeeRepository.findById((long)eIdx); |
| 113 | + Attendance att0 = new Attendance(LocalDate.of(2023,2,1), LocalTime.of(8,0,0),LocalTime.of(18,0,0), null, e0.get()); |
| 114 | + attendanceRepository.save(att0); |
| 115 | + |
| 116 | + for (int i = 1; i < 28; i++){ |
| 117 | + |
| 118 | + Attendance attX = new Attendance(LocalDate.of(2023,1,i), LocalTime.of(8,0,0),LocalTime.of(18,0,0), null , e0.get()); |
| 119 | + attX.setAbsenceType(AbsenceType.sickness.ordinal()); |
| 120 | + attendanceRepository.save(attX); |
| 121 | + } |
| 122 | + |
| 123 | + for (int j = 1; j < employeeRepository.count(); j++) { |
| 124 | + var e =employeeRepository.findById((long)employees[j].getId()); |
| 125 | + |
| 126 | + for (int i = 1; i < 28; i++) { for (int k = 1; k < 12; k++) attendanceRepository.save( new Attendance(LocalDate.of(2023,k,i), LocalTime.of(8,0,0),LocalTime.of(18,0,0), null, e.get())); } |
| 127 | + |
| 128 | + } |
| 129 | + } |
| 130 | + |
| 131 | + } |
| 132 | +} |
0 commit comments