You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
425 lines
14 KiB
Dart
425 lines
14 KiB
Dart
import 'dart:async';
|
|
import 'dart:convert';
|
|
import 'dart:developer';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:test_sa/controllers/api_routes/api_manager.dart';
|
|
import 'package:test_sa/controllers/api_routes/urls.dart';
|
|
import 'package:test_sa/models/helper_data_models/spare_part/activity_spare_part_model.dart';
|
|
import 'package:test_sa/models/helper_data_models/workorder/fix_remotely_model.dart';
|
|
import 'package:test_sa/models/helper_data_models/workorder/mark_as_fixed_model.dart';
|
|
import 'package:test_sa/models/helper_data_models/workorder/need_visit_model.dart';
|
|
import 'package:test_sa/models/helper_data_models/workorder/nurse_action_model.dart';
|
|
import 'package:test_sa/models/new_models/dashboard_detail.dart';
|
|
import 'package:test_sa/models/new_models/workOrderDetail.dart';
|
|
|
|
class RequestDetailProvider extends ChangeNotifier {
|
|
final pageItemNumber = 10;
|
|
void reset() {
|
|
nextPage = true;
|
|
stateCode = null;
|
|
}
|
|
|
|
DateTime timerStartTime = DateTime(0, 0, 0, 0, 0, 0); // Start from 00:00:00
|
|
Timer? timer;
|
|
bool isTimerRunning = false;
|
|
|
|
void startTimer() {
|
|
if (isTimerRunning) return;
|
|
timer = Timer.periodic(const Duration(seconds: 1), (Timer t) {
|
|
timerStartTime = timerStartTime.add(const Duration(seconds: 1));
|
|
notifyListeners(); // Notify UI when time is updated
|
|
});
|
|
isTimerRunning = true;
|
|
notifyListeners(); // Notify UI when timer starts
|
|
}
|
|
|
|
void stopTimer() {
|
|
timer?.cancel();
|
|
isTimerRunning = false;
|
|
notifyListeners(); // Notify UI when timer stops
|
|
}
|
|
|
|
void resetTimer() {
|
|
timerStartTime = DateTime(0, 0, 0, 0, 0, 0); // Reset to 00:00:00
|
|
notifyListeners();
|
|
}
|
|
|
|
// Getter to get the current time
|
|
DateTime get currentTime => timerStartTime;
|
|
|
|
bool _isLoading = false;
|
|
|
|
bool get isLoading => _isLoading;
|
|
|
|
set isLoading(bool value) {
|
|
_isLoading = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
WorkOrderDetail ?_currentWorkOrder;
|
|
FixRemotely ?_fixRemotelyModel=FixRemotely();
|
|
NeedVisit ?_needVisitModel=NeedVisit();
|
|
MarkAsFixed ?_markAsFixed=MarkAsFixed();
|
|
ActivitySparePartModel ?_activitySparePartModel= ActivitySparePartModel();
|
|
|
|
ActivitySparePartModel ?get activitySparePartModel => _activitySparePartModel;
|
|
|
|
set activitySparePartModel(ActivitySparePartModel ? value) {
|
|
_activitySparePartModel = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
MarkAsFixed ? get markAsFixed => _markAsFixed;
|
|
|
|
set markAsFixed(MarkAsFixed ? value) {
|
|
_markAsFixed = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
NurseActionModel ?_nurseActionModel;
|
|
|
|
|
|
NurseActionModel? get nurseActionModel => _nurseActionModel;
|
|
|
|
set nurseActionModel(NurseActionModel? value) {
|
|
_nurseActionModel = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
NeedVisit ?get needVisitModel => _needVisitModel;
|
|
|
|
set needVisitModel(NeedVisit? value) {
|
|
_needVisitModel = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
FixRemotely ?get fixRemotelyModel => _fixRemotelyModel;
|
|
|
|
set fixRemotelyModel(FixRemotely? value) {
|
|
_fixRemotelyModel = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
WorkOrderDetail ?get currentWorkOrder => _currentWorkOrder;
|
|
|
|
set currentWorkOrder(WorkOrderDetail? value) {
|
|
_currentWorkOrder = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
int ?stateCode;
|
|
// true if there is next page in product list and false if not
|
|
bool nextPage = true;
|
|
TimeOfDay? _selectedTime ;
|
|
|
|
TimeOfDay? get selectedTime => _selectedTime;
|
|
|
|
set selectedTime(TimeOfDay? value) {
|
|
_selectedTime = value;
|
|
notifyListeners();
|
|
} // list of user requests
|
|
int _selectedListIndex = 0;
|
|
|
|
int get selectedListIndex => _selectedListIndex;
|
|
|
|
set selectedListIndex(int value) {
|
|
_selectedListIndex = value;
|
|
notifyListeners();
|
|
}
|
|
//getWorkOrderById......
|
|
Future<WorkOrderDetail?> getWorkOrderById({required String id}) async {
|
|
try {
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.get(URLs.getWorkOrderByIdUrl+"?workOrderId=$id");
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return currentWorkOrder;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return null;
|
|
}
|
|
catch (e) {
|
|
log("getSubWorkOrderDetails [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return null;
|
|
}
|
|
}
|
|
//engineerAcceptWorkOrder......
|
|
Future<CommonResponseModel> engineerAcceptWorkOrder({required String id}) async {
|
|
try {
|
|
final body = {
|
|
"workOrderId": id,
|
|
};
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.post(URLs.engineerAcceptUrl,body: body);
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
|
|
print('response of Engineer accept workorder ${commonResponseModel.toJson()}');
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return commonResponseModel;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
catch (e) {
|
|
log("engineer accept [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
}
|
|
//engineerRejectWorkOrder......
|
|
Future<CommonResponseModel> engineerRejectWorkOrder({required String id,String? feedBack}) async {
|
|
try {
|
|
final body = {
|
|
"workOrderId": id,
|
|
"feedback": feedBack??'',
|
|
};
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.post(URLs.engineerRejectUrl,body: body);
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
|
|
print('response of Engineer reject workorder ${commonResponseModel.toJson()}');
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return commonResponseModel;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
catch (e) {
|
|
log("engineer accept [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
}
|
|
//engineerFixRemotelyWorkOrder......
|
|
Future<CommonResponseModel> engineerFixRemotely() async {
|
|
try {
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.post(URLs.engineerFixRemotlyUrl,body: fixRemotelyModel!.toJson());
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
|
|
print('response of Engineer fixremotely workorder ${commonResponseModel.toJson()}');
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return commonResponseModel;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
catch (e) {
|
|
log("engineer accept [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
}
|
|
//engineerNeedAVisitWorkOrder......
|
|
Future<CommonResponseModel> engineerNeedVisit() async {
|
|
try {
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.post(URLs.engineerNeedVisitUrl,body: needVisitModel!.toJson());
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
|
|
print('response of Engineer fixremotely workorder ${commonResponseModel.toJson()}');
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return commonResponseModel;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
catch (e) {
|
|
log("engineer accept [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
}
|
|
//engineerMarkAsFixed......
|
|
Future<CommonResponseModel> engineerMarkAsFixed() async {
|
|
try {
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.post(URLs.engineerMarkAsFixUrl,body: markAsFixed!.toJson());
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
|
|
print('response of Engineer mark as fixed ${commonResponseModel.toJson()}');
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return commonResponseModel;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
catch (e) {
|
|
log("engineer accept [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
}
|
|
//assignEngineerToWorkOrder......
|
|
Future<CommonResponseModel> assignEngineerWorkOrder({required String workOrderId,required String engineerId}) async {
|
|
try {
|
|
final body = {
|
|
"workOrderId": workOrderId,
|
|
"assignedEngineerId": engineerId,
|
|
};
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.post(URLs.assignEngineerToWorkOrderUrl,body: body);
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
|
|
print('response of Engineer assignEngineer workorder ${commonResponseModel.toJson()}');
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return commonResponseModel;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
catch (e) {
|
|
log("engineer accept [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
}
|
|
//Nurse confirm reopen
|
|
Future<CommonResponseModel> nurseReopen() async {
|
|
try {
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.post(URLs.nurseConfirmReopenUrl,body: nurseActionModel!.toJson());
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
|
|
print('response of nurse confirmreopen workorder ${commonResponseModel.toJson()}');
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return commonResponseModel;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
catch (e) {
|
|
log("engineer accept [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
}
|
|
//Nurse confirm close
|
|
Future<CommonResponseModel> nurseClose() async {
|
|
try {
|
|
isLoading = true;
|
|
final response = await ApiManager.instance.post(URLs.nurseConfirmCloseUrl,body: nurseActionModel!.toJson());
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
|
|
print('response of nurse confirmreopen workorder ${commonResponseModel.toJson()}');
|
|
notifyListeners();
|
|
isLoading = false;
|
|
return commonResponseModel;
|
|
}
|
|
isLoading= false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
catch (e) {
|
|
log("engineer accept [error] : $e");
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return CommonResponseModel();
|
|
}
|
|
}
|
|
|
|
|
|
Future<int> updateActivitySparePart({required ActivitySparePartModel activitySparePartModel}) async {
|
|
isLoading = true;
|
|
try {
|
|
final response = await ApiManager.instance.put(
|
|
URLs.updateActivitySparePartUrl,
|
|
body: activitySparePartModel.toJson(),
|
|
);
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
// request.engineerName = employee.name;
|
|
notifyListeners();
|
|
}
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return response.statusCode;
|
|
} catch (error) {
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return -1;
|
|
}
|
|
}
|
|
Future<int> deleteActivitySparePart({required int id,required int workOrderId}) async {
|
|
isLoading = true;
|
|
var body = {
|
|
'id':id,
|
|
'workOrderId':workOrderId,
|
|
};
|
|
try {
|
|
final response = await ApiManager.instance.post(
|
|
URLs.deleteActivitySparePartUrl,
|
|
body: body,
|
|
);
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
//map to the model...
|
|
notifyListeners();
|
|
}
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return response.statusCode;
|
|
} catch (error) {
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return -1;
|
|
}
|
|
}
|
|
Future<int> createActivitySparePart({required ActivitySparePartModel activitySparePartModel}) async {
|
|
isLoading = true;
|
|
try {
|
|
final response = await ApiManager.instance.put(
|
|
URLs.createActivitySparePartUrl,
|
|
body: activitySparePartModel.toJson(),
|
|
);
|
|
stateCode = response.statusCode;
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
// request.engineerName = employee.name;
|
|
notifyListeners();
|
|
}
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return response.statusCode;
|
|
} catch (error) {
|
|
isLoading = false;
|
|
notifyListeners();
|
|
return -1;
|
|
}
|
|
}
|
|
}
|