work order improvement.

merge-requests/28/head
Sikander Saleem 3 years ago
parent d869f82020
commit f39b6f5d8e

@ -21,8 +21,8 @@ class SearchWorkOrders {
String startofWorkTime; String startofWorkTime;
String endofWorkTime; String endofWorkTime;
double workingHours; double workingHours;
String travelingHours; num travelingHours;
String travelingExpenses; num travelingExpenses;
ModelDefRelatedDefects faultDescription; ModelDefRelatedDefects faultDescription;
List sparePartsWorkOrders; List sparePartsWorkOrders;
String reviewComment; String reviewComment;
@ -509,7 +509,7 @@ class ModelDefinition {
} }
class ModelDefRelatedDefects { class ModelDefRelatedDefects {
String id; int id;
String defectName; String defectName;
String workPerformed; String workPerformed;
String estimatedTime; String estimatedTime;

@ -5,6 +5,7 @@ import 'package:test_sa/controllers/providers/api/service_requests_provider.dart
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/service_report.dart';
import 'package:test_sa/models/service_request/search_work_order.dart';
import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart';
@ -13,8 +14,9 @@ import 'package:test_sa/views/widgets/loaders/failed_loading.dart';
import 'edit_service_report.dart'; import 'edit_service_report.dart';
class FutureServiceReport extends StatefulWidget { class FutureServiceReport extends StatefulWidget {
final ServiceRequest request; final ServiceRequest request;
final SearchWorkOrders workOrder;
const FutureServiceReport({Key key, this.request}) : super(key: key); const FutureServiceReport({Key key, this.request,this.workOrder}) : super(key: key);
@override @override
_FutureServiceReportState createState() => _FutureServiceReportState(); _FutureServiceReportState createState() => _FutureServiceReportState();
@ -32,7 +34,7 @@ class _FutureServiceReportState extends State<FutureServiceReport> {
return Scaffold( return Scaffold(
body: FutureBuilder<ServiceReport>( body: FutureBuilder<ServiceReport>(
future: ServiceRequestsProvider().getSingleServiceReport( future: ServiceRequestsProvider().getSingleServiceReport(
reportId: widget.request.reportID, reportId: widget.workOrder.id,
user: _userProvider.user, user: _userProvider.user,
host: _settingProvider.host, host: _settingProvider.host,
subtitle: _subtitle subtitle: _subtitle

@ -6,6 +6,7 @@ import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/subtitle.dart';
@ -25,17 +26,19 @@ import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../models/service_request/search_work_order.dart'; import '../../../../models/service_request/search_work_order.dart';
import 'report/future_service_report.dart'; import 'report/future_service_report.dart';
class RequestDetailsPage extends StatelessWidget { class RequestDetailsPage extends StatelessWidget {
static final String id = "/call-details"; static final String id = "/call-details";
final ServiceRequest serviceRequest; final ServiceRequest serviceRequest;
const RequestDetailsPage({Key key, this.serviceRequest}) : super(key: key); const RequestDetailsPage({Key key, this.serviceRequest}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Subtitle _subtitle = AppLocalization.of(context).subtitle; Subtitle _subtitle = AppLocalization.of(context).subtitle;
UserProvider _userProvider = Provider.of<UserProvider>(context); UserProvider _userProvider = Provider.of<UserProvider>(context);
SettingProvider _settingProvider = Provider.of<SettingProvider>(context); SettingProvider _settingProvider = Provider.of<SettingProvider>(context);
List<SearchWorkOrders> workOrders=[]; List<SearchWorkOrders> workOrders = [];
ServiceRequestsProvider _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context); ServiceRequestsProvider _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
return DefaultTabController( return DefaultTabController(
length: 2, length: 2,
@ -44,8 +47,8 @@ class RequestDetailsPage extends StatelessWidget {
child: Column( child: Column(
children: [ children: [
Container( Container(
color:AColors.primaryColor, color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0,vertical: 4), padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Row( child: Row(
children: [ children: [
ABackButton(), ABackButton(),
@ -53,14 +56,12 @@ class RequestDetailsPage extends StatelessWidget {
child: Center( child: Center(
child: Text( child: Text(
_subtitle.details, _subtitle.details,
style: Theme.of(context).textTheme.headline6.copyWith( style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
color: AColors.white,
fontStyle: FontStyle.italic
), ),
), ),
), ),
), _userProvider.user.type == UsersTypes.normal_user
_userProvider.user.type == UsersTypes.normal_user ? ?
// AIconButton( // AIconButton(
// iconData: Icons.warning_amber_rounded, // iconData: Icons.warning_amber_rounded,
// color: AColors.white, // color: AColors.white,
@ -74,7 +75,9 @@ class RequestDetailsPage extends StatelessWidget {
// ); // );
// }, // },
// ) // )
const SizedBox(width: 48,) const SizedBox(
width: 48,
)
: AIconButton( : AIconButton(
iconData: Icons.edit, iconData: Icons.edit,
color: AColors.white, color: AColors.white,
@ -83,8 +86,10 @@ class RequestDetailsPage extends StatelessWidget {
onPressed: () async { onPressed: () async {
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
builder: (context){ builder: (context) {
return ServiceRequestsUpdateDialog(request: serviceRequest,); return ServiceRequestsUpdateDialog(
request: serviceRequest,
);
}); });
// DateTime picked = await showDatePicker( // DateTime picked = await showDatePicker(
// context: context, // context: context,
@ -115,20 +120,23 @@ class RequestDetailsPage extends StatelessWidget {
// ); // );
}, },
), ),
SizedBox(width: 16,) SizedBox(
width: 16,
)
], ],
), ),
), ),
serviceRequest.devicePhotos.isEmpty
serviceRequest.devicePhotos.isEmpty ? SizedBox.shrink(): ? SizedBox.shrink()
Column( : Column(
children: [ children: [
SizedBox(height: 8,), SizedBox(
height: 8,
),
MaterialButton( MaterialButton(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
onPressed: (){ onPressed: () {
Navigator.of(context).push( Navigator.of(context).push(MaterialPageRoute(
MaterialPageRoute(
builder: (_) => Scaffold( builder: (_) => Scaffold(
body: InteractiveViewer( body: InteractiveViewer(
child: Center( child: Center(
@ -138,9 +146,7 @@ class RequestDetailsPage extends StatelessWidget {
), ),
), ),
), ),
) )));
)
);
}, },
child: SizedBox( child: SizedBox(
height: 140 * AppStyle.getScaleFactor(context), height: 140 * AppStyle.getScaleFactor(context),
@ -151,26 +157,28 @@ class RequestDetailsPage extends StatelessWidget {
), ),
), ),
), ),
SizedBox(height: 8,), SizedBox(height: 8),
SizedBox( SizedBox(
height: 60* AppStyle.getScaleFactor(context), height: 60 * AppStyle.getScaleFactor(context),
child: ImagesList( child: ImagesList(
images: serviceRequest.devicePhotos, images: serviceRequest.devicePhotos,
), ),
), ),
], ],
), ),
TabBar(labelColor: AColors.primaryColor, tabs: [
TabBar( Tab(
labelColor: AColors.primaryColor, text: _subtitle.general,
tabs: [ ),
Tab(text: _subtitle.general,), Tab(
Tab(text: _subtitle.serviceRequestInformation,), text: _subtitle.serviceRequestInformation,
),
]), ]),
SizedBox(height: 8,), SizedBox(
height: 8,
),
Expanded( Expanded(
child: TabBarView( child: TabBarView(
children: [ children: [
ListView( ListView(
padding: EdgeInsets.symmetric(horizontal: 16), padding: EdgeInsets.symmetric(horizontal: 16),
@ -189,7 +197,7 @@ class RequestDetailsPage extends StatelessWidget {
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.deviceModel, title: _subtitle.deviceModel,
info : serviceRequest.deviceModel, info: serviceRequest.deviceModel,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.engineerName, title: _subtitle.engineerName,
@ -203,8 +211,9 @@ class RequestDetailsPage extends StatelessWidget {
title: _subtitle.date, title: _subtitle.date,
info: serviceRequest.date, info: serviceRequest.date,
), ),
serviceRequest.nextVisitDate == null ? SizedBox.shrink() : serviceRequest.nextVisitDate == null
RequestInfoRow( ? SizedBox.shrink()
: RequestInfoRow(
title: _subtitle.nextVisitDate, title: _subtitle.nextVisitDate,
info: DateFormat('EE dd/MM/yyyy').format(serviceRequest.nextVisitDate), info: DateFormat('EE dd/MM/yyyy').format(serviceRequest.nextVisitDate),
), ),
@ -217,12 +226,12 @@ class RequestDetailsPage extends StatelessWidget {
textScaleFactor: AppStyle.getScaleFactor(context), textScaleFactor: AppStyle.getScaleFactor(context),
), ),
), ),
StatusLabel(label: serviceRequest.statusLabel, StatusLabel(label: serviceRequest.statusLabel, color: AColors.getRequestStatusColor(serviceRequest.statusValue)),
color: AColors.getRequestStatusColor(serviceRequest.statusValue)
),
], ],
), ),
Divider(color: Theme.of(context).primaryColor,), Divider(
color: Theme.of(context).primaryColor,
),
RequestInfoRow( RequestInfoRow(
title: _subtitle.hospital, title: _subtitle.hospital,
info: serviceRequest.hospitalName, info: serviceRequest.hospitalName,
@ -243,7 +252,7 @@ class RequestDetailsPage extends StatelessWidget {
title: _subtitle.maintenanceIssue, title: _subtitle.maintenanceIssue,
content: serviceRequest.maintenanceIssue, content: serviceRequest.maintenanceIssue,
), ),
if(serviceRequest.audio?.isNotEmpty == true) if (serviceRequest.audio?.isNotEmpty == true)
ASoundPlayer( ASoundPlayer(
audio: serviceRequest.audio, audio: serviceRequest.audio,
), ),
@ -290,98 +299,112 @@ class RequestDetailsPage extends StatelessWidget {
), ),
// workOrders.isEmpty ? // workOrders.isEmpty ?
FutureBuilder( FutureBuilder(
future: _serviceRequestsProvider.searchWorkOrders(callId:serviceRequest.requestCode), future: _serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode),
builder: (context, snap){ builder: (context, snap) {
print("${workOrders?.length}"); workOrders = snap.data as List<SearchWorkOrders>;
workOrders= snap.data as List<SearchWorkOrders>; if (snap.connectionState == ConnectionState.done && (snap.data?.length ?? 0) != 0)
print("${workOrders?.length}"); return ListView.separated(
if(snap.connectionState==ConnectionState.done && snap.data.length != 0) padding: EdgeInsets.all(21),
return ListView.builder(
padding: EdgeInsets.symmetric(horizontal: 16),
itemCount: workOrders.length, itemCount: workOrders.length,
itemBuilder: (context , index){ separatorBuilder: (czt, index) => 21.height,
return Column( itemBuilder: (context, index) {
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
return ElevatedButton(
style: ElevatedButton.styleFrom(
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8),
primary: itemColor.withOpacity(.7),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
),
//padding: EdgeInsets.symmetric(vertical: 8,horizontal: 8),
onPressed: () {
// onPressed(request);
},
child: Column(
children: [ children: [
RequestInfoRow( RequestInfoRow(
title: _subtitle.callId, title: _subtitle.callId,
content:workOrders[index].id.toString(), content: workOrders[index].id.toString(),
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.orderWorkNumber, title: _subtitle.orderWorkNumber,
info: "123", info: workOrders[index].workOrderNo.toString(),
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.visitDate, title: _subtitle.visitDate,
info: workOrders[index].visitDate, info: workOrders[index].visitDate,
), ),
RequestInfoRow( RequestInfoRow(title: _subtitle.assignedEmployee, info: workOrders[index].assignedEmployee.name),
title: _subtitle.assignedEmployee,
info: workOrders[index].callRequest.assignedEmployee.name,
),
RequestInfoRow( RequestInfoRow(
title: _subtitle.assetSN, title: _subtitle.assetSN,
info:workOrders[index].callRequest.asset.assetSerialNo, info: workOrders[index].callRequest.asset.assetSerialNo,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.assetName, title: _subtitle.assetName,
info:"123", info: workOrders[index].callRequest.asset.modelDefinition.assetName,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.model, title: _subtitle.model,
info:"123", info: workOrders[index].callRequest.asset.modelDefinition.modelName,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.site, title: _subtitle.site,
info:workOrders[index].callRequest.asset.site.custName, info: workOrders[index].callRequest.asset.site.custName,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.maintenanceSituation, title: _subtitle.maintenanceSituation,
info:"123", info: workOrders[index].calllastSituation.name ?? '',
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.currentSituation, title: _subtitle.currentSituation,
info:workOrders[index].currentSituation.name??'', info: workOrders[index].currentSituation.name ?? '',
), ),
_userProvider.user.type == UsersTypes.engineer _userProvider.user.type == UsersTypes.engineer && workOrders[index].workOrderNo != null
&& serviceRequest.reportID != null? ? Padding(
Padding(
padding: EdgeInsets.all(32), padding: EdgeInsets.all(32),
child: AButton( child: AButton(
text: _subtitle.editServiceReport, text: _subtitle.editServiceReport,
onPressed: (){ onPressed: () {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (_) => FutureServiceReport( builder: (_) => FutureServiceReport(
request: serviceRequest, request: serviceRequest,
) workOrder: workOrders[index],
), )),
); );
}, },
), ),
): SizedBox.shrink(), )
: SizedBox.shrink(),
], ],
),
); );
}, },
); );
else else
return _userProvider.user.type == UsersTypes.engineer ? return _userProvider.user.type == UsersTypes.engineer
Center( ? Center(
child: Padding( child: Padding(
padding: EdgeInsets.all(32), padding: EdgeInsets.all(32),
child: AButton( child: AButton(
text: "Create Report", text: "Create Report",
onPressed: (){ onPressed: () {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (_) => CreateServiceReport( builder: (_) => CreateServiceReport(
request: serviceRequest, request: serviceRequest,
) )),
),
); );
}, },
), ),
), ),
): Center(child: ASubTitle(_subtitle.noDateFound),); )
: Center(
child: ASubTitle(_subtitle.noDateFound),
);
}, },
) )
], ],
@ -393,69 +416,4 @@ class RequestDetailsPage extends StatelessWidget {
), ),
); );
} }
Widget dataList({@required Subtitle subtitle, @required List workOrders, @required UserProvider userProvider, @required BuildContext context}){
return ListView(
padding: EdgeInsets.symmetric(horizontal: 16),
children: [
RequestInfoRow(
title: subtitle.callId,
content:"123",
),
RequestInfoRow(
title: subtitle.orderWorkNumber,
info: "123",
),
RequestInfoRow(
title: subtitle.visitDate,
info: workOrders[0].visitDate??"",
),
RequestInfoRow(
title: subtitle.assignedEmployee,
info: "123",
),
RequestInfoRow(
title: subtitle.assetSN,
info:"123",
),
RequestInfoRow(
title: subtitle.assetName,
info:"123",
),
RequestInfoRow(
title: subtitle.model,
info:"123",
),
RequestInfoRow(
title: subtitle.site,
info:"123",
),
RequestInfoRow(
title: subtitle.maintenanceSituation,
info:"123",
),
RequestInfoRow(
title: subtitle.currentSituation,
info:"123",
),
userProvider.user.type == UsersTypes.engineer
&& serviceRequest.reportID != null?
Padding(
padding: EdgeInsets.all(32),
child: AButton(
text: subtitle.editServiceReport,
onPressed: (){
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => FutureServiceReport(
request: serviceRequest,
)
),
);
},
),
): SizedBox.shrink(),
],
);
}
} }

Loading…
Cancel
Save