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

450 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/asset_retired/asset_retired_model.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();
ActivityAssetRetiredModel ?_activityAssetRetiredModel = ActivityAssetRetiredModel();
ActivityAssetRetiredModel? get activityAssetRetiredModel => _activityAssetRetiredModel;
set activityAssetRetiredModel(ActivityAssetRetiredModel ?value) {
_activityAssetRetiredModel = value;
notifyListeners();
}
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));
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));
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));
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;
}
}
Future<int> createActivityAssetToBeRetired({required ActivityAssetRetiredModel activityAssetRetiredModel}) async {
isLoading = true;
try {
final response = await ApiManager.instance.put(
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;
}
}
}