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.
cloudsolutions-atoms/lib/service_request_latest/request_detail_provider.dart

528 lines
17 KiB
Dart

1 year ago
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';
1 year ago
import 'package:test_sa/models/helper_data_models/asset_retired/asset_retired_model.dart';
1 year ago
import 'package:test_sa/models/helper_data_models/spare_part/activity_spare_part_model.dart';
1 year ago
import 'package:test_sa/models/helper_data_models/workorder/work_order_model.dart';
import 'package:test_sa/models/helper_data_models/workorder/fix_remotely_model.dart';
1 year ago
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;
1 year ago
void reset() {
nextPage = true;
stateCode = null;
}
1 year ago
DateTime timerStartTime = DateTime(0, 0, 0, 0, 0, 0); // Start from 00:00:00
Timer? timer;
1 year ago
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();
}
1 year ago
WorkOrderDetail? _currentWorkOrder;
FixRemotely? _fixRemotelyModel = FixRemotely();
NeedVisit? _needVisitModel = NeedVisit();
MarkAsFixed? _markAsFixed = MarkAsFixed();
ActivitySparePartModel? _activitySparePartModel = ActivitySparePartModel();
ActivityAssetRetiredModel? _activityAssetRetiredModel = ActivityAssetRetiredModel();
WorkOrderHModel _workOrderHModel = WorkOrderHModel();
WorkOrderHModel get workOrderHModel => _workOrderHModel;
set workOrderHModel(WorkOrderHModel value) {
_workOrderHModel = value;
notifyListeners();
}
1 year ago
ActivityAssetRetiredModel? get activityAssetRetiredModel => _activityAssetRetiredModel;
1 year ago
set activityAssetRetiredModel(ActivityAssetRetiredModel? value) {
1 year ago
_activityAssetRetiredModel = value;
notifyListeners();
}
1 year ago
1 year ago
ActivitySparePartModel? get activitySparePartModel => _activitySparePartModel;
1 year ago
1 year ago
set activitySparePartModel(ActivitySparePartModel? value) {
1 year ago
_activitySparePartModel = value;
notifyListeners();
}
1 year ago
MarkAsFixed? get markAsFixed => _markAsFixed;
1 year ago
1 year ago
set markAsFixed(MarkAsFixed? value) {
1 year ago
_markAsFixed = value;
notifyListeners();
}
1 year ago
NeedVisit? get needVisitModel => _needVisitModel;
set needVisitModel(NeedVisit? value) {
_needVisitModel = value;
notifyListeners();
}
1 year ago
FixRemotely? get fixRemotelyModel => _fixRemotelyModel;
set fixRemotelyModel(FixRemotely? value) {
_fixRemotelyModel = value;
notifyListeners();
}
1 year ago
WorkOrderDetail? get currentWorkOrder => _currentWorkOrder;
set currentWorkOrder(WorkOrderDetail? value) {
_currentWorkOrder = value;
notifyListeners();
}
1 year ago
int? stateCode;
// true if there is next page in product list and false if not
bool nextPage = true;
1 year ago
TimeOfDay? _selectedTime;
TimeOfDay? get selectedTime => _selectedTime;
set selectedTime(TimeOfDay? value) {
_selectedTime = value;
notifyListeners();
} // list of user requests
1 year ago
int _selectedListIndex = 0;
int get selectedListIndex => _selectedListIndex;
set selectedListIndex(int value) {
_selectedListIndex = value;
notifyListeners();
}
1 year ago
//create workOrder nurse .....
Future<int> createWorkOrder({required WorkOrderHModel workOrderHModel}) async {
isLoading = true;
try {
final response = await ApiManager.instance.post(
URLs.createWorkOrderUrl,
body: workOrderHModel.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;
}
}
//getWorkOrderById......
Future<WorkOrderDetail?> getWorkOrderById({required String id}) async {
try {
1 year ago
isLoading = true;
final response = await ApiManager.instance.get(URLs.getWorkOrderByIdUrl + "?workOrderId=$id");
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
1 year ago
return currentWorkOrder;
}
1 year ago
isLoading = false;
notifyListeners();
return null;
1 year ago
} catch (e) {
log("getSubWorkOrderDetails [error] : $e");
isLoading = false;
notifyListeners();
return null;
}
}
1 year ago
//engineerAcceptWorkOrder......
Future<CommonResponseModel> engineerAcceptWorkOrder({required String id}) async {
try {
final body = {
"workOrderId": id,
};
1 year ago
isLoading = true;
final response = await ApiManager.instance.post(URLs.engineerAcceptUrl, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
print('response of Engineer accept workorder ${commonResponseModel.toJson()}');
notifyListeners();
isLoading = false;
1 year ago
return commonResponseModel;
}
1 year ago
isLoading = false;
notifyListeners();
return CommonResponseModel();
1 year ago
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
1 year ago
//engineerRejectWorkOrder......
1 year ago
Future<CommonResponseModel> engineerRejectWorkOrder({required String id, String? feedBack}) async {
try {
final body = {
"workOrderId": id,
1 year ago
"feedback": feedBack ?? '',
};
1 year ago
isLoading = true;
final response = await ApiManager.instance.post(URLs.engineerRejectUrl, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
print('response of Engineer reject workorder ${commonResponseModel.toJson()}');
notifyListeners();
isLoading = false;
1 year ago
return commonResponseModel;
}
1 year ago
isLoading = false;
notifyListeners();
return CommonResponseModel();
1 year ago
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
1 year ago
//engineerFixRemotelyWorkOrder......
Future<CommonResponseModel> engineerFixRemotely() async {
try {
isLoading = true;
1 year ago
final response = await ApiManager.instance.post(URLs.engineerFixRemotlyUrl, body: fixRemotelyModel!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
1 year ago
return commonResponseModel;
}
1 year ago
isLoading = false;
notifyListeners();
return CommonResponseModel();
1 year ago
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
1 year ago
//engineerNeedAVisitWorkOrder......
Future<CommonResponseModel> engineerNeedVisit() async {
try {
isLoading = true;
1 year ago
final response = await ApiManager.instance.post(URLs.engineerNeedVisitUrl, body: needVisitModel!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
print('response of Engineer fixremotely workorder ${commonResponseModel.toJson()}');
notifyListeners();
isLoading = false;
1 year ago
return commonResponseModel;
}
1 year ago
isLoading = false;
notifyListeners();
return CommonResponseModel();
1 year ago
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
1 year ago
1 year ago
//engineerMarkAsFixed......
Future<CommonResponseModel> engineerMarkAsFixed() async {
try {
isLoading = true;
1 year ago
final response = await ApiManager.instance.post(URLs.engineerMarkAsFixUrl, body: markAsFixed!.toJson());
1 year ago
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
1 year ago
print('response of Engineer mark as fixed ${commonResponseModel.toJson()}');
notifyListeners();
isLoading = false;
1 year ago
return commonResponseModel;
1 year ago
}
1 year ago
isLoading = false;
notifyListeners();
return CommonResponseModel();
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
1 year ago
notifyListeners();
return CommonResponseModel();
}
1 year ago
}
//engineer Confirm Arrive......
Future<CommonResponseModel> engineerConfirmArrive({required int workOrderId, required int verificationTypeId, required String photoInfo, required String otp}) async {
try {
Map<String, dynamic> body = {"workOrderId": workOrderId, "verificationTypeId": verificationTypeId, "photoInfo": photoInfo, "otp": otp};
isLoading = true;
final response = await ApiManager.instance.post(URLs.engineerConfirmArriveUrl, body: body);
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) {
1 year ago
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
//assignEngineerToWorkOrder......
1 year ago
Future<CommonResponseModel> assignEngineerWorkOrder({required String workOrderId, required String engineerId}) async {
try {
final body = {
"workOrderId": workOrderId,
"assignedEngineerId": engineerId,
};
isLoading = true;
1 year ago
final response = await ApiManager.instance.post(URLs.assignEngineerToWorkOrderUrl, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
1 year ago
return commonResponseModel;
}
1 year ago
isLoading = false;
notifyListeners();
return CommonResponseModel();
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
1 year ago
}
//engineerUpdateWorkOrder......
Future<CommonResponseModel> engineerUpdateWorkOrder({required EngineerUpdateWorkOrderHModel model}) async {
try {
isLoading = true;
final response = await ApiManager.instance.post(URLs.engineerUpdateWorkOrderUrl, body: model.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
return commonResponseModel;
}
isLoading = false;
notifyListeners();
return CommonResponseModel();
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
1 year ago
//Nurse confirm reopen
1 year ago
Future<CommonResponseModel> nurseReject({required NurseActionModel model}) async {
try {
isLoading = true;
1 year ago
final response = await ApiManager.instance.post(URLs.nurseRejectUrl, body: model.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
1 year ago
return commonResponseModel;
}
1 year ago
isLoading = false;
notifyListeners();
return CommonResponseModel();
1 year ago
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
1 year ago
//Nurse confirm close
1 year ago
Future<CommonResponseModel> nurseConfirm({required NurseActionModel model}) async {
try {
isLoading = true;
1 year ago
final response = await ApiManager.instance.post(URLs.nurseConfirmUrl, body: model.toJson());
print('response i got is ${response.body}');
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
1 year ago
return commonResponseModel;
}
1 year ago
isLoading = false;
notifyListeners();
return CommonResponseModel();
1 year ago
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
1 year ago
Future<int> updateActivitySparePart({required ActivitySparePartModel activitySparePartModel}) async {
isLoading = true;
try {
1 year ago
final response = await ApiManager.instance.post(
1 year ago
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;
}
}
1 year ago
Future<int> deleteActivitySparePart({required int id, required int workOrderId}) async {
1 year ago
isLoading = true;
var body = {
1 year ago
'id': id,
'workOrderId': workOrderId,
1 year ago
};
try {
1 year ago
final response = await ApiManager.instance.post(
URLs.deleteActivitySparePartUrl,
body: body,
);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
//map to the model...
notifyListeners();
}
1 year ago
isLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
1 year ago
isLoading = false;
notifyListeners();
return -1;
}
}
1 year ago
Future<int> createActivitySparePart({required ActivitySparePartModel activitySparePartModel}) async {
isLoading = true;
try {
1 year ago
final response = await ApiManager.instance.post(
1 year ago
URLs.createActivitySparePartUrl,
body: activitySparePartModel.toJson(),
);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
1 year ago
// request.engineerName = employee.name;
notifyListeners();
}
isLoading = false;
notifyListeners();
1 year ago
return response.statusCode;
} catch (error) {
isLoading = false;
notifyListeners();
1 year ago
return -1;
}
}
1 year ago
1 year ago
Future<int> createActivityAssetToBeRetired({required ActivityAssetRetiredModel activityAssetRetiredModel}) async {
isLoading = true;
try {
1 year ago
final response = await ApiManager.instance.post(
1 year ago
URLs.createActivityAssetToBeRetiredUrl,
body: activityAssetRetiredModel.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;
}
}
}