@ -1,15 +1,14 @@
import ' dart:convert ' ;
import ' dart:async ' ;
import ' dart:developer ' ;
import ' package:car_provider_app/config/provider_routes.dart ' ;
import ' package:car_provider_app/config/provider_routes.dart ' ;
import ' package:car_provider_app/views/settings/branch/dealer/widget/assign_dealer_user_sheet.dart ' ;
import ' package:mc_common_app/generated/locale_keys.g.dart ' ;
import ' package:mc_common_app/generated/locale_keys.g.dart ' ;
import ' package:mc_common_app/models/general_models/m_response.dart ' ;
import ' package:mc_common_app/utils/utils.dart ' ;
import ' package:mc_common_app/view_models/service_view_model.dart ' ;
import ' package:mc_common_app/view_models/service_view_model.dart ' ;
import ' package:car_provider_app/views/settings/services/services_list_page.dart ' ;
import ' package:car_provider_app/views/settings/services/services_list_page.dart ' ;
import ' package:easy_localization/easy_localization.dart ' ;
import ' package:easy_localization/easy_localization.dart ' ;
import ' package:flutter/material.dart ' ;
import ' package:flutter/material.dart ' ;
import ' package:flutter_svg/svg.dart ' ;
import ' package:flutter_svg/svg.dart ' ;
import ' package:car_provider_app/view_models/branch_view_model.dart ' ;
import ' package:mc_common_app/classes/app_state.dart ' ;
import ' package:mc_common_app/classes/app_state.dart ' ;
import ' package:mc_common_app/classes/consts.dart ' ;
import ' package:mc_common_app/classes/consts.dart ' ;
import ' package:mc_common_app/config/routes.dart ' ;
import ' package:mc_common_app/config/routes.dart ' ;
@ -20,23 +19,28 @@ import 'package:mc_common_app/models/provider_branches_models/profile/categroy.d
import ' package:mc_common_app/theme/colors.dart ' ;
import ' package:mc_common_app/theme/colors.dart ' ;
import ' package:mc_common_app/utils/enums.dart ' ;
import ' package:mc_common_app/utils/enums.dart ' ;
import ' package:mc_common_app/utils/navigator.dart ' ;
import ' package:mc_common_app/utils/navigator.dart ' ;
import ' package:mc_common_app/widgets/bottom_sheet.dart ' ;
import ' package:mc_common_app/widgets/button/show_fill_button.dart ' ;
import ' package:mc_common_app/widgets/button/show_fill_button.dart ' ;
import ' package:mc_common_app/widgets/common_widgets/app_bar.dart ' ;
import ' package:mc_common_app/widgets/common_widgets/app_bar.dart ' ;
import ' package:mc_common_app/widgets/extensions/extensions_widget.dart ' ;
import ' package:mc_common_app/widgets/extensions/extensions_widget.dart ' ;
import ' package:provider/provider.dart ' ;
import ' package:provider/provider.dart ' ;
import ' ../../../generated/locale_keys.g.dart ' ;
class BranchDetailPage extends StatelessWidget {
class BranchDetailPage extends StatelessWidget {
BranchDetailModel branchData ;
BranchDetailModel branchData ;
BranchDetailPage ( this . branchData );
BranchDetailPage ( this . branchData , { super . key } );
List < CategoryData > categories = [ ] ;
List < CategoryData > categories = [ ] ;
@ override
getBranchUsers ( BuildContext context ) {
Widget build ( BuildContext context ) {
scheduleMicrotask ( ( ) {
context . read < ServiceVM > ( ) . getAllProviderDealers (
{ " ServiceProviderBranchID " : branchData . id . toString ( ) , " ServiceProviderID " : AppState ( ) . getUser . data ? . userInfo ? . providerId . toString ( ) ? ? " " } ,
) ;
} ) ;
}
filterBranch ( ) {
branchData . branchServices ! . forEach ( ( element ) {
branchData . branchServices ! . forEach ( ( element ) {
categories . add (
categories . add (
CategoryData (
CategoryData (
@ -56,6 +60,12 @@ class BranchDetailPage extends StatelessWidget {
} ) ;
} ) ;
}
}
branchData . categories = categories ;
branchData . categories = categories ;
}
@ override
Widget build ( BuildContext context ) {
filterBranch ( ) ;
getBranchUsers ( context ) ;
return Scaffold (
return Scaffold (
appBar: CustomAppBar (
appBar: CustomAppBar (
title: branchData . branchName . toString ( ) ,
title: branchData . branchName . toString ( ) ,
@ -77,14 +87,11 @@ class BranchDetailPage extends StatelessWidget {
Row (
Row (
children: [
children: [
Expanded (
Expanded (
child: titleWidget ( MyAssets . icBranches ,
child: titleWidget ( MyAssets . icBranches , LocaleKeys . branchInfo . tr ( ) ) ,
LocaleKeys . branchInfo . tr ( ) ) ,
) ,
) ,
IconButton (
IconButton (
onPressed: ( ) {
onPressed: ( ) {
navigateWithName (
navigateWithName ( context , ProviderAppRoutes . defineBranch , arguments: branchData ) ;
context , ProviderAppRoutes . defineBranch ,
arguments: branchData ) ;
} ,
} ,
icon: SvgPicture . asset ( MyAssets . icEdit ) ,
icon: SvgPicture . asset ( MyAssets . icEdit ) ,
)
)
@ -92,17 +99,11 @@ class BranchDetailPage extends StatelessWidget {
) ,
) ,
Column (
Column (
children: [
children: [
showData ( " ${ LocaleKeys . country . tr ( ) } : " ,
showData ( " ${ LocaleKeys . country . tr ( ) } : " , branchData . countryName . toString ( ) ) ,
branchData . countryName . toString ( ) ) ,
showData ( " ${ LocaleKeys . city . tr ( ) } : " , branchData . cityName . toString ( ) ) ,
showData ( " ${ LocaleKeys . city . tr ( ) } : " ,
showData ( " ${ LocaleKeys . branchName . tr ( ) } : " , branchData . branchName . toString ( ) ) ,
branchData . cityName . toString ( ) ) ,
showData ( " ${ LocaleKeys . branchDescription . tr ( ) } : " , branchData . branchDescription . toString ( ) ) ,
showData ( " ${ LocaleKeys . branchName . tr ( ) } : " ,
showData ( " ${ LocaleKeys . address . tr ( ) } : " , branchData . address . toString ( ) ) ,
branchData . branchName . toString ( ) ) ,
showData (
" ${ LocaleKeys . branchDescription . tr ( ) } : " ,
branchData . branchDescription . toString ( ) ) ,
showData ( " ${ LocaleKeys . address . tr ( ) } : " ,
branchData . address . toString ( ) ) ,
] ,
] ,
) ,
) ,
] ,
] ,
@ -111,8 +112,7 @@ class BranchDetailPage extends StatelessWidget {
Container (
Container (
width: double . infinity ,
width: double . infinity ,
color: MyColors . darkIconColor ,
color: MyColors . darkIconColor ,
padding: const EdgeInsets . symmetric (
padding: const EdgeInsets . symmetric ( horizontal: 20 , vertical: 8 ) ,
horizontal: 20 , vertical: 8 ) ,
child: Row (
child: Row (
children: [
children: [
const Icon (
const Icon (
@ -136,9 +136,7 @@ class BranchDetailPage extends StatelessWidget {
] ,
] ,
) ,
) ,
) . onPress ( ( ) {
) . onPress ( ( ) {
navigateWithName (
navigateWithName ( context , ProviderAppRoutes . schedulesList , arguments: branchData . id . toString ( ) ) ;
context , ProviderAppRoutes . schedulesList ,
arguments: branchData . id . toString ( ) ) ;
} ) ,
} ) ,
Row (
Row (
crossAxisAlignment: CrossAxisAlignment . center ,
crossAxisAlignment: CrossAxisAlignment . center ,
@ -165,8 +163,7 @@ class BranchDetailPage extends StatelessWidget {
backgroundColor: MyColors . darkWhiteColor ,
backgroundColor: MyColors . darkWhiteColor ,
width: double . infinity ,
width: double . infinity ,
paddingAll: 20 ,
paddingAll: 20 ,
margin:
margin: const EdgeInsets . only ( left: 20 , right: 20 , top: 20 ) ,
const EdgeInsets . only ( left: 20 , right: 20 , top: 20 ) ,
)
)
. onPress ( ( ) {
. onPress ( ( ) {
navigateWithName (
navigateWithName (
@ -184,17 +181,12 @@ class BranchDetailPage extends StatelessWidget {
itemBuilder: ( context , pIndex ) {
itemBuilder: ( context , pIndex ) {
return InkWell (
return InkWell (
onTap: ( ) {
onTap: ( ) {
categories [ pIndex ] . branchId =
categories [ pIndex ] . branchId = branchData . id . toString ( ) ;
branchData . id . toString ( ) ;
categories [ pIndex ] . branchName = branchData . branchName . toString ( ) ;
categories [ pIndex ] . branchName =
navigateWithName ( context , ProviderAppRoutes . servicesList , arguments: categories [ pIndex ] ) ;
branchData . branchName . toString ( ) ;
navigateWithName (
context , ProviderAppRoutes . servicesList ,
arguments: categories [ pIndex ] ) ;
} ,
} ,
child: Row (
child: Row (
crossAxisAlignment:
crossAxisAlignment: CrossAxisAlignment . start ,
CrossAxisAlignment . start ,
mainAxisSize: MainAxisSize . min ,
mainAxisSize: MainAxisSize . min ,
children: [
children: [
Padding (
Padding (
@ -208,19 +200,12 @@ class BranchDetailPage extends StatelessWidget {
8. width ,
8. width ,
Expanded (
Expanded (
child: Column (
child: Column (
crossAxisAlignment:
crossAxisAlignment: CrossAxisAlignment . start ,
CrossAxisAlignment . start ,
mainAxisAlignment: MainAxisAlignment . start ,
mainAxisAlignment:
MainAxisAlignment . start ,
children: [
children: [
Row (
Row (
children: [
children: [
categories [ pIndex ]
categories [ pIndex ] . categoryName . toString ( ) . toText ( fontSize: 16 , isBold: true ) ,
. categoryName
. toString ( )
. toText (
fontSize: 16 ,
isBold: true ) ,
/ / Padding (
/ / Padding (
/ / padding: const EdgeInsets . all ( 4.0 ) ,
/ / padding: const EdgeInsets . all ( 4.0 ) ,
/ / child: SvgPicture . asset (
/ / child: SvgPicture . asset (
@ -230,46 +215,26 @@ class BranchDetailPage extends StatelessWidget {
/ / ) ,
/ / ) ,
/ / ) ,
/ / ) ,
] ,
] ,
mainAxisAlignment:
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
MainAxisAlignment . spaceBetween ,
) ,
) ,
Row (
Row (
children: [
children: [
Expanded (
Expanded (
child: ListView . builder (
child: ListView . builder (
itemBuilder:
itemBuilder: ( context , index ) {
( context , index ) {
return Container (
return Container (
child: ( EasyLocalization . of (
child: ( EasyLocalization . of ( context ) ? . currentLocale ? . countryCode = = " SA "
context )
? categories [ pIndex ] . services ! [ index ] . serviceDescriptionN . toString ( )
? . currentLocale
: categories [ pIndex ] . services ! [ index ] . serviceDescription . toString ( ) )
? . countryCode = =
" SA "
? categories [
pIndex ]
. services ! [
index ]
. serviceDescriptionN
. toString ( )
: categories [
pIndex ]
. services ! [
index ]
. serviceDescription
. toString ( ) )
. toText (
. toText (
fontSize: 12 ,
fontSize: 12 ,
color: MyColors
color: MyColors . lightTextColor ,
. lightTextColor ,
isBold: true ,
isBold: true ,
) ,
) ,
) ;
) ;
} ,
} ,
itemCount: categories [ pIndex ]
itemCount: categories [ pIndex ] . services ? . length ,
. services
physics: const NeverScrollableScrollPhysics ( ) ,
? . length ,
physics:
const NeverScrollableScrollPhysics ( ) ,
shrinkWrap: true ,
shrinkWrap: true ,
padding: EdgeInsets . zero ,
padding: EdgeInsets . zero ,
) ,
) ,
@ -282,18 +247,15 @@ class BranchDetailPage extends StatelessWidget {
) ,
) ,
) ,
) ,
] ,
] ,
mainAxisAlignment:
mainAxisAlignment: MainAxisAlignment . end ,
MainAxisAlignment . end ,
crossAxisAlignment: CrossAxisAlignment . end ,
crossAxisAlignment:
CrossAxisAlignment . end ,
)
)
] ,
] ,
) ) ,
) ) ,
] ,
] ,
) . toContainer (
) . toContainer (
width: double . infinity ,
width: double . infinity ,
padding: const EdgeInsets . symmetric (
padding: const EdgeInsets . symmetric ( horizontal: 12 , vertical: 8 ) ,
horizontal: 12 , vertical: 8 ) ,
isShadowEnabled: true ,
isShadowEnabled: true ,
) ,
) ,
) ;
) ;
@ -302,8 +264,7 @@ class BranchDetailPage extends StatelessWidget {
physics: const NeverScrollableScrollPhysics ( ) ,
physics: const NeverScrollableScrollPhysics ( ) ,
shrinkWrap: true ,
shrinkWrap: true ,
padding: const EdgeInsets . all ( 20 ) ,
padding: const EdgeInsets . all ( 20 ) ,
separatorBuilder:
separatorBuilder: ( BuildContext context , int index ) {
( BuildContext context , int index ) {
return 12. height ;
return 12. height ;
} ,
} ,
) ,
) ,
@ -327,9 +288,16 @@ class BranchDetailPage extends StatelessWidget {
borderColor: MyColors . darkPrimaryColor ,
borderColor: MyColors . darkPrimaryColor ,
txtColor: MyColors . darkPrimaryColor ,
txtColor: MyColors . darkPrimaryColor ,
isFilled: false ,
isFilled: false ,
onPressed: ( ) {
onPressed: ( ) async {
navigateWithName ( context , ProviderAppRoutes . dealerUser ,
showMyBottomSheet (
arguments: branchData . id . toString ( ) ) ;
context ,
child: AssignDealerUserSheet (
branchId: branchData . id . toString ( ) ,
callBackFunc: ( ) {
getBranchUsers ( context ) ;
} ,
) ,
) ;
} ,
} ,
) ,
) ,
) ,
) ,
@ -340,6 +308,16 @@ class BranchDetailPage extends StatelessWidget {
) ;
) ;
}
}
bool validation ( BuildContext context ) {
bool isValid = false ;
for ( var element in context . read < ServiceVM > ( ) . allProviderDealersList ) {
if ( element . isBranchUser ? ? false ) {
isValid = true ;
}
}
return isValid ;
}
Widget titleWidget ( String icon , String title ) {
Widget titleWidget ( String icon , String title ) {
return Row (
return Row (
children: [
children: [