@ -5,26 +5,37 @@ import 'package:flutter/cupertino.dart';
import ' package:flutter/material.dart ' ;
import ' package:provider/provider.dart ' ;
import ' package:diplomaticquarterapp/uitl/date_uitl.dart ' ;
import ' package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart ' ;
import ' package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart ' ;
import ' package:diplomaticquarterapp/core/enum/viewstate.dart ' ;
import ' package:diplomaticquarterapp/uitl/utils.dart ' ;
import ' package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-main-screen.dart ' ;
import ' package:diplomaticquarterapp/widgets/transitions/fade_page.dart ' ;
import ' package:diplomaticquarterapp/pages/base/base_view.dart ' ;
final _item_content_seperator = Container ( height: 0.25 , padding: EdgeInsets . all ( 10 ) , color: Colors . grey . withOpacity ( 0.5 ) ) ;
class RRTLogListItem extends StatelessWidget {
class RRTLogListItem extends State fu lWidget {
final PrescriptionsOrder order ;
final Function ( PrescriptionsOrder ) onCancel ;
RRTLogListItem ( this . order , { this . onCancel } ) ;
@ override
State < StatefulWidget > createState ( ) = > RRTLogListItemState ( ) ;
BuildContext _context ;
}
class RRTLogListItemState extends State < RRTLogListItem > {
RRTViewModel viewModel ;
TranslationBase localize ;
@ override
Widget build ( BuildContext context ) {
ProjectViewModel projectViewModel = Provider . of ( context ) ;
_context = context ;
localize = TranslationBase . of ( context ) ;
int status = order. status ;
String _statusDisp = projectViewModel . isArabic ? order. descriptionN : order . description ;
int status = widget. order. status ;
String _statusDisp = projectViewModel . isArabic ? widget. order. descriptionN : widget . order . description ;
Color _color ;
if ( status = = 1 ) {
/ / pending
@ -39,119 +50,126 @@ class RRTLogListItem extends StatelessWidget {
/ / cancel / / Rejected
_color = Color ( 0xffD02127 ) ;
}
return Container (
margin: EdgeInsets . all ( 5 ) ,
decoration: BoxDecoration (
color: _color ,
b orderRadius: BorderRadius . all (
Radius . circular ( 10.0 ) ,
) ,
boxShadow: [
BoxShadow (
color: Color ( 0xff000000 ) . withOpacity ( . 05 ) ,
blurRadius: 27 ,
offset: Offset ( 0 , - 3 ) ,
) ,
] ,
) ,
child: Container (
/ / decoration: containerColorRadiusLeft ( Colors . white , 12 ) ,
margin: EdgeInsets . only ( left: projectViewModel . isArabic ? 0 : 6 , right: projectViewModel . isArabic ? 6 : 0 ) ,
padding: EdgeInsets . symmetric ( vertical: 14 , horizontal: 12 ) ,
decoration: BoxDecoration (
color: Colors . white ,
border: Border . all ( color: Colors . white , width: 1 ) ,
borderRadius: BorderRadius . only (
bottomRight: projectViewModel . isArabic ? Radius . circular ( 0 ) : Radius . circular ( 10.0 ) ,
topRight: projectViewModel . isArabic ? Radius . circular ( 0 ) : Radius . circular ( 10.0 ) ,
bottomLeft: projectViewModel . isArabic ? Radius . circular ( 10.0 ) : Radius . circular ( 0 ) ,
topLeft: projectViewModel . isArabic ? Radius . circular ( 10.0 ) : Radius . circular ( 0 ) ,
) ,
) ,
/ / clipBehavior: Clip . antiAlias ,
child: Row (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Expanded (
child: Column (
mainAxisAlignment: MainAxisAlignment . start ,
return BaseView< RRTViewModel > (
onModelReady: ( vm ) = > {
viewModel = vm ,
} ,
b uilder: ( ctx , vm , widgetState ) {
return Container (
margin: EdgeInsets . all ( 5 ) ,
decoration: BoxDecoration (
color: _color ,
borderRadius: BorderRadius . all (
Radius . circular ( 10.0 ) ,
) ,
boxShadow: [
BoxShadow (
color: Color ( 0xff000000 ) . withOpacity ( . 05 ) ,
blurRadius: 27 ,
offset: Offset ( 0 , - 3 ) ,
) ,
] ,
) ,
child: Container (
/ / decoration: containerColorRadiusLeft ( Colors . white , 12 ) ,
margin: EdgeInsets . only ( left: projectViewModel . isArabic ? 0 : 6 , right: projectViewModel . isArabic ? 6 : 0 ) ,
padding: EdgeInsets . symmetric ( vertical: 14 , horizontal: 12 ) ,
decoration: BoxDecoration (
color: Colors . white ,
border: Border . all ( color: Colors . white , width: 1 ) ,
borderRadius: BorderRadius . only (
bottomRight: projectViewModel . isArabic ? Radius . circular ( 0 ) : Radius . circular ( 10.0 ) ,
topRight: projectViewModel . isArabic ? Radius . circular ( 0 ) : Radius . circular ( 10.0 ) ,
bottomLeft: projectViewModel . isArabic ? Radius . circular ( 10.0 ) : Radius . circular ( 0 ) ,
topLeft: projectViewModel . isArabic ? Radius . circular ( 10.0 ) : Radius . circular ( 0 ) ,
) ,
) ,
/ / clipBehavior: Clip . antiAlias ,
child: Row (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Text (
_statusDisp ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: _color , letterSpacing: - 0.4 , height: 16 / 10 ) ,
) ,
SizedBox ( height: 6 ) ,
Text (
' ${ TranslationBase . of ( context ) . requestID } : ${ order . iD } ' ,
style: TextStyle ( fontSize: 16 , fontWeight: FontWeight . w600 , color: Color ( 0xff2E303A ) , letterSpacing: - 0.64 , height: 25 / 16 ) ,
) ,
Row (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Text (
TranslationBase . of ( context ) . locationa + " : " ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: Color ( 0xff575757 ) , letterSpacing: - 0.4 , height: 16 / 10 ) ,
) ,
Expanded (
child: Text (
! projectViewModel . isArabic ? order . nearestProjectDescription . trim ( ) . toString ( ) : order . nearestProjectDescriptionN . toString ( ) ,
style: TextStyle ( fontSize: 14 , fontWeight: FontWeight . w600 , color: Color ( 0xff2B353E ) , letterSpacing: - 0.56 ) ,
Expanded (
child: Column (
mainAxisAlignment: MainAxisAlignment . start ,
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Text (
_statusDisp ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: _color , letterSpacing: - 0.4 , height: 16 / 10 ) ,
) ,
) ,
] ,
SizedBox ( height: 6 ) ,
Text (
' ${ TranslationBase . of ( context ) . requestID } : ${ widget . order . iD } ' ,
style: TextStyle ( fontSize: 16 , fontWeight: FontWeight . w600 , color: Color ( 0xff2E303A ) , letterSpacing: - 0.64 , height: 25 / 16 ) ,
) ,
Row (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Text (
TranslationBase . of ( context ) . locationa + " : " ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: Color ( 0xff575757 ) , letterSpacing: - 0.4 , height: 16 / 10 ) ,
) ,
Expanded (
child: Text (
! projectViewModel . isArabic ? widget . order . nearestProjectDescription . trim ( ) . toString ( ) : widget . order . nearestProjectDescriptionN . toString ( ) ,
style: TextStyle ( fontSize: 14 , fontWeight: FontWeight . w600 , color: Color ( 0xff2B353E ) , letterSpacing: - 0.56 ) ,
) ,
) ,
] ,
) ,
Row (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Text (
localize . pickupDate + " : " ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: Color ( 0xff575757 ) , letterSpacing: - 0.4 , height: 16 / 10 ) ,
) ,
Expanded (
child: Text (
widget . order . getFormattedDateTime ( ) ,
style: TextStyle ( fontSize: 14 , fontWeight: FontWeight . w600 , color: Color ( 0xff2B353E ) , letterSpacing: - 0.56 ) ,
) ,
) ,
] ,
) ,
] ,
) ,
) ,
Row (
crossAxisAlignment: CrossAxisAlignment . start ,
Column (
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
crossAxisAlignment: CrossAxisAlignment . end ,
children: [
Text (
localize . pickupDate + " : " ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: Color ( 0xff575757 ) , letterSpacing: - 0.4 , height: 16 / 10 ) ,
DateUtil. getDayMonthYearDateFormattedLang ( widget . order . createdOn , projectViewModel . isArabic ) ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: Color ( 0xff 2B353E ) , letterSpacing: - 0.4 , height: 16 / 10 ) ,
) ,
Expanded (
child: Text (
order . getFormattedDateTime ( ) ,
style: TextStyle ( fontSize: 14 , fontWeight: FontWeight . w600 , color: Color ( 0xff2B353E ) , letterSpacing: - 0.56 ) ,
SizedBox ( height: 12 ) ,
if ( widget . order . status = = 1 | | widget . order . status = = 2 )
InkWell (
onTap: ( ) {
/ / onCancel ( order ) ;
cancelOrders ( widget . order ) ;
} ,
child: Container (
padding: EdgeInsets . symmetric ( vertical: 8 , horizontal: 14 ) ,
decoration: BoxDecoration (
color: Color ( 0xffD02127 ) ,
border: Border . all ( color: Colors . white , width: 1 ) ,
borderRadius: BorderRadius . circular ( 10 ) ,
) ,
child: Text (
TranslationBase . of ( context ) . cancel_nocaps ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: Colors . white , letterSpacing: - 0.4 ) ,
) ,
) ,
) ,
) ,
] ,
) ,
] ,
) ,
) ,
Column (
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
crossAxisAlignment: CrossAxisAlignment . end ,
children: [
Text (
DateUtil . getDayMonthYearDateFormattedLang ( order . createdOn , projectViewModel . isArabic ) ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: Color ( 0xff2B353E ) , letterSpacing: - 0.4 , height: 16 / 10 ) ,
) ,
SizedBox ( height: 12 ) ,
if ( order . status = = 1 | | order . status = = 2 )
InkWell (
onTap: ( ) {
onCancel ( order ) ;
} ,
child: Container (
padding: EdgeInsets . symmetric ( vertical: 8 , horizontal: 14 ) ,
decoration: BoxDecoration (
color: Color ( 0xffD02127 ) ,
border: Border . all ( color: Colors . white , width: 1 ) ,
borderRadius: BorderRadius . circular ( 10 ) ,
) ,
child: Text (
TranslationBase . of ( context ) . cancel_nocaps ,
style: TextStyle ( fontSize: 12 , fontWeight: FontWeight . w600 , color: Colors . white , letterSpacing: - 0.4 ) ,
) ,
) ,
) ,
] ,
) ,
] ,
) ,
) ,
) ;
) ;
} ) ;
/ / return Container (
/ / padding: EdgeInsets . all ( 15 ) ,
@ -207,4 +225,16 @@ class RRTLogListItem extends StatelessWidget {
/ / style: TextStyle ( color: Colors . white , fontSize: 13 ) ,
/ / ) ,
/ / ) ;
cancelOrders ( order ) async {
GifLoaderDialogUtils . showMyDialog ( context ) ;
var success = await viewModel . cancelOrder ( order ) ;
if ( success ) {
viewModel . setState ( ViewState . Busy ) ;
await viewModel . getAllOrders ( ) ;
viewModel . setState ( ViewState . Idle ) ;
Navigator . popUntil ( context , ( route ) = > Utils . route ( route , equalsTo: RRTMainScreen ) ) ;
Navigator . push ( context , FadePage ( page: RRTMainScreen ( ) ) ) ;
}
}
}