updated menus

faiz_marathon_signalR_critical
Sultan Khan 2 years ago
parent 029f03f2bc
commit 0974861463

@ -0,0 +1,31 @@
import 'dart:async';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'api_client.dart';
class EITApiClient {
static final EITApiClient _instance = EITApiClient._internal();
EITApiClient._internal();
factory EITApiClient() => _instance;
Future<List<CollectionTransaction>?> getEITTransactions(String functionName) async {
String url = "${ApiConsts.erpRest}GET_EIT_TRANSACTIONS";
Map<String, dynamic> postParams = {'P_FUNCTION_NAME': functionName, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
List<CollectionTransaction>? responseData = GET_EIT_Transactions_Model.fromJson(json['GetEITTransactionList'][0]).collectionTransaction;
return responseData;
}, url, postParams);
}
}

@ -6,6 +6,7 @@ import 'package:mohem_flutter_app/ui/login/login_screen.dart';
import 'package:mohem_flutter_app/ui/login/new_password_screen.dart';
import 'package:mohem_flutter_app/ui/login/verify_last_login_screen.dart';
import 'package:mohem_flutter_app/ui/login/verify_login_screen.dart';
import 'package:mohem_flutter_app/ui/screens/eit/add_eit.dart';
import 'package:mohem_flutter_app/ui/screens/submenu_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/missing_swipe_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart';
@ -23,6 +24,7 @@ class AppRoutes {
static const String dashboard = "/dashboard";
static const String todayAttendance = "/todayAttendance";
static const String subMenuScreen = "/submenuScreen";
static const String addEitScreen = "/addeitScreen";
static const String initialRoute = login;
//Work List
@ -39,6 +41,9 @@ class AppRoutes {
newPassword: (context) => NewPasswordScreen(),
forgotPassword: (context) => ForgotPasswordScreen(),
todayAttendance: (context) => TodayAttendanceScreen(),
//eit
addEitScreen: (context) => AddEITScreen(),
//Work List
workList: (context) => WorkListScreen(),

@ -7,6 +7,7 @@ import 'package:mohem_flutter_app/config/app_provider.dart';
import 'package:mohem_flutter_app/generated/codegen_loader.g.dart';
import 'package:mohem_flutter_app/models/post_params_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/provider/eit_provider_model.dart';
import 'package:mohem_flutter_app/theme/app_theme.dart';
import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart';
@ -14,14 +15,12 @@ import 'package:firebase_core/firebase_core.dart';
import 'config/routes.dart';
import 'package:logger/logger.dart';
var logger = Logger(
// filter: null, // Use the default LogFilter (-> only log in debug mode)
printer: PrettyPrinter(lineLength: 0), // Use the PrettyPrinter to format and print log
// output: null, // U
);
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await EasyLocalization.ensureInitialized();
@ -37,6 +36,7 @@ Future<void> main() async {
child: MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => DashboardProviderModel()),
ChangeNotifierProvider(create: (_) => EITProviderModel()),
],
child: MyApp(),
),

