This commit is contained in:
Mohammed Al-Samarraie
2026-01-18 19:52:10 +03:00
parent 79b53b6303
commit 33099c4497
19 changed files with 1036 additions and 40 deletions

View File

@@ -0,0 +1,59 @@
class AdvanceRequestModel {
final String employeeId;
final DateTime date;
final double amount;
final String reason;
AdvanceRequestModel({
required this.employeeId,
required this.date,
required this.amount,
required this.reason,
});
}
class AdvanceResponseModel {
final int statusCode;
final bool isSuccess;
final String? message;
final AdvanceDataModel? data;
AdvanceResponseModel({
required this.statusCode,
required this.isSuccess,
this.message,
this.data,
});
}
class AdvanceDataModel {
final String employeeId;
final String? employeeFullName;
final DateTime date;
final double amount;
final String? submittedBy;
final String? submittedByUser;
final String reason;
final int state;
final String id;
final DateTime? createdAt;
final DateTime? updatedAt;
final DateTime? deletedAt;
final bool? isDeleted;
AdvanceDataModel({
required this.employeeId,
this.employeeFullName,
required this.date,
required this.amount,
this.submittedBy,
this.submittedByUser,
required this.reason,
required this.state,
required this.id,
this.createdAt,
this.updatedAt,
this.deletedAt,
this.isDeleted,
});
}

View File

@@ -0,0 +1,31 @@
import 'advance_request_model.dart';
class AdvancesListResponseModel {
final int statusCode;
final bool isSuccess;
final String? message;
final AdvancesListDataModel? data;
AdvancesListResponseModel({
required this.statusCode,
required this.isSuccess,
this.message,
this.data,
});
}
class AdvancesListDataModel {
final List<AdvanceDataModel> items;
final int pageNumber;
final int pageSize;
final int totalCount;
final int totalPages;
AdvancesListDataModel({
required this.items,
required this.pageNumber,
required this.pageSize,
required this.totalCount,
required this.totalPages,
});
}

View File

@@ -0,0 +1,31 @@
import 'vacation_response_model.dart';
class VacationsListResponseModel {
final int statusCode;
final bool isSuccess;
final String? message;
final VacationsListDataModel? data;
VacationsListResponseModel({
required this.statusCode,
required this.isSuccess,
this.message,
this.data,
});
}
class VacationsListDataModel {
final List<VacationDataModel> items;
final int pageNumber;
final int pageSize;
final int totalCount;
final int totalPages;
VacationsListDataModel({
required this.items,
required this.pageNumber,
required this.pageSize,
required this.totalCount,
required this.totalPages,
});
}

View File

@@ -0,0 +1,11 @@
import 'package:dartz/dartz.dart';
import '../../core/error/failures.dart';
import '../models/advance_request_model.dart';
import '../models/advances_list_response_model.dart';
abstract class AdvanceRepository {
Future<Either<Failure, AdvanceResponseModel>> createAdvance(
AdvanceRequestModel request,
);
Future<Either<Failure, AdvancesListResponseModel>> getAdvances();
}

View File

@@ -3,10 +3,12 @@ import '../../core/error/failures.dart';
import '../models/vacation_request.dart';
import '../models/vacation_response_model.dart';
import '../models/vacation_type_model.dart';
import '../models/vacations_list_response_model.dart';
abstract class VacationRepository {
Future<Either<Failure, VacationResponseModel>> createVacation(
VacationRequest request,
);
Future<Either<Failure, VacationTypesResponseModel>> getVacationTypes();
Future<Either<Failure, VacationsListResponseModel>> getVacations();
}

View File

@@ -0,0 +1,14 @@
import 'package:dartz/dartz.dart';
import '../../core/error/failures.dart';
import '../models/advance_request_model.dart';
import '../repositories/advance_repository.dart';
class CreateAdvanceUseCase {
final AdvanceRepository repository;
CreateAdvanceUseCase({required this.repository});
Future<Either<Failure, AdvanceResponseModel>> call(AdvanceRequestModel request) {
return repository.createAdvance(request);
}
}

View File

@@ -0,0 +1,14 @@
import 'package:dartz/dartz.dart';
import '../../core/error/failures.dart';
import '../models/advances_list_response_model.dart';
import '../repositories/advance_repository.dart';
class GetAdvancesUseCase {
final AdvanceRepository repository;
GetAdvancesUseCase({required this.repository});
Future<Either<Failure, AdvancesListResponseModel>> call() {
return repository.getAdvances();
}
}

View File

@@ -0,0 +1,14 @@
import 'package:dartz/dartz.dart';
import '../../core/error/failures.dart';
import '../models/vacations_list_response_model.dart';
import '../repositories/vacation_repository.dart';
class GetVacationsUseCase {
final VacationRepository repository;
GetVacationsUseCase({required this.repository});
Future<Either<Failure, VacationsListResponseModel>> call() {
return repository.getVacations();
}
}