This commit is contained in:
Mohammed Al-Samarraie
2026-01-18 19:40:54 +03:00
parent 8adab4c4af
commit 79b53b6303
13 changed files with 771 additions and 94 deletions

View File

@@ -0,0 +1,15 @@
class VacationRequest {
final String employeeId;
final DateTime startDate;
final DateTime endDate;
final String reason;
final int type;
VacationRequest({
required this.employeeId,
required this.startDate,
required this.endDate,
required this.reason,
required this.type,
});
}

View File

@@ -0,0 +1,47 @@
class VacationResponseModel {
final int statusCode;
final bool isSuccess;
final String message;
final VacationDataModel? data;
VacationResponseModel({
required this.statusCode,
required this.isSuccess,
required this.message,
this.data,
});
}
class VacationDataModel {
final String employeeId;
final String? employeeFullName;
final DateTime startDate;
final DateTime endDate;
final String reason;
final String? submittedBy;
final String? submittedByUser;
final int state;
final int type;
final String id;
final DateTime? createdAt;
final DateTime? updatedAt;
final DateTime? deletedAt;
final bool? isDeleted;
VacationDataModel({
required this.employeeId,
this.employeeFullName,
required this.startDate,
required this.endDate,
required this.reason,
this.submittedBy,
this.submittedByUser,
required this.state,
required this.type,
required this.id,
this.createdAt,
this.updatedAt,
this.deletedAt,
this.isDeleted,
});
}

View File

@@ -0,0 +1,23 @@
class VacationTypeModel {
final int value;
final String name;
VacationTypeModel({
required this.value,
required this.name,
});
}
class VacationTypesResponseModel {
final int statusCode;
final bool isSuccess;
final String? message;
final List<VacationTypeModel> data;
VacationTypesResponseModel({
required this.statusCode,
required this.isSuccess,
this.message,
required this.data,
});
}

View File

@@ -0,0 +1,12 @@
import 'package:dartz/dartz.dart';
import '../../core/error/failures.dart';
import '../models/vacation_request.dart';
import '../models/vacation_response_model.dart';
import '../models/vacation_type_model.dart';
abstract class VacationRepository {
Future<Either<Failure, VacationResponseModel>> createVacation(
VacationRequest request,
);
Future<Either<Failure, VacationTypesResponseModel>> getVacationTypes();
}

View File

@@ -0,0 +1,15 @@
import 'package:dartz/dartz.dart';
import '../../core/error/failures.dart';
import '../models/vacation_request.dart';
import '../models/vacation_response_model.dart';
import '../repositories/vacation_repository.dart';
class CreateVacationUseCase {
final VacationRepository repository;
CreateVacationUseCase({required this.repository});
Future<Either<Failure, VacationResponseModel>> call(VacationRequest request) {
return repository.createVacation(request);
}
}

View File

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