attendence records, extra hours , rewards and punishment funnctionality have been added
This commit is contained in:
21
lib/domain/models/attendance_model.dart
Normal file
21
lib/domain/models/attendance_model.dart
Normal file
@@ -0,0 +1,21 @@
|
||||
import 'finance_record.dart';
|
||||
|
||||
class AttendanceModel extends FinanceRecord {
|
||||
final DateTime? loginTime;
|
||||
final DateTime? logoutTime;
|
||||
final int? workHours;
|
||||
final DateTime? createdAt;
|
||||
final bool isDeleted;
|
||||
|
||||
AttendanceModel({
|
||||
required super.id,
|
||||
required super.employeeId,
|
||||
super.date,
|
||||
super.reason,
|
||||
this.loginTime,
|
||||
this.logoutTime,
|
||||
this.workHours,
|
||||
this.createdAt,
|
||||
required this.isDeleted,
|
||||
});
|
||||
}
|
||||
17
lib/domain/models/extra_payment_model.dart
Normal file
17
lib/domain/models/extra_payment_model.dart
Normal file
@@ -0,0 +1,17 @@
|
||||
import 'finance_record.dart';
|
||||
|
||||
class ExtraPaymentModel extends FinanceRecord {
|
||||
final double amount;
|
||||
final String? note;
|
||||
final bool isPenalty;
|
||||
|
||||
ExtraPaymentModel({
|
||||
required super.id,
|
||||
required super.employeeId,
|
||||
super.date,
|
||||
super.reason,
|
||||
required this.amount,
|
||||
this.note,
|
||||
required this.isPenalty,
|
||||
});
|
||||
}
|
||||
1
lib/domain/models/finance_category.dart
Normal file
1
lib/domain/models/finance_category.dart
Normal file
@@ -0,0 +1 @@
|
||||
enum FinanceCategory { attendance, overtime, bonus, penalty }
|
||||
13
lib/domain/models/finance_record.dart
Normal file
13
lib/domain/models/finance_record.dart
Normal file
@@ -0,0 +1,13 @@
|
||||
abstract class FinanceRecord {
|
||||
final String id;
|
||||
final String employeeId;
|
||||
final DateTime? date;
|
||||
final String? reason;
|
||||
|
||||
FinanceRecord({
|
||||
required this.id,
|
||||
required this.employeeId,
|
||||
this.date,
|
||||
this.reason,
|
||||
});
|
||||
}
|
||||
16
lib/domain/models/overtime_model.dart
Normal file
16
lib/domain/models/overtime_model.dart
Normal file
@@ -0,0 +1,16 @@
|
||||
import 'finance_record.dart';
|
||||
|
||||
class OvertimeModel extends FinanceRecord {
|
||||
final double hours;
|
||||
final double hourlyRateAtTheTime;
|
||||
final double totalAmount;
|
||||
|
||||
OvertimeModel({
|
||||
required super.id,
|
||||
required super.employeeId,
|
||||
super.date,
|
||||
required this.hours,
|
||||
required this.hourlyRateAtTheTime,
|
||||
required this.totalAmount,
|
||||
});
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
import '../models/attendance_login_request.dart';
|
||||
import '../models/attendance_logout_request.dart';
|
||||
import '../models/attendance_response_model.dart';
|
||||
import '../models/attendance_model.dart';
|
||||
import '../models/overtime_model.dart';
|
||||
import '../models/extra_payment_model.dart';
|
||||
|
||||
//in the following polymorphism is being used , a quich recap it is where th esame method but opperate in a different way
|
||||
|
||||
@@ -9,4 +12,11 @@ abstract class AttendanceRepository {
|
||||
Future<AttendanceResponseModel> login(AttendanceLoginRequest request);
|
||||
|
||||
Future<AttendanceResponseModel> logout(AttendanceLogoutRequest request);
|
||||
|
||||
Future<List<AttendanceModel>> getAttendanceRecords({
|
||||
required String employeeId,
|
||||
});
|
||||
Future<List<OvertimeModel>> getExtraHours({required String employeeId});
|
||||
Future<List<ExtraPaymentModel>> getRewards({required String employeeId});
|
||||
Future<List<ExtraPaymentModel>> getPunishments({required String employeeId});
|
||||
}
|
||||
|
||||
12
lib/domain/usecases/get_attendance_records_usecase.dart
Normal file
12
lib/domain/usecases/get_attendance_records_usecase.dart
Normal file
@@ -0,0 +1,12 @@
|
||||
import '../models/attendance_model.dart';
|
||||
import '../repositories/attendance_repository.dart';
|
||||
|
||||
class GetAttendanceRecordsUseCase {
|
||||
final AttendanceRepository repository;
|
||||
|
||||
GetAttendanceRecordsUseCase(this.repository);
|
||||
|
||||
Future<List<AttendanceModel>> execute({required String employeeId}) {
|
||||
return repository.getAttendanceRecords(employeeId: employeeId);
|
||||
}
|
||||
}
|
||||
12
lib/domain/usecases/get_extra_hours_usecase.dart
Normal file
12
lib/domain/usecases/get_extra_hours_usecase.dart
Normal file
@@ -0,0 +1,12 @@
|
||||
import '../models/overtime_model.dart';
|
||||
import '../repositories/attendance_repository.dart';
|
||||
|
||||
class GetExtraHoursUseCase {
|
||||
final AttendanceRepository repository;
|
||||
|
||||
GetExtraHoursUseCase({required this.repository});
|
||||
|
||||
Future<List<OvertimeModel>> execute({required String employeeId}) async {
|
||||
return await repository.getExtraHours(employeeId: employeeId);
|
||||
}
|
||||
}
|
||||
12
lib/domain/usecases/get_punishments_usecase.dart
Normal file
12
lib/domain/usecases/get_punishments_usecase.dart
Normal file
@@ -0,0 +1,12 @@
|
||||
import '../models/extra_payment_model.dart';
|
||||
import '../repositories/attendance_repository.dart';
|
||||
|
||||
class GetPunishmentsUseCase {
|
||||
final AttendanceRepository repository;
|
||||
|
||||
GetPunishmentsUseCase({required this.repository});
|
||||
|
||||
Future<List<ExtraPaymentModel>> execute({required String employeeId}) async {
|
||||
return await repository.getPunishments(employeeId: employeeId);
|
||||
}
|
||||
}
|
||||
12
lib/domain/usecases/get_rewards_usecase.dart
Normal file
12
lib/domain/usecases/get_rewards_usecase.dart
Normal file
@@ -0,0 +1,12 @@
|
||||
import '../models/extra_payment_model.dart';
|
||||
import '../repositories/attendance_repository.dart';
|
||||
|
||||
class GetRewardsUseCase {
|
||||
final AttendanceRepository repository;
|
||||
|
||||
GetRewardsUseCase({required this.repository});
|
||||
|
||||
Future<List<ExtraPaymentModel>> execute({required String employeeId}) async {
|
||||
return await repository.getRewards(employeeId: employeeId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user