@ -0,0 +1,103 @@
class GET_EIT_Transactions_Model {
List<CollectionTransaction>? collectionTransaction;
GET_EIT_Transactions_Model({this.collectionTransaction});
GET_EIT_Transactions_Model.fromJson(Map<String, dynamic> json) {
if (json['Collection_Transaction'] != null) {
collectionTransaction = <CollectionTransaction>[];
json['Collection_Transaction'].forEach((v) {
collectionTransaction!.add(new CollectionTransaction.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.collectionTransaction != null) {
data['Collection_Transaction'] = this.collectionTransaction!.map((v) => v.toJson()).toList();
}
return data;
}
}
class CollectionTransaction {
String? aPPLICATIONCOLUMNNAME;
String? dATATYPE;
String? dATEVALUE;
String? dESCFLEXCONTEXTCODE;
String? dESCFLEXNAME;
String? dISPLAYFLAG;
int? fROMROWNUM;
int? nOOFROWS;
dynamic? nUMBERVALUE;
int? rOWNUM;
String? sEGMENTNAME;
String? sEGMENTPROMPT;
int? sEGMENTSEQNUM;
String? sEGMENTVALUEDSP;
int? tOROWNUM;
int? tRANSACTIONNUMBER;
String? vARCHAR2VALUE;
CollectionTransaction(
{this.aPPLICATIONCOLUMNNAME,
this.dATATYPE,
this.dATEVALUE,
this.dESCFLEXCONTEXTCODE,
this.dESCFLEXNAME,
this.dISPLAYFLAG,
this.fROMROWNUM,
this.nOOFROWS,
this.nUMBERVALUE,
this.rOWNUM,
this.sEGMENTNAME,
this.sEGMENTPROMPT,
this.sEGMENTSEQNUM,
this.sEGMENTVALUEDSP,
this.tOROWNUM,
this.tRANSACTIONNUMBER,
this.vARCHAR2VALUE});
CollectionTransaction.fromJson(Map<String, dynamic> json) {
aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME'];
dATATYPE = json['DATATYPE'];
dATEVALUE = json['DATE_VALUE'];
dESCFLEXCONTEXTCODE = json['DESC_FLEX_CONTEXT_CODE'];
dESCFLEXNAME = json['DESC_FLEX_NAME'];
dISPLAYFLAG = json['DISPLAY_FLAG'];
fROMROWNUM = json['FROM_ROW_NUM'];
nOOFROWS = json['NO_OF_ROWS'];
nUMBERVALUE = json['NUMBER_VALUE'];
rOWNUM = json['ROW_NUM'];
sEGMENTNAME = json['SEGMENT_NAME'];
sEGMENTPROMPT = json['SEGMENT_PROMPT'];
sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM'];
sEGMENTVALUEDSP = json['SEGMENT_VALUE_DSP'];
tOROWNUM = json['TO_ROW_NUM'];
tRANSACTIONNUMBER = json['TRANSACTION_NUMBER'];
vARCHAR2VALUE = json['VARCHAR2_VALUE'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME;
data['DATATYPE'] = this.dATATYPE;
data['DATE_VALUE'] = this.dATEVALUE;
data['DESC_FLEX_CONTEXT_CODE'] = this.dESCFLEXCONTEXTCODE;
data['DESC_FLEX_NAME'] = this.dESCFLEXNAME;
data['DISPLAY_FLAG'] = this.dISPLAYFLAG;
data['FROM_ROW_NUM'] = this.fROMROWNUM;
data['NO_OF_ROWS'] = this.nOOFROWS;
data['NUMBER_VALUE'] = this.nUMBERVALUE;
data['ROW_NUM'] = this.rOWNUM;
data['SEGMENT_NAME'] = this.sEGMENTNAME;
data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT;
data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM;
data['SEGMENT_VALUE_DSP'] = this.sEGMENTVALUEDSP;
data['TO_ROW_NUM'] = this.tOROWNUM;
data['TRANSACTION_NUMBER'] = this.tRANSACTIONNUMBER;
data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE;
return data;
}
}

@ -0,0 +1,35 @@
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/dashboard_api_client.dart';
import 'package:mohem_flutter_app/api/eit_api_client.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/main.dart';
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/dashboard/menus.dart';
import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/widgets/Updater.dart';
/// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool
// ignore: prefer_mixin
class EITProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
List<CollectionTransaction>? eitTransactionList;
late bool isEitLoaded = false;
void getEITList(String functionName) async {
try {
eitTransactionList = await EITApiClient().getEITTransactions(functionName);
isEitLoaded = true;
notifyListeners();
} catch (ex) {
isEitLoaded = false;
logger.wtf(ex);
notifyListeners();
Utils.handleException(ex, null);
}
}
}

@ -0,0 +1,110 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/dashboard/menus.dart';
import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/provider/eit_provider_model.dart';
import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart';
import 'package:mohem_flutter_app/widgets/loading_dialog.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:provider/provider.dart';
class MissingSwipe extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer<EITProviderModel>(
builder: (context, data, child) {
return !data.isEitLoaded
? LoadingDialog()
: SizedBox(
width: double.infinity,
height: double.infinity,
child: ListView.separated(
itemBuilder: (context, index) {
return rowItem(data.eitTransactionList![index]);
},
separatorBuilder: (context, index) {
return 12.height;
},
itemCount: data.eitTransactionList?.length ?? 0,
padding: EdgeInsets.only(left: 21, right: 21),
));
},
);
}
Widget rowItem(CollectionTransaction types) {
return InkWell(
onTap: () {
// Navigator.pushNamed(context, AppRoutes.missingSwipe);
},
child: Container(
width: double.infinity,
padding: EdgeInsets.all(12),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
boxShadow: [
BoxShadow(
color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26,
offset: const Offset(0, -3),
),
],
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
gradient: LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomRight, colors: [Colors.red, Colors.blue]),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SvgPicture.asset(
"assets/images/miss_swipe.svg",
color: Colors.white,
),
2.height,
Text(types.aPPLICATIONCOLUMNNAME.toString())
],
).paddingAll(6),
),
12.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
"Missing Swipe Request".toText16(),
"Missing Swipe Request for Hussain, Mohammad has been approved".toText10(),
12.height,
Row(
children: [
Expanded(child: "07 Jan 2021".toText10(color: MyColors.lightTextColor)),
SvgPicture.asset(
"assets/images/arrow_next.svg",
color: MyColors.darkIconColor,
)
],
),
],
),
),
],
),
),
);
}
}

