diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 620d367f..d2204b85 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -309,7 +309,8 @@ class URLs { static get genderLookup => "$_baseUrl/Lookups/GetLookup?lookupEnum=3065"; static get getDemoDocumentTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=4106"; - static get getAttachmentTypesLookup => "$_baseUrl/Lookups/GetLookup?lookupEnum=4021"; + // static get getAttachmentTypesLookup => "$_baseUrl/Lookups/GetLookup?lookupEnum=4021"; + static get getAttachmentTypesLookup => "$_baseUrl/Lookups/GetLookup"; static get getClassificationTypeLookup => "$_baseUrl/Lookups/GetLookup?lookupEnum=450"; diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart index a25a10fe..68524413 100644 --- a/lib/dashboard_latest/dashboard_provider.dart +++ b/lib/dashboard_latest/dashboard_provider.dart @@ -56,7 +56,7 @@ class DashBoardProvider extends ChangeNotifier { // Helper method to check if a tab index is UnAssigned bool isUnassignedTab(int index) { if (index >= 0 && index < tabs.length) { - return tabs[index].requestType == RequestTypeEnum.unassigned; + return tabs[index].requestType == RequestStatusEnum.unassigned; } return false; } @@ -64,7 +64,7 @@ class DashBoardProvider extends ChangeNotifier { // Helper method to get the UnAssigned tab index (returns -1 if not found) int getUnassignedTabIndex() { for (int i = 0; i < tabs.length; i++) { - if (tabs[i].requestType == RequestTypeEnum.unassigned) { + if (tabs[i].requestType == RequestStatusEnum.unassigned) { return i; } } @@ -111,25 +111,25 @@ class DashBoardProvider extends ChangeNotifier { DD.DashboardDetail? get requestDetailList => _requestDetailList; - int getStatusCount(RequestTypeEnum requestType) { + int getStatusCount(RequestStatusEnum requestType) { switch (requestType) { - case RequestTypeEnum.unassigned: + case RequestStatusEnum.unassigned: return dashboardCount?.data?.countUnAssigned ?? 0; - case RequestTypeEnum.open: + case RequestStatusEnum.open: return dashboardCount?.data?.countOpen ?? 0; - case RequestTypeEnum.inProgress: + case RequestStatusEnum.inProgress: return dashboardCount?.data?.countInprogress ?? 0; - case RequestTypeEnum.completed: + case RequestStatusEnum.completed: return dashboardCount?.data?.countComplete ?? 0; - case RequestTypeEnum.pendingAcknowledgment: + case RequestStatusEnum.pendingAcknowledgment: return dashboardCount?.data?.countAcknowledge ?? 0; - case RequestTypeEnum.canceled: + case RequestStatusEnum.canceled: return dashboardCount?.data?.countCanceled ?? 0; - case RequestTypeEnum.closed: + case RequestStatusEnum.closed: return dashboardCount?.data?.countClose ?? 0; - case RequestTypeEnum.overdue: + case RequestStatusEnum.overdue: return dashboardCount?.data?.countOverdue ?? 0; - case RequestTypeEnum.highPriority: + case RequestStatusEnum.highPriority: return dashboardCount?.data?.countHighPriority ?? 0; default: return 0; @@ -310,30 +310,30 @@ class DashBoardProvider extends ChangeNotifier { } // Status categories (Open, InProgress, Completed, Closed) - if (!tab.isHighPriority && !tab.isOverDue && tab.requestType != RequestTypeEnum.unassigned) { + if (!tab.isHighPriority && !tab.isOverDue && tab.requestType != RequestStatusEnum.unassigned) { // Map requestType to status value switch (tab.requestType) { - case RequestTypeEnum.open: + case RequestStatusEnum.open: if (!statusTransaction.contains(1)) statusTransaction.add(1); break; - case RequestTypeEnum.inProgress: + case RequestStatusEnum.inProgress: if (!statusTransaction.contains(2)) statusTransaction.add(2); break; - case RequestTypeEnum.completed: + case RequestStatusEnum.completed: if (!statusTransaction.contains(4)) statusTransaction.add(4); break; - case RequestTypeEnum.closed: + case RequestStatusEnum.closed: if (!statusTransaction.contains(4)) statusTransaction.add(4); break; - case RequestTypeEnum.canceled: + case RequestStatusEnum.canceled: if (!statusTransaction.contains(5)) statusTransaction.add(5); break; - case RequestTypeEnum.pendingAcknowledgment: + case RequestStatusEnum.pendingAcknowledgment: if (!statusTransaction.contains(4)) statusTransaction.add(4); break; - case RequestTypeEnum.unassigned: - case RequestTypeEnum.highPriority: - case RequestTypeEnum.overdue: + case RequestStatusEnum.unassigned: + case RequestStatusEnum.highPriority: + case RequestStatusEnum.overdue: // These are handled separately above break; } @@ -556,7 +556,7 @@ class CategoryTabs { String label; int tag; int id; - RequestTypeEnum requestType; + RequestStatusEnum requestType; String icon; Color iconColor; bool isHighPriority; @@ -568,12 +568,12 @@ class CategoryTabs { List tabs = []; if (userType == UsersTypes.engineer) { // Order: 1-UnAssigned, 2-HighPriority, 3-Overdue, 4-Open, 5-InProgress, 6-Completed - tabs.add(CategoryTabs(label: 'UnAssigned', tag: 1, id: 1, requestType: RequestTypeEnum.unassigned, icon: "dashboard/unassigned", iconColor: AppColor.unassignedStatus(context))); - tabs.add(CategoryTabs(label: context.translation.highPriority, tag: 3, id: 4, requestType: RequestTypeEnum.highPriority, icon: "high_priority", iconColor: AppColor.red30, isHighPriority: true)); - tabs.add(CategoryTabs(label: context.translation.overdue, tag: 3, id: 4, requestType: RequestTypeEnum.overdue, icon: "overdue", iconColor: AppColor.yellowIcon(context), isOverDue: true)); - tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestTypeEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); - tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 3, requestType: RequestTypeEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); - tabs.add(CategoryTabs(label: 'Completed', tag: 3, id: 4, requestType: RequestTypeEnum.completed, icon: "complete_request", iconColor: AppColor.completedColor)); + tabs.add(CategoryTabs(label: 'UnAssigned', tag: 1, id: 1, requestType: RequestStatusEnum.unassigned, icon: "dashboard/unassigned", iconColor: AppColor.unassignedStatus(context))); + tabs.add(CategoryTabs(label: context.translation.highPriority, tag: 3, id: 4, requestType: RequestStatusEnum.highPriority, icon: "high_priority", iconColor: AppColor.red30, isHighPriority: true)); + tabs.add(CategoryTabs(label: context.translation.overdue, tag: 3, id: 4, requestType: RequestStatusEnum.overdue, icon: "overdue", iconColor: AppColor.yellowIcon(context), isOverDue: true)); + tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestStatusEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); + tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 3, requestType: RequestStatusEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); + tabs.add(CategoryTabs(label: 'Completed', tag: 3, id: 4, requestType: RequestStatusEnum.completed, icon: "complete_request", iconColor: AppColor.completedColor)); return tabs; } @@ -584,29 +584,29 @@ class CategoryTabs { // tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 2)); // tabs.add(CategoryTabs(label: 'Completed', tag: 4, id: 3)); - tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 2, requestType: RequestTypeEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); - tabs.add(CategoryTabs(label: 'Completed', tag: 4, id: 3, requestType: RequestTypeEnum.completed, icon: "complete_request", iconColor: AppColor.completedColor)); + tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 2, requestType: RequestStatusEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); + tabs.add(CategoryTabs(label: 'Completed', tag: 4, id: 3, requestType: RequestStatusEnum.completed, icon: "complete_request", iconColor: AppColor.completedColor)); return tabs; } if (userType == UsersTypes.qualityUser) { - tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestTypeEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); - tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 3, requestType: RequestTypeEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); - tabs.add(CategoryTabs(label: 'Closed', tag: 3, id: 4, requestType: RequestTypeEnum.closed, icon: "complete_request", iconColor: AppColor.completedColor)); + tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestStatusEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); + tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 3, requestType: RequestStatusEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); + tabs.add(CategoryTabs(label: 'Closed', tag: 3, id: 4, requestType: RequestStatusEnum.closed, icon: "complete_request", iconColor: AppColor.completedColor)); return tabs; } if (userType == UsersTypes.commissioningEngineer) { - tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestTypeEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); - tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 3, requestType: RequestTypeEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); - tabs.add(CategoryTabs(label: 'Closed', tag: 3, id: 4, requestType: RequestTypeEnum.closed, icon: "complete_request", iconColor: AppColor.completedColor)); + tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestStatusEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); + tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 3, requestType: RequestStatusEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); + tabs.add(CategoryTabs(label: 'Closed', tag: 3, id: 4, requestType: RequestStatusEnum.closed, icon: "complete_request", iconColor: AppColor.completedColor)); return tabs; } - tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestTypeEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); - tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 3, requestType: RequestTypeEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); + tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestStatusEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); + tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 3, requestType: RequestStatusEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); // tabs.add(CategoryTabs(label: 'Pending Acknowledgement', tag: 3, id: 1, requestType: RequestTypeEnum.pendingAcknowledgment, icon: "complete_request", iconColor: AppColor.overdueColor)); - tabs.add(CategoryTabs(label: 'Acknowledgement', tag: 4, id: 1, requestType: RequestTypeEnum.pendingAcknowledgment, icon: "complete_request", iconColor: AppColor.overdueColor)); - tabs.add(CategoryTabs(label: 'Canceled', tag: 6, id: 4, requestType: RequestTypeEnum.canceled, icon: "dashboard/unassigned", iconColor: AppColor.red30)); + tabs.add(CategoryTabs(label: 'Acknowledgement', tag: 4, id: 1, requestType: RequestStatusEnum.pendingAcknowledgment, icon: "complete_request", iconColor: AppColor.overdueColor)); + tabs.add(CategoryTabs(label: 'Canceled', tag: 6, id: 4, requestType: RequestStatusEnum.canceled, icon: "dashboard/unassigned", iconColor: AppColor.red30)); return tabs; } } diff --git a/lib/dashboard_latest/dashboard_view.dart b/lib/dashboard_latest/dashboard_view.dart index 6de6e88b..70d1ffb9 100644 --- a/lib/dashboard_latest/dashboard_view.dart +++ b/lib/dashboard_latest/dashboard_view.dart @@ -147,29 +147,29 @@ class _DashboardViewState extends State { } // Status categories - if (!tab.isHighPriority && !tab.isOverDue && tab.requestType != RequestTypeEnum.unassigned) { + if (!tab.isHighPriority && !tab.isOverDue && tab.requestType != RequestStatusEnum.unassigned) { switch (tab.requestType) { - case RequestTypeEnum.open: + case RequestStatusEnum.open: if (!statusTransaction.contains(1)) statusTransaction.add(1); break; - case RequestTypeEnum.inProgress: + case RequestStatusEnum.inProgress: if (!statusTransaction.contains(2)) statusTransaction.add(2); break; - case RequestTypeEnum.completed: + case RequestStatusEnum.completed: if (!statusTransaction.contains(4)) statusTransaction.add(4); break; - case RequestTypeEnum.closed: + case RequestStatusEnum.closed: if (!statusTransaction.contains(4)) statusTransaction.add(4); break; - case RequestTypeEnum.canceled: + case RequestStatusEnum.canceled: if (!statusTransaction.contains(5)) statusTransaction.add(5); break; - case RequestTypeEnum.pendingAcknowledgment: + case RequestStatusEnum.pendingAcknowledgment: if (!statusTransaction.contains(3)) statusTransaction.add(3); break; - case RequestTypeEnum.unassigned: - case RequestTypeEnum.highPriority: - case RequestTypeEnum.overdue: + case RequestStatusEnum.unassigned: + case RequestStatusEnum.highPriority: + case RequestStatusEnum.overdue: break; } } diff --git a/lib/dashboard_latest/widgets/request_category_fragment.dart b/lib/dashboard_latest/widgets/request_category_fragment.dart index c6f80cad..2ebaf87e 100644 --- a/lib/dashboard_latest/widgets/request_category_fragment.dart +++ b/lib/dashboard_latest/widgets/request_category_fragment.dart @@ -380,7 +380,7 @@ class _RequestCategoryFragmentState extends State with }); // Check if this is UnAssigned tab (index 0 for engineer) - bool isUnassignedTab = tabs[index].requestType == RequestTypeEnum.unassigned; + bool isUnassignedTab = tabs[index].requestType == RequestStatusEnum.unassigned; // Update selection state requestsProvider.currentListIndex = index; diff --git a/lib/dashboard_latest/widgets/requests_fragment.dart b/lib/dashboard_latest/widgets/requests_fragment.dart index e613d0eb..2be44381 100644 --- a/lib/dashboard_latest/widgets/requests_fragment.dart +++ b/lib/dashboard_latest/widgets/requests_fragment.dart @@ -46,24 +46,24 @@ class RequestsFragment extends StatelessWidget { List listItems = []; if (context.userProvider.isNurse) { listItems = [ - requestType(data.dashboardCount?.data?.countOpen ?? 0, "dashboard/open_icon", context.translation.open, context, data.isLoading, RequestTypeEnum.open, AppColor.openColor), - requestType(data.dashboardCount?.data?.countInprogress ?? 0, "dashboard/inprogress_icon", context.translation.inProgress, context, data.isLoading, RequestTypeEnum.inProgress, + requestType(data.dashboardCount?.data?.countOpen ?? 0, "dashboard/open_icon", context.translation.open, context, data.isLoading, RequestStatusEnum.open, AppColor.openColor), + requestType(data.dashboardCount?.data?.countInprogress ?? 0, "dashboard/inprogress_icon", context.translation.inProgress, context, data.isLoading, RequestStatusEnum.inProgress, AppColor.primary10), requestType( - data.dashboardCount?.data?.countAcknowledge ?? 0, "complete_request", "Acknowledgement", context, data.isLoading, RequestTypeEnum.pendingAcknowledgment, AppColor.overdueColor), - requestType(data.dashboardCount?.data?.countCanceled ?? 0, "dashboard/unassigned", "Canceled", context, data.isLoading, RequestTypeEnum.canceled, AppColor.red30), + data.dashboardCount?.data?.countAcknowledge ?? 0, "complete_request", "Acknowledgement", context, data.isLoading, RequestStatusEnum.pendingAcknowledgment, AppColor.overdueColor), + requestType(data.dashboardCount?.data?.countCanceled ?? 0, "dashboard/unassigned", "Canceled", context, data.isLoading, RequestStatusEnum.canceled, AppColor.red30), ]; } else { listItems = [ requestType( - data.dashboardCount?.data?.countUnAssigned ?? 0, "dashboard/unassigned", "UnAssigned", context, data.isLoading, RequestTypeEnum.unassigned, AppColor.unassignedStatus(context)), - requestType(data.dashboardCount?.data?.countOpen ?? 0, "dashboard/open_icon", context.translation.open, context, data.isLoading, RequestTypeEnum.open, AppColor.openColor), - requestType(data.dashboardCount?.data?.countInprogress ?? 0, "dashboard/inprogress_icon", context.translation.inProgress, context, data.isLoading, RequestTypeEnum.inProgress, + data.dashboardCount?.data?.countUnAssigned ?? 0, "dashboard/unassigned", "UnAssigned", context, data.isLoading, RequestStatusEnum.unassigned, AppColor.unassignedStatus(context)), + requestType(data.dashboardCount?.data?.countOpen ?? 0, "dashboard/open_icon", context.translation.open, context, data.isLoading, RequestStatusEnum.open, AppColor.openColor), + requestType(data.dashboardCount?.data?.countInprogress ?? 0, "dashboard/inprogress_icon", context.translation.inProgress, context, data.isLoading, RequestStatusEnum.inProgress, AppColor.primary10), requestType( - data.dashboardCount?.data?.countComplete ?? 0, "complete_request", context.translation.completed, context, data.isLoading, RequestTypeEnum.completed, AppColor.completedColor), - requestType(data.dashboardCount?.data?.countOverdue ?? 0, "overdue", context.translation.overdue, context, data.isLoading, RequestTypeEnum.overdue, AppColor.yellowIcon(context)), - requestType(data.dashboardCount?.data?.countHighPriority ?? 0, "high_priority", context.translation.highPriority, context, data.isLoading, RequestTypeEnum.highPriority, AppColor.red30), + data.dashboardCount?.data?.countComplete ?? 0, "complete_request", context.translation.completed, context, data.isLoading, RequestStatusEnum.completed, AppColor.completedColor), + requestType(data.dashboardCount?.data?.countOverdue ?? 0, "overdue", context.translation.overdue, context, data.isLoading, RequestStatusEnum.overdue, AppColor.yellowIcon(context)), + requestType(data.dashboardCount?.data?.countHighPriority ?? 0, "high_priority", context.translation.highPriority, context, data.isLoading, RequestStatusEnum.highPriority, AppColor.red30), ]; } @@ -77,7 +77,7 @@ class RequestsFragment extends StatelessWidget { }); } - Widget requestType(int value, String icon, String title, BuildContext context, bool isLoading, RequestTypeEnum requestType, Color iconColor) { + Widget requestType(int value, String icon, String title, BuildContext context, bool isLoading, RequestStatusEnum requestType, Color iconColor) { return CustomBadge( value: isLoading ? 0 : value, positionR: -4, diff --git a/lib/extensions/enum_extensions.dart b/lib/extensions/enum_extensions.dart index 5039329c..a3275466 100644 --- a/lib/extensions/enum_extensions.dart +++ b/lib/extensions/enum_extensions.dart @@ -197,7 +197,7 @@ enum AssetDeliveryStageEnum { other, } -enum RequestTypeEnum { +enum RequestStatusEnum { unassigned, open, inProgress, diff --git a/lib/models/enums/request_attachment_type_enum.dart b/lib/models/enums/request_attachment_type_enum.dart new file mode 100644 index 00000000..8bffa130 --- /dev/null +++ b/lib/models/enums/request_attachment_type_enum.dart @@ -0,0 +1,206 @@ + +enum RequestAttachmentTypeEnum { + correctiveMaintenance, // 1 + gasRefill, // 2 + transferAsset, // 3 + preventiveMaintenance, // 4 + recurrentWo, // 5 + taskRequest, // 6 + recallAndAlert, // 7 + assetInventory, // 8 + assessmentOfNeedAndTechnology, // 9 + equipmentInternalAudit, // 10 + systemInternalAudit, // 11 + loanEquipment, // 12 + assetDelivery, // 13 + medicalGasInspection, // 14 + demo, // 15 + incidents, // 16 + sparePartActivity, // 17 + updateDeliveryNotes, // 18 + traf, // 19 +} + +extension RequestAttachmentTypeEnumExtension on RequestAttachmentTypeEnum { + int get id { + switch (this) { + case RequestAttachmentTypeEnum.correctiveMaintenance: + return 1; + case RequestAttachmentTypeEnum.gasRefill: + return 2; + case RequestAttachmentTypeEnum.transferAsset: + return 3; + case RequestAttachmentTypeEnum.preventiveMaintenance: + return 4; + case RequestAttachmentTypeEnum.recurrentWo: + return 5; + case RequestAttachmentTypeEnum.taskRequest: + return 6; + case RequestAttachmentTypeEnum.recallAndAlert: + return 7; + case RequestAttachmentTypeEnum.assetInventory: + return 8; + case RequestAttachmentTypeEnum.assessmentOfNeedAndTechnology: + return 9; + case RequestAttachmentTypeEnum.equipmentInternalAudit: + return 10; + case RequestAttachmentTypeEnum.systemInternalAudit: + return 11; + case RequestAttachmentTypeEnum.loanEquipment: + return 12; + case RequestAttachmentTypeEnum.assetDelivery: + return 13; + case RequestAttachmentTypeEnum.medicalGasInspection: + return 14; + case RequestAttachmentTypeEnum.demo: + return 15; + case RequestAttachmentTypeEnum.incidents: + return 16; + case RequestAttachmentTypeEnum.sparePartActivity: + return 17; + case RequestAttachmentTypeEnum.updateDeliveryNotes: + return 18; + case RequestAttachmentTypeEnum.traf: + return 19; + } + } + int get lookupEnumId { + switch (this) { + ///values with 0 we need to check with backend team for the correct lookupEnumId + case RequestAttachmentTypeEnum.correctiveMaintenance: + return 40305; + case RequestAttachmentTypeEnum.gasRefill: + return 40307; + case RequestAttachmentTypeEnum.transferAsset: + return 40304; + case RequestAttachmentTypeEnum.preventiveMaintenance: + return 40313; + case RequestAttachmentTypeEnum.recurrentWo: + return 40314; + case RequestAttachmentTypeEnum.taskRequest: + return 40317; + case RequestAttachmentTypeEnum.recallAndAlert: + return 40316; + case RequestAttachmentTypeEnum.assetInventory: + return 40303; + case RequestAttachmentTypeEnum.assessmentOfNeedAndTechnology: + return 40319; + case RequestAttachmentTypeEnum.equipmentInternalAudit: + return 40323; + case RequestAttachmentTypeEnum.systemInternalAudit: + return 40322; + case RequestAttachmentTypeEnum.loanEquipment: + return 3053; + case RequestAttachmentTypeEnum.assetDelivery: + return 5009; + case RequestAttachmentTypeEnum.medicalGasInspection: + return 3012; + case RequestAttachmentTypeEnum.demo: + return 4106; + case RequestAttachmentTypeEnum.incidents: + return 40308; + case RequestAttachmentTypeEnum.sparePartActivity: + return 40321; + case RequestAttachmentTypeEnum.updateDeliveryNotes: + return 40309; + case RequestAttachmentTypeEnum.traf: + return 40319; + } + } + // String getName(BuildContext context) { + // switch (this) { + // case RequestTypeEnum.correctiveMaintenance: + // return context.translation.correctiveMaintenance; + // case RequestTypeEnum.gasRefill: + // return context.translation.gasRefill; + // case RequestTypeEnum.transferAsset: + // return context.translation.transferAsset; + // case RequestTypeEnum.preventiveMaintenance: + // return context.translation.preventiveMaintenance; + // case RequestTypeEnum.recurrentWo: + // return context.translation.recurrentWo; + // case RequestTypeEnum.taskRequest: + // return context.translation.taskRequest; + // case RequestTypeEnum.recallAndAlert: + // return 'Recall and Alert'; + // case RequestTypeEnum.assetInventory: + // return 'Asset Inventory'; + // case RequestTypeEnum.assessmentOfNeedAndTechnology: + // return 'Assessment of Need & Technology'; + // case RequestTypeEnum.equipmentInternalAudit: + // return 'Equipment Internal Audit'; + // case RequestTypeEnum.systemInternalAudit: + // return 'System Internal Audit'; + // case RequestTypeEnum.loanEquipment: + // return 'Loan Equipment'; + // case RequestTypeEnum.assetDelivery: + // return 'Asset Delivery'; + // case RequestTypeEnum.medicalGasInspection: + // return 'Medical Gas Inspection'; + // case RequestTypeEnum.demo: + // return 'Demo'; + // case RequestTypeEnum.incidents: + // return 'Incidents'; + // case RequestTypeEnum.sparePartActivity: + // return 'Spare Part Activity'; + // case RequestTypeEnum.updateDeliveryNotes: + // return 'Update Delivery Notes'; + // case RequestTypeEnum.traf: + // return 'Traf'; + // } + // } + + static RequestAttachmentTypeEnum? fromId(int? id) { + if (id == null) return null; + switch (id) { + case 1: + return RequestAttachmentTypeEnum.correctiveMaintenance; + case 2: + return RequestAttachmentTypeEnum.gasRefill; + case 3: + return RequestAttachmentTypeEnum.transferAsset; + case 4: + return RequestAttachmentTypeEnum.preventiveMaintenance; + case 5: + return RequestAttachmentTypeEnum.recurrentWo; + case 6: + return RequestAttachmentTypeEnum.taskRequest; + case 7: + return RequestAttachmentTypeEnum.recallAndAlert; + case 8: + return RequestAttachmentTypeEnum.assetInventory; + case 9: + return RequestAttachmentTypeEnum.assessmentOfNeedAndTechnology; + case 10: + return RequestAttachmentTypeEnum.equipmentInternalAudit; + case 11: + return RequestAttachmentTypeEnum.systemInternalAudit; + case 12: + return RequestAttachmentTypeEnum.loanEquipment; + case 13: + return RequestAttachmentTypeEnum.assetDelivery; + case 14: + return RequestAttachmentTypeEnum.medicalGasInspection; + case 15: + return RequestAttachmentTypeEnum.demo; + case 16: + return RequestAttachmentTypeEnum.incidents; + case 17: + return RequestAttachmentTypeEnum.sparePartActivity; + case 18: + return RequestAttachmentTypeEnum.updateDeliveryNotes; + case 19: + return RequestAttachmentTypeEnum.traf; + default: + return null; + } + } + // static String getNameFromId(int id, BuildContext context) { + // final requestType = fromId(id); + // return requestType?.getName(context) ?? "Type $id"; + // } + static int? getLookupEnumIdFromId(int? id) { + final requestType = fromId(id); + return requestType?.lookupEnumId; + } +} \ No newline at end of file diff --git a/lib/models/generic_attachment_model.dart b/lib/models/generic_attachment_model.dart index a59e5b0f..684c3c61 100644 --- a/lib/models/generic_attachment_model.dart +++ b/lib/models/generic_attachment_model.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; @@ -314,4 +316,13 @@ class GenericAttachmentModel { data['attachmentURL'] = attachmentURL; return data; } + Map toTaskJson() { + final Map data = {}; + data['id'] = id; + data['name'] = name; + data['createdBy'] = createdBy; + data['originalName'] = originalName; + data['attachmentTypeId'] = documentType?.id; + return data; + } } 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 6bce945a..fd4dc795 100644 --- a/lib/models/new_models/task_request/task_request_model.dart +++ b/lib/models/new_models/task_request/task_request_model.dart @@ -284,7 +284,7 @@ class TaskData { data['callComment'] = callComment; if (taskJobAttachments != null) { - data['taskJobAttachments'] = taskJobAttachments!.map((e) => e?.toJson() ?? {}).toList(); + data['taskJobAttachments'] = taskJobAttachments!.map((e) => e.toTaskJson()).toList(); } if (assignedEngineer != null) { @@ -369,7 +369,7 @@ class TaskData { data['taskJobActivityEngineerTimers'] = taskJobActivityEngineerTimers!.map((v) => v.toJson()).toList(); } if (taskJobAttachments != null) { - data['attachments'] = taskJobAttachments!.map((v) => v?.toJson() ?? {}).toList(); + data['attachments'] = taskJobAttachments!.map((v) => v.toTaskJson()).toList(); } data['installationBuildingId'] = building?.id; data['installationFloorId'] = floor?.id; @@ -781,7 +781,7 @@ class AddTaskModel { 'reasonOfFSCA': reasonOfFSCA, 'correctiveActionDescription': correctiveActionDescription, 'evaluatorUserId': taskEvaluatorUser?.userId, - 'attachments': attachments?.map((x) => x.toJson() ?? {}).toList(), + 'attachments': attachments?.map((x) => x.toTaskJson()).toList(), }; } diff --git a/lib/modules/asset_delivery_module/pages/attachment_view.dart b/lib/modules/asset_delivery_module/pages/attachment_view.dart index ebcba992..70f3a956 100644 --- a/lib/modules/asset_delivery_module/pages/attachment_view.dart +++ b/lib/modules/asset_delivery_module/pages/attachment_view.dart @@ -9,6 +9,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/modules/asset_delivery_module/provider/asset_delivery_provider.dart'; import 'package:test_sa/modules/cm_module/cm_request_utils.dart'; @@ -19,6 +20,7 @@ import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/views/widgets/images/files_list.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; class AssetDeliveryAttachmentView extends StatefulWidget { @@ -86,6 +88,7 @@ class _AssetDeliveryAttachmentViewState extends State URLs.getFileUrl(e.name ?? '') ?? '',).toList() ?? []).toShadowContainer( - context, - borderRadius: 20, - padding: 12, - margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - ), + : Column( + children: [ + InfoHeader16Widget("Attachments".addTranslation), + FilesList( showAsListView: true, + types: _attachments.map((doc) { + final attachmentType = doc.documentType?.name ?? ''; + return attachmentType.isNotEmpty ? attachmentType : 'Asset Guide'; + }).toList(), + images: _attachments.map((e) => URLs.getFileUrl(e.name ?? '') ?? '',).toList() ?? []).toShadowContainer( + context, + borderRadius: 20, + padding: 12, + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + ), + ], + ), ], ), ), diff --git a/lib/modules/asset_delivery_module/provider/attachment_type_provider.dart b/lib/modules/asset_delivery_module/provider/attachment_type_provider.dart index 7d916444..becc0696 100644 --- a/lib/modules/asset_delivery_module/provider/attachment_type_provider.dart +++ b/lib/modules/asset_delivery_module/provider/attachment_type_provider.dart @@ -1,9 +1,12 @@ import 'dart:convert'; +import 'dart:developer'; import 'package:http/http.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/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; + ///TODO need to remove this after verifying we need to use the same for all modules .. class AttachmentTypeLookupProvider extends LoadingListNotifier { @override @@ -38,10 +41,18 @@ class AttachmentTypeLookupProviderLatest extends LoadingListNotifier { if (loading == true) return -2; loading = true; notifyListeners(); + int? lookupEnum = RequestAttachmentTypeEnumExtension.getLookupEnumIdFromId(id); + if (lookupEnum == null) { + log('Invalid request type id: $id'); + loading = false; + stateCode = -1; + notifyListeners(); + return -1; + } try { - // OPTIMIZATION: Enable caching for demo document types lookup + log('Request type id: $id, Lookup enum: $lookupEnum'); Response response = await ApiManager.instance.get( - URLs.getAttachmentTypesLookup, + '${URLs.getAttachmentTypesLookup}?lookupEnum=$lookupEnum', useCache: true, enableToastMessage: false, ); diff --git a/lib/modules/asset_inventory_module/pages/asset_inventory_form_view.dart b/lib/modules/asset_inventory_module/pages/asset_inventory_form_view.dart index 11785f86..2fe422b4 100644 --- a/lib/modules/asset_inventory_module/pages/asset_inventory_form_view.dart +++ b/lib/modules/asset_inventory_module/pages/asset_inventory_form_view.dart @@ -11,6 +11,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/modules/asset_inventory_module/models/asset_inventory_model.dart'; import 'package:test_sa/modules/asset_inventory_module/pages/search_asset_view.dart'; @@ -298,8 +299,9 @@ class _AssetInventoryFormViewState extends State { 'Attachments'.addTranslation, style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.white936), ), - 12.height, + AttachmentPicker( + moduleId: RequestAttachmentTypeEnum.assetInventory.id, label: context.translation.attachFiles, attachment: attachments, showAsListView: true, diff --git a/lib/modules/cm_module/create_cm_request.dart b/lib/modules/cm_module/create_cm_request.dart index 2ddf921c..bc54fae1 100644 --- a/lib/modules/cm_module/create_cm_request.dart +++ b/lib/modules/cm_module/create_cm_request.dart @@ -12,6 +12,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; @@ -157,6 +158,7 @@ class _CreateCMRequestState extends State with TickerProviderSt 24.height, AttachmentPicker( label: context.translation.attachImage, + moduleId: RequestAttachmentTypeEnum.correctiveMaintenance.id, showAsListView: true, attachment: _deviceImages, onlyImages: false, diff --git a/lib/modules/cm_module/views/components/activities_list_view.dart b/lib/modules/cm_module/views/components/activities_list_view.dart index a4126d32..b611c3a4 100644 --- a/lib/modules/cm_module/views/components/activities_list_view.dart +++ b/lib/modules/cm_module/views/components/activities_list_view.dart @@ -4,6 +4,7 @@ import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/enums/user_types.dart'; @@ -173,6 +174,7 @@ class _ActivitiesListViewState extends State { if (activity.activitySparePart?.acitiySparePartAttachments?.isNotEmpty ?? false) ...[ 2.height, const Divider().defaultStyle(context), + InfoHeader16Widget("Attachments".addTranslation), FilesList( showAsListView: true, types: activity.activitySparePart!.acitiySparePartAttachments! diff --git a/lib/modules/cm_module/views/components/service_request_detail_view.dart b/lib/modules/cm_module/views/components/service_request_detail_view.dart index 008bbe4a..4a081b6e 100644 --- a/lib/modules/cm_module/views/components/service_request_detail_view.dart +++ b/lib/modules/cm_module/views/components/service_request_detail_view.dart @@ -10,6 +10,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/enums/work_order_next_step.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; @@ -56,19 +57,14 @@ class _ServiceRequestDetailViewState extends State { return Consumer(builder: (pContext, requestProvider, _) { if (userProvider.user?.type == UsersTypes.engineer) { _userAttachments = requestProvider.currentWorkOrder?.data?.workOrderAttachments - .whereType() - .where((e) => e.createdBy == userProvider.user?.userID) - .map((e) => GenericAttachmentModel(id: e.id, name: e.name, createdBy: e.createdBy, documentType: e.documentType)) - .toList() ?? []; - _attachments = requestProvider.currentWorkOrder?.data?.workOrderAttachments - .whereType() - .where((e) => e.createdBy != userProvider.user?.userID) - .toList() ?? []; + .whereType() + .where((e) => e.createdBy == userProvider.user?.userID) + .map((e) => GenericAttachmentModel(id: e.id, name: e.name, createdBy: e.createdBy, documentType: e.documentType)) + .toList() ?? + []; + _attachments = requestProvider.currentWorkOrder?.data?.workOrderAttachments.whereType().where((e) => e.createdBy != userProvider.user?.userID).toList() ?? []; } else { - _attachments = requestProvider.currentWorkOrder?.data?.workOrderAttachments - .whereType() - .where((e) => e.createdBy == userProvider.user?.userID) - .toList() ?? []; + _attachments = requestProvider.currentWorkOrder?.data?.workOrderAttachments.whereType().where((e) => e.createdBy == userProvider.user?.userID).toList() ?? []; } bool showInitialVisitCard = requestProvider.currentWorkOrder?.data?.needAVisitDateTime != null && @@ -286,18 +282,32 @@ class _ServiceRequestDetailViewState extends State { label: context.translation.attachments, showAsListView: true, attachment: _userAttachments, + moduleId: RequestAttachmentTypeEnum.correctiveMaintenance.id, buttonColor: AppColor.primary10, onlyImages: false, buttonIcon: 'quotation_icon'.toSvgAsset(color: AppColor.primary10), onChange: (attachment) { - requestProvider.addWorkOrderAttachment(woId: workOrder.requestId!, attachments: attachment, otherAttachment: _attachments,); + requestProvider.addWorkOrderAttachment( + woId: workOrder.requestId!, + attachments: attachment, + otherAttachment: _attachments, + ); }, ), ], ] else ...[ if (_attachments.isNotEmpty) ...[ const Divider().defaultStyle(context), - FilesList(images: _attachments.map((toElement) => URLs.getFileUrl(toElement.name!)!).toList(),showAsListView: true,), + InfoHeader16Widget("Attachments".addTranslation), + FilesList( + images: _attachments.map((toElement) => URLs.getFileUrl(toElement.name!)!).toList(), + showAsListView: true, + types: _attachments + .whereType() + .where((e) => e.documentType != null && e.documentType!.name!.isNotEmpty) + .map((toElement) => toElement.documentType!.name!) + .toList(), + ), ], //handle nurse case.. ], diff --git a/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart b/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart index a6b3f5d7..41e4bc68 100644 --- a/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart +++ b/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart @@ -7,6 +7,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/helper_data_models/asset_retired/asset_retired_model.dart'; import 'package:test_sa/models/lookup.dart'; @@ -106,6 +107,7 @@ class _AssetRetiredState extends State with TickerProviderStateMix AttachmentPicker( label: context.translation.attachFiles, attachment: _attachments, + moduleId: RequestAttachmentTypeEnum.assetDelivery.id, showAsListView: true, onlyImages: false, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), diff --git a/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart b/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart index 6c762356..cac36002 100644 --- a/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart +++ b/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart @@ -11,6 +11,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/helper_data_models/spare_part/activity_spare_part_model.dart'; import 'package:test_sa/models/lookup.dart'; @@ -293,6 +294,7 @@ class _SparePartRequestState extends State with TickerProvider AttachmentPicker( label: context.translation.attachQuotation, showAsListView: true, + moduleId: RequestAttachmentTypeEnum.sparePartActivity.id, attachment: attachments, buttonIcon: 'quotation_icon'.toSvgAsset(color: AppColor.primary10), // buttonColor: AppColor.primary10, diff --git a/lib/modules/demo_module/create_demo_request_page.dart b/lib/modules/demo_module/create_demo_request_page.dart index f7f13be8..5f7beccf 100644 --- a/lib/modules/demo_module/create_demo_request_page.dart +++ b/lib/modules/demo_module/create_demo_request_page.dart @@ -13,6 +13,7 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/device/asset.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; @@ -516,9 +517,10 @@ class _CreateDemoRequestPageState extends State with Tick attachment: _attachments, buttonColor: AppColor.primary10.withOpacity(demoDocumentLookup != null ? 1 : .4), onlyImages: false, - enabled: demoDocumentLookup != null, - documentType: demoDocumentLookup, + // enabled: demoDocumentLookup != null, + // documentType: demoDocumentLookup, showAsListView: true, + moduleId: RequestAttachmentTypeEnum.demo.id, buttonIcon: 'image-plus'.toSvgAsset(color: (AppColor.primary10)), // onChange: (attachments) { // _attachments = attachments; diff --git a/lib/modules/demo_module/demo_activities_page.dart b/lib/modules/demo_module/demo_activities_page.dart index a7baf9ef..7fa31795 100644 --- a/lib/modules/demo_module/demo_activities_page.dart +++ b/lib/modules/demo_module/demo_activities_page.dart @@ -5,6 +5,7 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/views/widgets/images/files_list.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; import '../../controllers/api_routes/urls.dart'; import '../../extensions/text_extensions.dart'; @@ -54,10 +55,7 @@ class DemoActivitiesPage extends StatelessWidget { 12.height, if (allAttachments.isNotEmpty) ...[ const Divider().defaultStyle(context), - Text( - "Attachments".addTranslation, - style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), - ), + InfoHeader16Widget("Attachments".addTranslation), FilesList( showAsListView: true, types: allAttachments diff --git a/lib/modules/demo_module/update_demo-request_view.dart b/lib/modules/demo_module/update_demo-request_view.dart index 0e7c3913..0fd95ef1 100644 --- a/lib/modules/demo_module/update_demo-request_view.dart +++ b/lib/modules/demo_module/update_demo-request_view.dart @@ -11,6 +11,7 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/building.dart'; @@ -225,8 +226,7 @@ class _UpdateDemoRequestViewState extends State with Tick attachment: attachments, buttonColor: AppColor.black10.withOpacity(demoDocumentLookup != null ? 1 : .4), onlyImages: false, - // documentType: demoDocumentLookup, - // enabled: demoDocumentLookup != null, + moduleId: RequestAttachmentTypeEnum.demo.id, showAsListView: true, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), ), diff --git a/lib/modules/incident_module/create_incident_request_page.dart b/lib/modules/incident_module/create_incident_request_page.dart index 562bedfb..425f931d 100644 --- a/lib/modules/incident_module/create_incident_request_page.dart +++ b/lib/modules/incident_module/create_incident_request_page.dart @@ -11,6 +11,7 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/device/asset.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/building.dart'; @@ -171,6 +172,7 @@ class _CreateIncidentRequestPageState extends State { label: context.translation.attachments, attachment: attachments, buttonColor: AppColor.black10, + moduleId: RequestAttachmentTypeEnum.incidents.id, onlyImages: false, showAsListView: true, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), diff --git a/lib/modules/internal_audit_module/pages/equipment_internal_audit/create_equipment_internal_audit_form.dart b/lib/modules/internal_audit_module/pages/equipment_internal_audit/create_equipment_internal_audit_form.dart index 7d75c9ef..c501205e 100644 --- a/lib/modules/internal_audit_module/pages/equipment_internal_audit/create_equipment_internal_audit_form.dart +++ b/lib/modules/internal_audit_module/pages/equipment_internal_audit/create_equipment_internal_audit_form.dart @@ -8,6 +8,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/modules/cm_module/cm_request_utils.dart'; @@ -120,6 +121,7 @@ class _CreateEquipmentInternalAuditFormState extends State with Tick AttachmentPicker( label: context.translation.attachments, attachment: attachments, + moduleId: RequestAttachmentTypeEnum.loanEquipment.id, onlyImages: false, showAsListView: true, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), diff --git a/lib/modules/loan_module/pages/installation_form_view.dart b/lib/modules/loan_module/pages/installation_form_view.dart index fa54d82d..08e81686 100644 --- a/lib/modules/loan_module/pages/installation_form_view.dart +++ b/lib/modules/loan_module/pages/installation_form_view.dart @@ -10,6 +10,7 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/modules/cm_module/cm_request_utils.dart'; @@ -166,6 +167,7 @@ class _InstallationFormViewState extends State { attachment: _attachments, buttonColor: AppColor.primary10, onlyImages: false, + moduleId: RequestAttachmentTypeEnum.loanEquipment.id, showAsListView: true, buttonIcon: 'attachment_icon'.toSvgAsset(color: AppColor.primary10), onChange: (attachments) { diff --git a/lib/modules/loan_module/pages/installation_pullout_form_view.dart b/lib/modules/loan_module/pages/installation_pullout_form_view.dart index 2bb85358..7dc09df8 100644 --- a/lib/modules/loan_module/pages/installation_pullout_form_view.dart +++ b/lib/modules/loan_module/pages/installation_pullout_form_view.dart @@ -11,6 +11,7 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/modules/cm_module/cm_request_utils.dart'; @@ -169,6 +170,7 @@ class _InstallationPullOutFormViewState extends State { attachment: _attachments, showAsListView: true, buttonColor: AppColor.primary10, + moduleId: RequestAttachmentTypeEnum.updateDeliveryNotes.id, onlyImages: false, buttonIcon: 'attachment_icon'.toSvgAsset(color: AppColor.primary10), ), diff --git a/lib/modules/medical_gas_inspection/update_medical_gas_inspection_page.dart b/lib/modules/medical_gas_inspection/update_medical_gas_inspection_page.dart index ef50b0df..93b29587 100644 --- a/lib/modules/medical_gas_inspection/update_medical_gas_inspection_page.dart +++ b/lib/modules/medical_gas_inspection/update_medical_gas_inspection_page.dart @@ -8,6 +8,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; @@ -202,6 +203,7 @@ class _UpdateMedicalGasInspectionPageState extends State { label: context.translation.attachments, showAsListView: true, attachment: ppmProvider.ppmPlanAttachments, + moduleId: RequestAttachmentTypeEnum.preventiveMaintenance.id, buttonColor: AppColor.black10, onlyImages: false, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), diff --git a/lib/modules/tm_module/device_transfer/create_device_transfer_request.dart b/lib/modules/tm_module/device_transfer/create_device_transfer_request.dart index 8304293f..24494964 100644 --- a/lib/modules/tm_module/device_transfer/create_device_transfer_request.dart +++ b/lib/modules/tm_module/device_transfer/create_device_transfer_request.dart @@ -13,6 +13,7 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/device/asset_transfer_attachment.dart'; import 'package:test_sa/models/device/device_transfer.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/new_models/department.dart'; @@ -247,6 +248,7 @@ class _CreateDeviceTransferRequestState extends State { AttachmentPicker( label: context.translation.attachFiles, showAsListView: true, + moduleId: RequestAttachmentTypeEnum.transferAsset.id, attachment: attachments, buttonColor: AppColor.black10, onlyImages: false, diff --git a/lib/modules/tm_module/gas_refill/gas_refill_request_form.dart b/lib/modules/tm_module/gas_refill/gas_refill_request_form.dart index cb030a1d..87f788c2 100644 --- a/lib/modules/tm_module/gas_refill/gas_refill_request_form.dart +++ b/lib/modules/tm_module/gas_refill/gas_refill_request_form.dart @@ -10,6 +10,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; @@ -218,6 +219,7 @@ class _GasRefillRequestFormState extends State { label: context.translation.attachFiles, showAsListView: true, attachment: attachments, + moduleId: RequestAttachmentTypeEnum.gasRefill.id, buttonColor: AppColor.black10, onlyImages: false, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), diff --git a/lib/modules/tm_module/gas_refill/update_gas_refill_request.dart b/lib/modules/tm_module/gas_refill/update_gas_refill_request.dart index 35593f56..368a1f71 100644 --- a/lib/modules/tm_module/gas_refill/update_gas_refill_request.dart +++ b/lib/modules/tm_module/gas_refill/update_gas_refill_request.dart @@ -11,6 +11,7 @@ import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/timer_model.dart'; @@ -292,6 +293,7 @@ class _UpdateGasRefillRequestState extends State { AttachmentPicker( label: context.translation.attachFiles, attachment: _attachments, + moduleId: RequestAttachmentTypeEnum.gasRefill.id, showAsListView: true, buttonColor: AppColor.black10, onlyImages: false, diff --git a/lib/modules/tm_module/tasks/create_task_view.dart b/lib/modules/tm_module/tasks/create_task_view.dart index 931c5e68..d3a06e45 100644 --- a/lib/modules/tm_module/tasks/create_task_view.dart +++ b/lib/modules/tm_module/tasks/create_task_view.dart @@ -5,10 +5,12 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/extensions/enum_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; @@ -58,7 +60,9 @@ class _CreateTaskViewState extends State with TickerProviderStat void initState() { // TODO: implement initState super.initState(); - Provider.of(context, listen: false).reset(); + // WidgetsBinding.instance.addPostFrameCallback((_) { + Provider.of(context, listen: false).reset(); + // }); } @override @@ -116,6 +120,7 @@ class _CreateTaskViewState extends State with TickerProviderStat AttachmentPicker( label: context.translation.attachImage, attachment: attachments, + moduleId: RequestAttachmentTypeEnum.taskRequest.id, buttonColor: AppColor.black10, showAsListView: true, onlyImages: false, diff --git a/lib/modules/tm_module/tasks/update_task_request_view.dart b/lib/modules/tm_module/tasks/update_task_request_view.dart index d0c102e9..a47506a5 100644 --- a/lib/modules/tm_module/tasks/update_task_request_view.dart +++ b/lib/modules/tm_module/tasks/update_task_request_view.dart @@ -15,6 +15,7 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/building.dart'; @@ -193,6 +194,7 @@ class _UpdateTaskRequestState extends State { label: context.translation.attachFiles, showAsListView: true, attachment: attachments, + moduleId: RequestAttachmentTypeEnum.taskRequest.id, buttonColor: AppColor.black10, onlyImages: false, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), diff --git a/lib/modules/traf_module/create_traf_request_page.dart b/lib/modules/traf_module/create_traf_request_page.dart index 78c98e5f..11b124c1 100644 --- a/lib/modules/traf_module/create_traf_request_page.dart +++ b/lib/modules/traf_module/create_traf_request_page.dart @@ -11,6 +11,7 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/device/asset.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/traf_customer.dart'; @@ -518,6 +519,7 @@ class _CreateTRAFRequestPageState extends State { label: context.translation.attachFiles, showAsListView: true, attachment: attachments, + moduleId: RequestAttachmentTypeEnum.traf.id, buttonColor: AppColor.black10, onlyImages: false, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), diff --git a/lib/modules/traf_module/traf_request_detail_page.dart b/lib/modules/traf_module/traf_request_detail_page.dart index 16796bdb..783ff707 100644 --- a/lib/modules/traf_module/traf_request_detail_page.dart +++ b/lib/modules/traf_module/traf_request_detail_page.dart @@ -149,12 +149,7 @@ class _TrafRequestDetailPageState extends State { ], if (_attachments.isNotEmpty) ...[ 4.height, - Text( - // todo @waseem conver to header - "Attachments".addTranslation, - style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), - ), - // 8.height, + InfoHeader16Widget("Attachments".addTranslation), FilesList( showAsListView: true, types: _attachments diff --git a/lib/modules/traf_module/update_traf_request_page.dart b/lib/modules/traf_module/update_traf_request_page.dart index e9b042d8..f41cc71c 100644 --- a/lib/modules/traf_module/update_traf_request_page.dart +++ b/lib/modules/traf_module/update_traf_request_page.dart @@ -7,6 +7,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/modules/cm_module/cm_request_utils.dart'; @@ -213,6 +214,7 @@ class _UpdateTrafRequestPageState extends State { AttachmentPicker( label: context.translation.attachFiles, showAsListView: true, + moduleId: RequestAttachmentTypeEnum.traf.id, attachment: attachments, buttonColor: AppColor.black10, onlyImages: false, diff --git a/lib/providers/task_request_provider/task_job_provider.dart b/lib/providers/task_request_provider/task_job_provider.dart index 8b9b74fc..e605b7fe 100644 --- a/lib/providers/task_request_provider/task_job_provider.dart +++ b/lib/providers/task_request_provider/task_job_provider.dart @@ -12,7 +12,6 @@ import '../../controllers/api_routes/urls.dart'; class TaskTypeProvider extends LoadingListNotifier { @override Future getData({int? id}) async { - print('get data called...'); if (loading == true) return -2; loading = true; notifyListeners(); @@ -23,7 +22,6 @@ class TaskTypeProvider extends LoadingListNotifier { // client's request was successfully received List categoriesListJson = json.decode(response.body)["data"]; items = categoriesListJson.map((item) => TaskType.fromJson(item)).toList(); - print('item lenght i got is ${items.length}'); } loading = false; diff --git a/lib/views/widgets/equipment/asset_details_view.dart b/lib/views/widgets/equipment/asset_details_view.dart index a00ac9d9..5ccf24c3 100644 --- a/lib/views/widgets/equipment/asset_details_view.dart +++ b/lib/views/widgets/equipment/asset_details_view.dart @@ -317,6 +317,7 @@ class _AssetDetailsViewState extends State with SingleTickerPr opacity: attachmentAnimation, child: const Divider().defaultStyle(context), ), + InfoHeader16Widget("Attachments".addTranslation), FadeTransition( opacity: attachmentAnimation, child: SlideTransition( diff --git a/lib/views/widgets/equipment/asset_image_upload_page.dart b/lib/views/widgets/equipment/asset_image_upload_page.dart index 8c2eaddf..43094baa 100644 --- a/lib/views/widgets/equipment/asset_image_upload_page.dart +++ b/lib/views/widgets/equipment/asset_image_upload_page.dart @@ -10,6 +10,7 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/device/asset_by_id_model.dart'; +import 'package:test_sa/models/enums/request_attachment_type_enum.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/modules/cm_module/cm_request_utils.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; @@ -109,12 +110,12 @@ class _AssetImageUploadPageState extends State { AttachmentPicker( label: "Additional Images", pickerTitle: "Attach Images", + moduleId: RequestAttachmentTypeEnum.transferAsset.id, attachment: trainingImageData.additionalImages!, buttonColor: AppColor.black10, onlyImages: true, showAsListView: true, pickMultiple: true, - // showAsGrid: true, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), onChange: (_attachments) { trainingImageData.additionalImages = _attachments; @@ -165,6 +166,7 @@ class _AssetImageUploadPageState extends State { child: AttachmentPicker( label: "", pickerTitle: title, + moduleId: RequestAttachmentTypeEnum.transferAsset.id, showAsListView:true, onlyImages: true, checkQuality: true, diff --git a/lib/views/widgets/images/multi_image_picker.dart b/lib/views/widgets/images/multi_image_picker.dart index f6bffcbf..210dc816 100644 --- a/lib/views/widgets/images/multi_image_picker.dart +++ b/lib/views/widgets/images/multi_image_picker.dart @@ -1,8 +1,10 @@ +import 'dart:developer'; import 'dart:io'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:image_blur_detection/image_blur_detection.dart'; import 'package:image_picker/image_picker.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; @@ -43,8 +45,8 @@ class AttachmentPicker extends StatefulWidget { final String pickerTitle; final String label; final bool error; + final int moduleId; final List attachment; - final bool enabled, onlyImages; double? buttonHeight; Widget? buttonIcon; @@ -63,7 +65,8 @@ class AttachmentPicker extends StatefulWidget { this.pickerTitle = "Attach File", this.error = false, this.buttonHeight, - required this.showAsListView, + required this.moduleId, + required this.showAsListView, this.buttonIcon, this.enabled = true, this.onlyImages = false, @@ -83,6 +86,7 @@ class AttachmentPicker extends StatefulWidget { class _AttachmentPickerState extends State with SingleTickerProviderStateMixin { late AnimationController _animationController; Lookup? documentLookup; + late AttachmentTypeLookupProviderLatest attachmentTypeLookupProvider; @override void initState() { @@ -92,6 +96,10 @@ class _AttachmentPickerState extends State with SingleTickerPr vsync: this, ); _animationController.forward(); + WidgetsBinding.instance.addPostFrameCallback((_) { + Provider.of(context, listen: false).reset(); + log('i am going to reset the value'); + }); } @override @@ -283,7 +291,8 @@ class _AttachmentPickerState extends State with SingleTickerPr mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Align(alignment: AlignmentDirectional.center, + Align( + alignment: AlignmentDirectional.center, child: Container( width: 40.toScreenWidth, height: 5.toScreenHeight, @@ -291,11 +300,12 @@ class _AttachmentPickerState extends State with SingleTickerPr ), ), 8.height, - InfoHeader16Widget(widget.pickerTitle), + InfoHeader16Widget(widget.pickerTitle), 8.height, SingleItemDropDownMenu( context: context, height: 56.toScreenHeight, + requestById: widget.moduleId, title: "Document Type", initialValue: documentLookup, showShadow: false,