Compare commits
No commits in common. '7f4a06b0db8693a668a2f3e8e514bbba126d4e84' and 'e714fed62c58abaa9f9a990f291294d284e127ec' have entirely different histories.
7f4a06b0db
...
e714fed62c
@ -1,214 +0,0 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
import 'package:test_sa/controllers/api_routes/urls.dart';
|
|
||||||
import 'package:test_sa/controllers/providers/api/ppm_provider.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/text_extensions.dart';
|
|
||||||
import 'package:test_sa/extensions/widget_extensions.dart';
|
|
||||||
import 'package:test_sa/models/enums/user_types.dart';
|
|
||||||
import 'package:test_sa/models/helper_data_models/spare_part/activity_spare_part_model.dart';
|
|
||||||
import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.dart';
|
|
||||||
import 'package:test_sa/models/service_request/spare_parts.dart';
|
|
||||||
import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart';
|
|
||||||
import 'package:test_sa/modules/cm_module/views/forms/spare_part/spare_part_request.dart';
|
|
||||||
import 'package:test_sa/new_views/app_style/app_color.dart';
|
|
||||||
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
|
|
||||||
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/item_views/info_text_widget.dart';
|
|
||||||
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
|
|
||||||
import 'package:test_sa/views/widgets/requests/request_status.dart';
|
|
||||||
|
|
||||||
class PmActivitiesListView extends StatefulWidget {
|
|
||||||
static const String id = "/activities-list";
|
|
||||||
|
|
||||||
const PmActivitiesListView({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
_PmActivitiesListViewState createState() {
|
|
||||||
return _PmActivitiesListViewState();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class _PmActivitiesListViewState extends State<PmActivitiesListView> {
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void dispose() {
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<PMSparePartActivityModel> activities = [];
|
|
||||||
|
|
||||||
bool disableNewActivity = false;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
UserProvider userProvider = Provider.of<UserProvider>(context);
|
|
||||||
return Scaffold(
|
|
||||||
appBar: DefaultAppBar(
|
|
||||||
showHomeActionButton: true,
|
|
||||||
title: context.translation.activities,
|
|
||||||
),
|
|
||||||
body: Consumer<PpmProvider>(builder: (context, PpmProvider pmProvider, child) {
|
|
||||||
activities = pmProvider.planPreventiveVisit?.activities ?? [];
|
|
||||||
if (activities.isNotEmpty && (activities.last.activityStatus!.value == 14 || activities.last.activityStatus!.value == 19)) {
|
|
||||||
disableNewActivity = true;
|
|
||||||
} else {
|
|
||||||
disableNewActivity = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
(activities.isEmpty)
|
|
||||||
? NoDataFound(message: context.translation.noDataFound).center.expanded
|
|
||||||
: ListView.separated(
|
|
||||||
padding: const EdgeInsets.all(16),
|
|
||||||
itemCount: activities.length,
|
|
||||||
separatorBuilder: (czt, index) => 12.height,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return sparePartActivityCard(pmProvider: pmProvider, userProvider: userProvider, context: context, activity: activities[index]);
|
|
||||||
},
|
|
||||||
).expanded,
|
|
||||||
if (userProvider.user!.type == UsersTypes.engineer &&
|
|
||||||
(pmProvider.planPreventiveVisit?.visitStatus?.value != 5 && pmProvider.planPreventiveVisit?.visitStatus?.value != 3))
|
|
||||||
FooterActionButton.footerContainer(
|
|
||||||
context: context,
|
|
||||||
child: AppFilledButton(
|
|
||||||
label: context.translation.createNewActivity,
|
|
||||||
maxWidth: true,
|
|
||||||
buttonColor: AppColor.primary10,
|
|
||||||
loading: pmProvider.isLoading,
|
|
||||||
disableButton: disableNewActivity,
|
|
||||||
onPressed: () async {
|
|
||||||
final model = SparePartHelperModel(
|
|
||||||
id: 0,
|
|
||||||
pmVisitId: pmProvider.planPreventiveVisit?.id,
|
|
||||||
);
|
|
||||||
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (context) => SparePartRequest(
|
|
||||||
model: model,
|
|
||||||
provider: pmProvider,
|
|
||||||
fromCm: false,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
))
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget sparePartActivityCard({required PpmProvider pmProvider, required UserProvider userProvider, required BuildContext context, required PMSparePartActivityModel activity}) {
|
|
||||||
bool showActionButtons = userProvider.user!.userID == pmProvider.planPreventiveVisit?.assignedEmployee?.userId &&
|
|
||||||
userProvider.user!.type == UsersTypes.engineer &&
|
|
||||||
pmProvider.planPreventiveVisit?.visitStatus?.value != 5 &&
|
|
||||||
pmProvider.planPreventiveVisit?.visitStatus?.value != 3;
|
|
||||||
|
|
||||||
return Column(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
StatusLabel(
|
|
||||||
label: activity.activityStatus?.name,
|
|
||||||
textColor: AppColor.white10,
|
|
||||||
backgroundColor: AppColor.primary10,
|
|
||||||
),
|
|
||||||
if (showActionButtons)
|
|
||||||
Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
"edit_icon".toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).onPress(() {
|
|
||||||
editSparePartRequest(context: context, pmProvider: pmProvider, activity: activity);
|
|
||||||
}),
|
|
||||||
12.width,
|
|
||||||
"delete_icon".toSvgAsset(height: 24, width: 24).onPress(() async {
|
|
||||||
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
|
|
||||||
int status = await pmProvider.deleteActivitySparePart(id: activity.id!);
|
|
||||||
if (status == 200) {
|
|
||||||
await pmProvider.getPlanPreventiveVisitById((int.tryParse(pmProvider.planPreventiveVisit?.id ?? '')) as int);
|
|
||||||
Navigator.pop(context);
|
|
||||||
} else {
|
|
||||||
Navigator.pop(context);
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
6.height,
|
|
||||||
InfoTextWidget(
|
|
||||||
label: context.translation.partName,
|
|
||||||
value: activity.partCatalogItem?.partName,
|
|
||||||
),
|
|
||||||
InfoTextWidget(
|
|
||||||
label: context.translation.partNo,
|
|
||||||
value: activity.partCatalogItem?.partNumber,
|
|
||||||
),
|
|
||||||
InfoTextWidget(
|
|
||||||
label: context.translation.oracleCode,
|
|
||||||
value: activity.partCatalogItem?.oracleCode,
|
|
||||||
),
|
|
||||||
if (activity.comment?.isNotEmpty ?? false) ...[
|
|
||||||
const Divider().defaultStyle(context),
|
|
||||||
InfoTextLabelWidget(label: activity.comment ?? ""),
|
|
||||||
],
|
|
||||||
if (activity.activitySparePartPPMAttachments.isNotEmpty) ...[
|
|
||||||
const Divider().defaultStyle(context),
|
|
||||||
FilesList(images: activity.activitySparePartPPMAttachments.map((toElement) => URLs.getFileUrl(toElement.name??'')??'').toList()),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
).toShadowContainer(context, showShadow: false).onPress(() {
|
|
||||||
if (showActionButtons) return;
|
|
||||||
if (pmProvider.isReadOnlyRequest) {
|
|
||||||
editSparePartRequest(context: context, pmProvider: pmProvider, activity: activity);
|
|
||||||
} else if (userProvider.user!.userID == pmProvider.planPreventiveVisit?.assignedEmployee?.userId) {
|
|
||||||
pmProvider.isReadOnlyRequest = true;
|
|
||||||
editSparePartRequest(context: context, pmProvider: pmProvider, activity: activity);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void editSparePartRequest({required BuildContext context, required PpmProvider pmProvider, required PMSparePartActivityModel activity}) async {
|
|
||||||
final model = SparePartHelperModel(
|
|
||||||
id: activity.id,
|
|
||||||
pmVisitId: pmProvider.planPreventiveVisit?.id,
|
|
||||||
comment: activity.comment,
|
|
||||||
sparePartAttachments: activity.activitySparePartPPMAttachments,
|
|
||||||
activityStatus: activity.activityStatus,
|
|
||||||
sparePart: SparePart(
|
|
||||||
id: activity.partCatalogItem?.id,
|
|
||||||
partName: activity.partCatalogItem?.partName,
|
|
||||||
partNo: activity.partCatalogItem?.partNumber,
|
|
||||||
oracleCode: activity.partCatalogItem?.oracleCode,
|
|
||||||
),
|
|
||||||
quantity: activity.quantity,
|
|
||||||
installQty: activity.installQty,
|
|
||||||
returnQty: activity.returnQty,
|
|
||||||
activityStatusId: activity.activityStatus?.id,
|
|
||||||
);
|
|
||||||
Navigator.of(context).push(MaterialPageRoute(
|
|
||||||
builder: (_) => SparePartRequest(
|
|
||||||
model: model,
|
|
||||||
provider: pmProvider,
|
|
||||||
fromCm: false, // This is PM, not CM
|
|
||||||
),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue