form fixes

design_3.0_dark_mode
WaseemAbbasi22 3 months ago
parent 456432050d
commit 32627bbda1

@ -143,7 +143,7 @@ class AllRequestsProvider extends ChangeNotifier {
}
final type = typeTransaction == null
? search?.typeTransaction == null || (search?.typeTransaction?.isEmpty ?? false)
? [1, 2, 3, 4, 5,6] //added 6 to get task request ...
? [1, 2, 3, 4, 5, 6] //added 6 to get task request ...
: search!.typeTransaction
: [typeTransaction];
List<int> status = (search?.statuses == null || (search?.statuses?.isEmpty ?? false)) ? (((search?.isArchived ?? false) ? [3] : [1, 2, 4])) : search!.statuses!;
@ -222,7 +222,7 @@ class AllRequestsProvider extends ChangeNotifier {
}
}
Future<int> updateRecurrentWo({required int status}) async {
Future<bool> updateRecurrentWo({required int status}) async {
isLoading = true;
Response response;
try {
@ -230,12 +230,15 @@ class AllRequestsProvider extends ChangeNotifier {
stateCode = response.statusCode;
isLoading = false;
notifyListeners();
return response.statusCode;
if (stateCode == 200) {
return true;
}
return false;
} catch (error) {
isLoading = false;
stateCode = -1;
notifyListeners();
return -1;
return false;
}
}

@ -47,15 +47,12 @@ class GasRefillProvider extends ChangeNotifier {
// failed _loading = false
bool isLoading = false;
Future<GasRefillModel?> getGasRefillObjectById(num id) async {
try {
Response response = await ApiManager.instance.get(URLs.getGasRefillById + "?gasRefillId=$id");
if (response.statusCode >= 200 && response.statusCode < 300) {
return GasRefillModel.fromJson(json.decode(response.body)["data"]);
return GasRefillModel.fromJson(json.decode(response.body)["data"]);
} else {
return null;
}
@ -64,7 +61,6 @@ class GasRefillProvider extends ChangeNotifier {
}
}
/// return -2 if request in progress
/// return -1 if error happen when sending request
/// return state code if request complete may be 200, 404 or 403
@ -139,6 +135,7 @@ class GasRefillProvider extends ChangeNotifier {
print(error);
}
}
Future<void> updateGasRefillRequestByNurse({
required BuildContext context,
required GasRefillModel model,
@ -167,7 +164,7 @@ class GasRefillProvider extends ChangeNotifier {
}
}
Future<int> updateGasRefill({required int status, required GasRefillModel model}) async {
Future<bool> updateGasRefill({required int status, required GasRefillModel model}) async {
isLoading = true;
Response response;
try {
@ -175,12 +172,15 @@ class GasRefillProvider extends ChangeNotifier {
stateCode = response.statusCode;
isLoading = false;
notifyListeners();
return response.statusCode;
if (stateCode == 200) {
return true;
}
return false;
} catch (error) {
isLoading = false;
stateCode = -1;
notifyListeners();
return -1;
return false;
}
}

@ -152,7 +152,6 @@ class GasRefillModel {
floor = json['floor'] != null ? Floor.fromJson(json['floor']) : null;
department = json['department'] != null ? Department.fromJson(json['department']) : null;
mapSite = json['site'] != null ? MappedSite.fromJson(json['site']) : null;
print('site i got is ::${mapSite?.toJson()}');
mappedBuilding = mapSite?.buildings?.firstWhere((element) => element.identifier == building?.identifier, orElse: () => MappedBuilding());
mappedFloor = mappedBuilding?.floors?.firstWhere((element) => element.identifier == floor?.identifier, orElse: () => MappedFloor());
mappedDepartment = mappedFloor?.departments?.firstWhere((element) => element.identifier == department?.identifier, orElse: () => MappedDepartment());

@ -611,40 +611,47 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
}
//engineerUpdateWorkOrder......
Future<void> engineerUpdateWorkOrder() async {
Future<bool> engineerUpdateWorkOrder() async {
isLoading = true;
Response response;
try {
isLoading = true;
notifyListeners();
final response = await ApiManager.instance.post(URLs.engineerUpdateWorkOrderUrl, body: engineerUpdateWorkOrderHelperModel!.toJson());
response = await ApiManager.instance.post(URLs.engineerUpdateWorkOrderUrl, body: engineerUpdateWorkOrderHelperModel!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
currentWorkOrder = await WorkOrderDetail.fromJson(json.decode(response.body));
}
isLoading = false;
notifyListeners();
} catch (e) {
log("engineer update workorder [error] : $e");
if (stateCode == 200) {
currentWorkOrder = await WorkOrderDetail.fromJson(json.decode(response.body));
notifyListeners();
return true;
}
return false;
} catch (error) {
isLoading = false;
stateCode = -1;
notifyListeners();
return false;
}
}
//engineerUpdateWorkOrder......
Future<void> engineerUpdateCost() async {
Future<bool> engineerUpdateCost() async {
isLoading = true;
Response response;
try {
isLoading = true;
notifyListeners();
final response = await ApiManager.instance.post(URLs.engineerUpdateCost, body: workOrderCostModel!.toJson());
response = await ApiManager.instance.post(URLs.engineerUpdateCost, body: workOrderCostModel!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
currentWorkOrder = await WorkOrderDetail.fromJson(json.decode(response.body));
}
isLoading = false;
notifyListeners();
} catch (e) {
log("engineer update workorder [error] : $e");
if (stateCode == 200) {
currentWorkOrder = await WorkOrderDetail.fromJson(json.decode(response.body));
notifyListeners();
return true;
}
return false;
} catch (error) {
isLoading = false;
stateCode = -1;
notifyListeners();
return false;
}
}
@ -737,42 +744,43 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
}
}
Future<int> updateActivitySparePart() async {
Future<bool> updateActivitySparePart() async {
isLoading = true;
notifyListeners();
Response response;
try {
final response = await ApiManager.instance.post(URLs.updateActivitySparePartUrl, body: sparePartHelperModel!.toJson());
response = await ApiManager.instance.post(URLs.updateActivitySparePartUrl, body: sparePartHelperModel!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
// request.engineerName = employee.name;
}
isLoading = false;
notifyListeners();
return response.statusCode;
if (stateCode == 200) {
return true;
}
return false;
} catch (error) {
isLoading = false;
stateCode = -1;
notifyListeners();
return -1;
return false;
}
}
Future<int> updateActivityMaintenance() async {
Future<bool> updateActivityMaintenance() async {
isLoading = true;
notifyListeners();
Response response;
try {
final response = await ApiManager.instance.put(URLs.updateActivityMaintenanceUrl, body: activityMaintenanceHelperModel!.toJson());
response = await ApiManager.instance.put(URLs.updateActivityMaintenanceUrl, body: activityMaintenanceHelperModel!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
// request.engineerName = employee.name;
}
isLoading = false;
notifyListeners();
return response.statusCode;
if (stateCode == 200) {
return true;
}
return false;
} catch (error) {
isLoading = false;
stateCode = -1;
notifyListeners();
return -1;
return false;
}
}
@ -867,50 +875,49 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
}
}
Future<int> createActivitySparePart() async {
Future<bool> createActivitySparePart() async {
isLoading = true;
notifyListeners();
Response response;
try {
final response = await ApiManager.instance.post(
response = await ApiManager.instance.post(
URLs.createActivitySparePartUrl,
body: sparePartHelperModel!.toJson(),
);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
// currentWorkOrder = await WorkOrderDetail.fromJson(json.decode(response.body));
// // updateCurrentWorkOrder(currentWorkOrder);
// notifyListeners();
}
isLoading = false;
notifyListeners();
return response.statusCode;
if (stateCode == 200) {
return true;
}
return false;
} catch (error) {
isLoading = false;
stateCode = -1;
notifyListeners();
return -1;
return false;
}
}
Future<int> createActivityMaintenanceRequest() async {
Future<bool> createActivityMaintenanceRequest() async {
isLoading = true;
notifyListeners();
Response response;
try {
final response = await ApiManager.instance.post(
response = await ApiManager.instance.post(
URLs.createActivityMaintenanceUrl,
body: activityMaintenanceHelperModel!.toJson(),
);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
// currentWorkOrder = await WorkOrderDetail.fromJson(json.decode(response.body));
// updateCurrentWorkOrder(currentWorkOrder);
}
isLoading = false;
notifyListeners();
return response.statusCode;
if (stateCode == 200) {
return true;
}
return false;
} catch (error) {
isLoading = false;
stateCode = -1;
notifyListeners();
return -1;
return false;
}
}

@ -132,7 +132,7 @@ class FooterActionButton {
maxWidth: true,
buttonColor: AppColor.green70,
onPressed: () async {
requestDetailProvider.engineerAcceptWorkOrder(id: requestDetailProvider.currentWorkOrder!.data!.requestId.toString()).whenComplete(() {});
requestDetailProvider.engineerAcceptWorkOrder(id: requestDetailProvider.currentWorkOrder!.data!.requestId.toString());
},
).expanded,
],

@ -354,8 +354,10 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
],
] else ...[
8.height,
const Divider().defaultStyle(context),
FilesList(images: _attachments.map((toElement) => URLs.getFileUrl(toElement.name!)!).toList()),
if (_attachments.isNotEmpty) ...[
const Divider().defaultStyle(context),
FilesList(images: _attachments.map((toElement) => URLs.getFileUrl(toElement.name!)!).toList()),
],
//handle nurse case..
],

@ -283,9 +283,13 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
onPressed: () async {
if (validateForm(requestDetailProvider: requestDetailProvider)) {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
await requestDetailProvider.engineerUpdateWorkOrder();
Navigator.pop(context);
Navigator.pop(context);
await requestDetailProvider.engineerUpdateWorkOrder().then((success){
Navigator.pop(context);
if(success){
Navigator.pop(context);
}
});
}
},
),

@ -89,7 +89,7 @@ class _CostDetailFormScreenState extends State<CostDetailFormScreen> with Ticker
initialValue: requestDetailProvider.workOrderCostModel?.labourCost?.toString(),
textAlign: TextAlign.center,
labelStyle: AppTextStyles.textFieldLabelStyle,
textInputType:const TextInputType.numberWithOptions(decimal: true),
textInputType: const TextInputType.numberWithOptions(decimal: true),
showShadow: false,
onChange: (value) {
requestDetailProvider.workOrderCostModel?.labourCost = num.parse(value);
@ -131,7 +131,7 @@ class _CostDetailFormScreenState extends State<CostDetailFormScreen> with Ticker
initialValue: requestDetailProvider.workOrderCostModel?.prNo,
textAlign: TextAlign.center,
labelStyle: AppTextStyles.textFieldLabelStyle,
textInputType:const TextInputType.numberWithOptions(decimal: true),
textInputType: const TextInputType.numberWithOptions(decimal: true),
showShadow: false,
onChange: (value) {
requestDetailProvider.workOrderCostModel?.prNo = value;
@ -145,7 +145,7 @@ class _CostDetailFormScreenState extends State<CostDetailFormScreen> with Ticker
initialValue: requestDetailProvider.workOrderCostModel?.poNo,
textAlign: TextAlign.center,
labelStyle: AppTextStyles.textFieldLabelStyle,
textInputType:const TextInputType.numberWithOptions(decimal: true),
textInputType: const TextInputType.numberWithOptions(decimal: true),
showShadow: false,
onChange: (value) {
requestDetailProvider.workOrderCostModel?.poNo = value;
@ -164,9 +164,12 @@ class _CostDetailFormScreenState extends State<CostDetailFormScreen> with Ticker
onPressed: () async {
if (validateForm(requestDetailProvider: requestDetailProvider)) {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
await requestDetailProvider.engineerUpdateCost();
Navigator.pop(context);
Navigator.pop(context);
await requestDetailProvider.engineerUpdateCost().then((success) {
Navigator.pop(context);
if (success) {
Navigator.pop(context);
}
});
}
},
),

@ -148,18 +148,22 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
);
});
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
int status = -1;
if (requestDetailProvider.activityMaintenanceHelperModel?.id == 0) {
status = await requestDetailProvider.createActivityMaintenanceRequest();
await requestDetailProvider.createActivityMaintenanceRequest().then((success) {
Navigator.pop(context);
if (success) {
requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!);
Navigator.pop(context);
}
});
} else {
status = await requestDetailProvider.updateActivityMaintenance();
}
if (status == 200) {
requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!);
Navigator.pop(context);
Navigator.pop(context);
} else {
Navigator.pop(context);
await requestDetailProvider.updateActivityMaintenance().then((success) {
Navigator.pop(context);
if (success) {
requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!);
Navigator.pop(context);
}
});
}
}
}

