diff --git a/lib/models/new_models/task_request/task_request_model.dart b/lib/models/new_models/task_request/task_request_model.dart index 08e03519..293f0560 100644 --- a/lib/models/new_models/task_request/task_request_model.dart +++ b/lib/models/new_models/task_request/task_request_model.dart @@ -247,17 +247,34 @@ class TaskData { if (installationBuilding != null) { data['installationBuilding'] = installationBuilding!.toJson(); } - data['installationFloor'] = installationFloor; - data['installationDepartment'] = installationDepartment; + if (installationFloor != null) { + data['installationFloor'] = installationFloor!.toJson(); + } + if (installationDepartment != null) { + data['installationDepartment'] = installationDepartment!.toJson(); + } + if (completedAction != null) { + data['completedAction'] = completedAction!.toJson(); + } + if (impactStatus != null) { + data['impactStatus'] = impactStatus!.toJson(); + } + if (typeOfAlert != null) { + data['typeOfAlert'] = typeOfAlert!.toJson(); + } + if (riskLevel != null) { + data['riskLevel'] = riskLevel!.toJson(); + } + if (resource != null) { + data['resource'] = resource!.toJson(); + } + if (actionNeeded != null) { + data['actionNeeded'] = actionNeeded!.toJson(); + } + data['serialNo'] = serialNo; data['installationDate'] = installationDate; - data['completedAction'] = completedAction; - data['impactStatus'] = impactStatus; data['isUserAcknowledge'] = isUserAcknowledge; - data['typeOfAlert'] = typeOfAlert; - data['riskLevel'] = riskLevel; - data['resource'] = resource; - data['actionNeeded'] = actionNeeded; data['alertNo'] = alertNo; data['estimationDeliveryDate'] = estimationDeliveryDate; data['reasonOfFSCA'] = reasonOfFSCA; @@ -276,6 +293,80 @@ class TaskData { return data; } + + // Map toJson() { + // final Map data = {}; + // + // data['id'] = id; + // data['statusValue'] = statusValue; + // data['taskJobNo'] = taskJobNo; + // + // if (userCreated != null) { + // data['userCreated'] = userCreated!.toJson(); + // } + // + // if (taskJobContactPersons != null) { + // data['taskJobContactPersons'] = taskJobContactPersons!.map((e) => e.toJson()).toList(); + // } + // + // if (taskType != null) { + // data['taskType'] = taskType!.toJson(); + // } + // + // if (taskJobStatus != null) { + // data['taskJobStatus'] = taskJobStatus!.toJson(); + // } + // + // data['asset'] = asset?.toJson(); + // data['site'] = site; + // data['building'] = building; + // data['floor'] = floor; + // data['department'] = department; + // data['room'] = room; + // data['callComment'] = callComment; + // + // if (assignedEngineer != null) { + // data['assignedEngineer'] = assignedEngineer!.toJson(); + // } + // + // if (taskJobAssistantEmployees != null) { + // data['taskJobAssistantEmployees'] = taskJobAssistantEmployees!.map((v) => v.toJson()).toList(); + // } + // if (taskJobHistories != null) { + // data['taskJobHistories'] = taskJobHistories!.map((e) => e.toJson()).toList(); + // } + // if (installationBuilding != null) { + // data['installationBuilding'] = installationBuilding!.toJson(); + // } + // data['installationFloor'] = installationFloor; + // data['installationDepartment'] = installationDepartment; + // data['serialNo'] = serialNo; + // data['installationDate'] = installationDate; + // data['completedAction'] = completedAction; + // data['impactStatus'] = impactStatus; + // data['isUserAcknowledge'] = isUserAcknowledge; + // data['typeOfAlert'] = typeOfAlert; + // data['riskLevel'] = riskLevel; + // data['resource'] = resource; + // data['actionNeeded'] = actionNeeded; + // data['alertNo'] = alertNo; + // data['estimationDeliveryDate'] = estimationDeliveryDate; + // data['reasonOfFSCA'] = reasonOfFSCA; + // data['correctiveActionDescription'] = correctiveActionDescription; + // + // if (evaluatorUser != null) { + // data['evaluatorUser'] = evaluatorUser!.toJson(); + // } + // if (taskJobActivityEngineerTimers != null) { + // data['taskJobActivityEngineerTimers'] = taskJobActivityEngineerTimers!.map((e) => e.toJson()).toList(); + // } + // if (taskJobAttachments != null) { + // data['taskJobAttachments'] = taskJobAttachments?.map((e) => e.toJson()).toList(); + // } + // + // return data; + // } + Map toEngineerUpdateJson() { final Map data = {}; data['id'] = id; diff --git a/lib/modules/tm_module/tasks_wo/update_task_request_view.dart b/lib/modules/tm_module/tasks_wo/update_task_request_view.dart index fdb533df..dc2c3bc9 100644 --- a/lib/modules/tm_module/tasks_wo/update_task_request_view.dart +++ b/lib/modules/tm_module/tasks_wo/update_task_request_view.dart @@ -200,10 +200,19 @@ class _UpdateTaskRequestState extends State { void _updateTask({required BuildContext context, required int status}) async { TaskRequestProvider taskRequestProvider = Provider.of(context, listen: false); - TaskData? taskModel = taskRequestProvider.taskRequestModel; + + TaskData? taskModel = TaskData.fromJson(taskRequestProvider.taskRequestModel!.toJson()); + taskModel?.statusValue = status; + + taskModel.taskTimePicker = taskRequestProvider.taskRequestModel?.taskTimePicker; + taskModel.totalWorkingHours = taskRequestProvider.taskRequestModel?.totalWorkingHours; + taskModel.taskTimerModel = taskRequestProvider.taskRequestModel?.taskTimerModel; + taskModel.timerModelList = taskRequestProvider.taskRequestModel?.timerModelList; + if (validate(model: taskModel)) { showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); + List taskAttachment = []; if (otherAttachments.isNotEmpty) { taskAttachment.addAll(otherAttachments); @@ -213,6 +222,7 @@ class _UpdateTaskRequestState extends State { taskAttachment.add(TaskJobAttachment(id: item.id, name: fileName)); } taskModel?.taskJobAttachments = taskAttachment; + if (taskModel?.taskTimePicker != null) { int durationInSecond = taskModel!.taskTimePicker!.endAt!.difference(taskModel.taskTimePicker!.startAt!).inSeconds; taskModel.taskJobActivityEngineerTimers?.add( @@ -224,19 +234,16 @@ class _UpdateTaskRequestState extends State { ), ); } + taskModel?.timerModelList?.forEach((timer) { int durationInSecond = timer.endAt!.difference(timer.startAt!).inSeconds; taskModel.taskJobActivityEngineerTimers?.add( TaskJobActivityEngineerTimer( - id: 0, - startDate: timer.startAt!.toIso8601String(), - endDate: timer.endAt?.toIso8601String(), - totalWorkingHour: ((durationInSecond) / 60 / 60), - comment: timer.comments ?? comments), + id: 0, startDate: timer.startAt!.toIso8601String(), endDate: timer.endAt?.toIso8601String(), totalWorkingHour: ((durationInSecond) / 60 / 60), comment: timer.comments ?? comments), ); }); - await taskRequestProvider.updateTaskByEngineer().then((success) async { + await taskRequestProvider.updateTaskByEngineer(taskModel).then((success) async { if (success) { if (status == 1) { AllRequestsProvider allRequestsProvider = Provider.of(context, listen: false); diff --git a/lib/providers/task_request_provider/task_request_provider.dart b/lib/providers/task_request_provider/task_request_provider.dart index 71ca98bc..e3d38a4b 100644 --- a/lib/providers/task_request_provider/task_request_provider.dart +++ b/lib/providers/task_request_provider/task_request_provider.dart @@ -43,10 +43,10 @@ class TaskRequestProvider extends ChangeNotifier { notifyListeners(); } - void refresh() { notifyListeners(); } + Future addTask({ required BuildContext context, required AddTaskModel task, @@ -120,15 +120,16 @@ class TaskRequestProvider extends ChangeNotifier { } } - Future updateTaskByEngineer() async { + Future updateTaskByEngineer(TaskData? taskData) async { isLoading = true; Response response; try { - response = await ApiManager.instance.post(URLs.updateTaskByEngineerUrl, body: taskRequestModel!.toEngineerUpdateJson()); + response = await ApiManager.instance.post(URLs.updateTaskByEngineerUrl, body: taskData?.toEngineerUpdateJson() ?? taskRequestModel!.toEngineerUpdateJson()); stateCode = response.statusCode; isLoading = false; notifyListeners(); if (stateCode == 200) { + return true; } return false;