chnages has been made for the request leave and request advance
This commit is contained in:
@@ -1,31 +1,57 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'dart:async';
|
||||
import '../models/leave_request.dart';
|
||||
import '../models/advance_request.dart';
|
||||
|
||||
class RequestService {
|
||||
// Singleton implementation
|
||||
static final RequestService _instance = RequestService._internal();
|
||||
factory RequestService() => _instance;
|
||||
RequestService._internal();
|
||||
|
||||
final List<LeaveRequest> _leaveRequests = [];
|
||||
final List<AdvanceRequest> _advanceRequests = [];
|
||||
|
||||
// Stream controllers to notify listeners of changes
|
||||
final _leaveRequestsController = StreamController<List<LeaveRequest>>.broadcast();
|
||||
final _advanceRequestsController = StreamController<List<AdvanceRequest>>.broadcast();
|
||||
|
||||
// Stream getters
|
||||
Stream<List<LeaveRequest>> get leaveRequestsStream => _leaveRequestsController.stream;
|
||||
Stream<List<AdvanceRequest>> get advanceRequestsStream => _advanceRequestsController.stream;
|
||||
|
||||
List<LeaveRequest> get leaveRequests => List.unmodifiable(_leaveRequests);
|
||||
List<AdvanceRequest> get advanceRequests => List.unmodifiable(_advanceRequests);
|
||||
// Get all leave requests as a Future
|
||||
Future<List<LeaveRequest>> getLeaveRequests() async {
|
||||
print("Getting ${_leaveRequests.length} leave requests");
|
||||
return List.from(_leaveRequests);
|
||||
}
|
||||
|
||||
// Get all advance requests as a Future
|
||||
Future<List<AdvanceRequest>> getAdvanceRequests() async {
|
||||
print("Getting ${_advanceRequests.length} advance requests");
|
||||
return List.from(_advanceRequests);
|
||||
}
|
||||
|
||||
// Add a new leave request
|
||||
Future<void> addLeaveRequest(LeaveRequest request) async {
|
||||
_leaveRequests.add(request);
|
||||
// In a real app, you would save this to a database or API
|
||||
print("Added leave request: ${request.id}, total: ${_leaveRequests.length}");
|
||||
// Notify listeners
|
||||
_leaveRequestsController.add(List.from(_leaveRequests));
|
||||
}
|
||||
|
||||
// Add a new advance request
|
||||
Future<void> addAdvanceRequest(AdvanceRequest request) async {
|
||||
_advanceRequests.add(request);
|
||||
// In a real app, you would save this to a database or API
|
||||
print("Added advance request: ${request.id}, total: ${_advanceRequests.length}");
|
||||
// Notify listeners
|
||||
_advanceRequestsController.add(List.from(_advanceRequests));
|
||||
}
|
||||
|
||||
// Update leave request status
|
||||
Future<void> updateLeaveRequestStatus(String id, String status) async {
|
||||
final index = _leaveRequests.indexWhere((request) => request.id == id);
|
||||
if (index != -1) {
|
||||
// Create a new request with the updated status
|
||||
final updatedRequest = LeaveRequest(
|
||||
id: _leaveRequests[index].id,
|
||||
leaveType: _leaveRequests[index].leaveType,
|
||||
@@ -36,22 +62,40 @@ class RequestService {
|
||||
toTime: _leaveRequests[index].toTime,
|
||||
reason: _leaveRequests[index].reason,
|
||||
requestDate: _leaveRequests[index].requestDate,
|
||||
status: status,
|
||||
status: status, // Updated status
|
||||
);
|
||||
|
||||
// Replace the old request with the updated one
|
||||
_leaveRequests[index] = updatedRequest;
|
||||
print("Updated leave request status: $id to $status");
|
||||
// Notify listeners
|
||||
_leaveRequestsController.add(List.from(_leaveRequests));
|
||||
}
|
||||
}
|
||||
|
||||
// Update advance request status
|
||||
Future<void> updateAdvanceRequestStatus(String id, String status) async {
|
||||
final index = _advanceRequests.indexWhere((request) => request.id == id);
|
||||
if (index != -1) {
|
||||
// Create a new request with the updated status
|
||||
final updatedRequest = AdvanceRequest(
|
||||
id: _advanceRequests[index].id,
|
||||
amount: _advanceRequests[index].amount,
|
||||
reason: _advanceRequests[index].reason,
|
||||
status: status,
|
||||
status: status, // Updated status
|
||||
);
|
||||
|
||||
// Replace the old request with the updated one
|
||||
_advanceRequests[index] = updatedRequest;
|
||||
print("Updated advance request status: $id to $status");
|
||||
// Notify listeners
|
||||
_advanceRequestsController.add(List.from(_advanceRequests));
|
||||
}
|
||||
}
|
||||
|
||||
// Dispose method to close streams
|
||||
void dispose() {
|
||||
_leaveRequestsController.close();
|
||||
_advanceRequestsController.close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user