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

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;
NeedVisit _needVisitModel;
MarkAsFixed _markAsFixed;
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;
}
}
}