@ -0,0 +1,63 @@
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/dashboard/menus.dart';
import 'package:mohem_flutter_app/provider/eit_provider_model.dart';
import 'package:mohem_flutter_app/ui/app_bar.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/ui/landing/widget/missing_swipe.dart';
import 'package:provider/provider.dart';
class AddEITScreen extends StatelessWidget {
late GetMenuEntriesList getMenu;
late EITProviderModel data;
@override
Widget build(BuildContext context) {
getMenu = ModalRoute.of(context)!.settings.arguments as GetMenuEntriesList;
data = Provider.of<EITProviderModel>(context, listen: false);
data.getEITList(getMenu.functionName.toString());
return DefaultTabController(
length: 2,
child: Scaffold(
backgroundColor: Colors.white,
appBar: appBar(
context,
title: getMenu.prompt.toString(),
),
body: Container(
width: double.infinity,
height: double.infinity,
child: Column(children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(20), bottomRight: Radius.circular(20)),
gradient: LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomRight, colors: [
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
]),
),
clipBehavior: Clip.antiAlias,
child: TabBar(
indicatorColor: Colors.white,
labelColor: Colors.white,
tabs: [
Tab(
text: "Missing Swipe",
),
Tab(
text: "Swipe Request",
),
],
),
),
Expanded(
child: TabBarView(
children: [MissingSwipe(), Container()],
),
)
])),
));
}
}

@ -1,19 +1,12 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/dashboard/menus.dart';
import 'package:mohem_flutter_app/ui/app_bar.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
class SubMenuScreen extends StatelessWidget {
late Menus menu;
@override
Widget build(BuildContext context) {
menu = ModalRoute.of(context)!.settings.arguments as Menus;
@ -27,14 +20,20 @@ class SubMenuScreen extends StatelessWidget {
width: double.infinity,
height: double.infinity,
child: Column(
children: menu.menuEntiesList.map((i) => rowItem(i)).toList(),
children: menu.menuEntiesList.map((i) => rowItem(i, context)).toList(),
)),
);
}
Widget rowItem(GetMenuEntriesList obj) {
Widget rowItem(obj, context) {
return InkWell(
onTap: () {},
onTap: () {
Navigator.pushNamed(
context,
AppRoutes.addEitScreen,
arguments: obj,
);
},
child: Container(
width: double.infinity,
padding: EdgeInsets.all(12),

Loading…
Cancel
Save