@ -309,33 +309,8 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
child: AppFilledButton(
label: _requestDetailProvider?.sparePartHelperModel?.id == 0 ? context.translation.addSparePartActivity : context.translation.updateSparePartActivity,
buttonColor: AppColor.green70,
onPressed: () async {
requestDetailProvider.sparePartHelperModel?.sparePartAttachments?.clear();
for (var pickerObject in _files) {
String fileData =
_isLocalUrl(pickerObject.file.path) ? ("${pickerObject.file.path.split("/").last}|${base64Encode(File(pickerObject.file.path).readAsBytesSync())}") : pickerObject.file.path;
requestDetailProvider.sparePartHelperModel?.sparePartAttachments?.add(SparePartAttachments(id: pickerObject.id, name: fileData));
}
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
int status = -1;
if (_requestDetailProvider?.sparePartHelperModel?.id == 0) {
status = await requestDetailProvider.createActivitySparePart();
} else {
status = await requestDetailProvider.updateActivitySparePart();
}
if (status == 200) {
await requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!);
//this is for hide the dialoge...
Navigator.pop(context);
Navigator.pop(context);
//show this only for add form..
if (_requestDetailProvider?.sparePartHelperModel?.id == 0) {
ServiceRequestBottomSheet.addAnotherSpareRequestBottomSheet(context: context);
SizedBox().flushBar(context: context, title: context.translation.sparePartActivitySuccess, message: '');
}
} else {
Navigator.pop(context);
}
onPressed: () {
_onSubmit(requestDetailProvider: requestDetailProvider);
},
)),
],
@ -344,6 +319,45 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
}),
);
}
_onSubmit({required ServiceRequestDetailProvider requestDetailProvider}) async {
requestDetailProvider.sparePartHelperModel?.sparePartAttachments?.clear();
for (var pickerObject in _files) {
String fileData = _isLocalUrl(pickerObject.file.path) ? "${pickerObject.file.path.split("/").last}|${base64Encode(File(pickerObject.file.path).readAsBytesSync())}" : pickerObject.file.path;
requestDetailProvider.sparePartHelperModel?.sparePartAttachments?.add(
SparePartAttachments(id: pickerObject.id, name: fileData),
);
}
// Show loading dialog
showDialog(
context: context,
barrierDismissible: false,
builder: (context) => const AppLazyLoading(),
);
bool success = false;
if (_requestDetailProvider?.sparePartHelperModel?.id == 0) {
success = await requestDetailProvider.createActivitySparePart();
} else {
success = await requestDetailProvider.updateActivitySparePart();
}
if (mounted) Navigator.pop(context);
if (success) {
requestDetailProvider.getWorkOrderById(
id: requestDetailProvider.currentWorkOrder!.data!.requestId!,
);
if (mounted) Navigator.pop(context);
if (_requestDetailProvider?.sparePartHelperModel?.id == 0) {
ServiceRequestBottomSheet.addAnotherSpareRequestBottomSheet(context: context);
const SizedBox().flushBar(
context: context,
title: context.translation.sparePartActivitySuccess,
message: '',
);
}
}
}
}
class PartDetailBottomSheetSheet extends StatelessWidget {

@ -144,15 +144,17 @@ void _updateTask({required BuildContext context, required int status}) async {
.updateRecurrentWo(
status: status,
)
.whenComplete(() {
if (status == 1) {
// when click complete then this request remove from the list and status changes to closed..
allRequestsProvider.reset();
allRequestsProvider.getAllRequests(context, typeTransaction: 5);
}
allRequestsProvider.recurrentWoData?.recurrentWoTimerModel = null;
Navigator.pop(context);
.then((success) {
Navigator.pop(context);
if (success) {
if (status == 1) {
// when click complete then this request remove from the list and status changes to closed..
allRequestsProvider.reset();
allRequestsProvider.getAllRequests(context, typeTransaction: 5);
}
allRequestsProvider.recurrentWoData?.recurrentWoTimerModel = null;
Navigator.pop(context);
}
});
}
}

@ -218,6 +218,23 @@ class _UpdateTaskRequestState extends State<UpdateTaskRequest> {
);
});
// TODO need to test this when task is enabled ...
// await taskRequestProvider.updateTaskByEngineer().then((success) {
// Navigator.pop(context);
// if (success) {
// if (status == 1) {
// AllRequestsProvider allRequestsProvider = Provider.of<AllRequestsProvider>(context, listen: false);
// allRequestsProvider.reset();
// allRequestsProvider.getAllRequests(context, typeTransaction: 6);
// } else {
// taskRequestProvider.getTaskById(id: widget.taskId, showLoading: false);
//
// }
// Navigator.pop(context);
// Navigator.pop(context);
// }
// });
await taskRequestProvider.updateTaskByEngineer().whenComplete(() async {
if (taskRequestProvider.stateCode == 200) {
if (status == 1) {

@ -116,15 +116,23 @@ class TaskRequestProvider extends ChangeNotifier {
}
}
Future<int> updateTaskByEngineer() async {
notifyListeners();
Future<bool> updateTaskByEngineer() async {
isLoading = true;
Response response;
try {
final response = await ApiManager.instance.post(URLs.updateTaskByEngineerUrl, body: taskRequestModel!.toEngineerUpdateJson());
response = await ApiManager.instance.post(URLs.updateTaskByEngineerUrl, body: taskRequestModel!.toEngineerUpdateJson());
stateCode = response.statusCode;
isLoading = false;
notifyListeners();
return response.statusCode;
if (stateCode == 200) {
return true;
}
return false;
} catch (error) {
return -1;
isLoading = false;
stateCode = -1;
notifyListeners();
return false;
}
}

@ -156,15 +156,18 @@ class _UpdateGasRefillRequestState extends State<UpdateGasRefillRequest> {
_formModel.gasRefillAttachments?.add(GasRefillAttachments(
id: 0, gasRefillId: _formModel.id ?? 0, attachmentName: ServiceRequestUtils.isLocalUrl(item.path) ? "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}" : item.path));
}
await _gasRefillProvider?.updateGasRefill(status: status, model: _formModel).whenComplete(() {
if (status == 1) {
AllRequestsProvider allRequestsProvider = Provider.of<AllRequestsProvider>(context, listen: false);
// when click complete then this request remove from the list and status changes to closed..
_gasRefillProvider?.reset();
allRequestsProvider.getAllRequests(context, typeTransaction: 2);
}
Navigator.pop(context);
await _gasRefillProvider?.updateGasRefill(status: status, model: _formModel).then((success) {
Navigator.pop(context);
if (success) {
if (status == 1) {
AllRequestsProvider allRequestsProvider = Provider.of<AllRequestsProvider>(context, listen: false);
// when click complete then this request remove from the list and status changes to closed..
_gasRefillProvider?.reset();
allRequestsProvider.getAllRequests(context, typeTransaction: 2);
}
Navigator.pop(context);
}
});
}

Loading…
Cancel
Save