attendence records, extra hours , rewards and punishment funnctionality have been added
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import '../../domain/models/attendance_login_request.dart';
|
||||
import '../../domain/models/attendance_logout_request.dart';
|
||||
import '../../domain/models/attendance_response_model.dart';
|
||||
import '../../domain/models/attendance_model.dart';
|
||||
import '../../domain/models/overtime_model.dart';
|
||||
import '../../domain/models/extra_payment_model.dart';
|
||||
import '../../domain/repositories/attendance_repository.dart';
|
||||
import '../datasources/attendance_remote_data_source.dart';
|
||||
|
||||
@@ -38,4 +41,94 @@ class AttendanceRepositoryImpl implements AttendanceRepository {
|
||||
logout: dto.logout,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<AttendanceModel>> getAttendanceRecords({
|
||||
required String employeeId,
|
||||
}) async {
|
||||
final dtos = await remoteDataSource.getAttendanceRecords(
|
||||
employeeId: employeeId,
|
||||
);
|
||||
|
||||
return dtos.map((dto) {
|
||||
int? hours;
|
||||
if (dto.login != null && dto.logout != null) {
|
||||
hours = dto.logout!.difference(dto.login!).inHours;
|
||||
}
|
||||
|
||||
return AttendanceModel(
|
||||
id: dto.id,
|
||||
employeeId: dto.employeeId,
|
||||
date: dto.createdAt ?? dto.login,
|
||||
loginTime: dto.login,
|
||||
logoutTime: dto.logout,
|
||||
workHours: hours,
|
||||
createdAt: dto.createdAt ?? dto.login,
|
||||
reason: dto.reason,
|
||||
isDeleted: dto.isDeleted,
|
||||
);
|
||||
}).toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<OvertimeModel>> getExtraHours({
|
||||
required String employeeId,
|
||||
}) async {
|
||||
final dtos = await remoteDataSource.getExtraHours(employeeId: employeeId);
|
||||
|
||||
return dtos
|
||||
.map(
|
||||
(dto) => OvertimeModel(
|
||||
id: dto.id,
|
||||
employeeId: dto.employeeId,
|
||||
date: dto.date,
|
||||
hours: dto.hours,
|
||||
hourlyRateAtTheTime: dto.hourlyRateAtTheTime,
|
||||
totalAmount: dto.hours * dto.hourlyRateAtTheTime,
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<ExtraPaymentModel>> getRewards({
|
||||
required String employeeId,
|
||||
}) async {
|
||||
final dtos = await remoteDataSource.getRewards(employeeId: employeeId);
|
||||
|
||||
return dtos
|
||||
.map(
|
||||
(dto) => ExtraPaymentModel(
|
||||
id: dto.id,
|
||||
employeeId: dto.employeeId,
|
||||
date: dto.date,
|
||||
amount: dto.amount,
|
||||
reason: dto.reason,
|
||||
note: dto.note,
|
||||
isPenalty: false,
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<ExtraPaymentModel>> getPunishments({
|
||||
required String employeeId,
|
||||
}) async {
|
||||
final dtos = await remoteDataSource.getPunishments(employeeId: employeeId);
|
||||
|
||||
return dtos
|
||||
.map(
|
||||
(dto) => ExtraPaymentModel(
|
||||
id: dto.id,
|
||||
employeeId: dto.employeeId,
|
||||
date: dto.date,
|
||||
amount: dto.amount,
|
||||
reason: dto.reason,
|
||||
note: dto.note,
|
||||
isPenalty: true,
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user