Merge branch 'development_sikander' into 'master'

Development sikander

See merge request Cloud_Solution/mohemm-flutter-app!11
merge-requests/12/merge
Sikander Saleem 3 years ago
commit 90d9cc04fc

@ -1,6 +1,6 @@
class CalculateAbsenceDuration { class CalculateAbsenceDuration {
int? pABSENCEDAYS; num? pABSENCEDAYS;
int? pABSENCEHOURS; num? pABSENCEHOURS;
String? pRETURNMSG; String? pRETURNMSG;
String? pRETURNSTATUS; String? pRETURNSTATUS;

@ -81,8 +81,8 @@ class _AddLeaveBalanceScreenState extends State<AddLeaveBalanceScreen> {
Utils.showLoading(context); Utils.showLoading(context);
CalculateAbsenceDuration duration = await LeaveBalanceApiClient() CalculateAbsenceDuration duration = await LeaveBalanceApiClient()
.calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999); .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999);
print(duration.toJson());
totalDays = duration.pABSENCEDAYS; totalDays = duration.pABSENCEDAYS?.toInt();
Utils.hideLoading(context); Utils.hideLoading(context);
setState(() {}); setState(() {});
} catch (ex) { } catch (ex) {

@ -69,10 +69,8 @@ class _DynamicListViewScreenState extends State<DynamicListViewScreen> {
isTicketRequest = dynamicParams!.dynamicId == "HMG_TKT_NEW_EIT_SS"; isTicketRequest = dynamicParams!.dynamicId == "HMG_TKT_NEW_EIT_SS";
getTransactions(); getTransactions();
} }
Widget dataWidget = ListView( Widget dataWidget = ListView(
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.all(21), padding: const EdgeInsets.all(21),
children: [ children: [
// HMG_TKT_NEW_EIT_SS Id used for ticket balance dashboard // HMG_TKT_NEW_EIT_SS Id used for ticket balance dashboard

@ -84,24 +84,8 @@ class _ContactDetailsState extends State<ContactDetails> {
if (getEmployeePhonesList.isNotEmpty) if (getEmployeePhonesList.isNotEmpty)
Stack( Stack(
children: [ children: [
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
menuEntriesPhone.updateButton == 'Y'
? IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {
updatePhone();
},
)
: Container()
],
),
ListView.separated( ListView.separated(
physics: NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
itemBuilder: (cxt, index) => Column( itemBuilder: (cxt, index) => Column(
@ -113,38 +97,20 @@ class _ContactDetailsState extends State<ContactDetails> {
), ),
separatorBuilder: (cxt, index) => 12.height, separatorBuilder: (cxt, index) => 12.height,
itemCount: getEmployeePhonesList.length), itemCount: getEmployeePhonesList.length),
// Column( if (menuEntriesPhone.updateButton == 'Y')
// crossAxisAlignment: CrossAxisAlignment.start, Positioned(
// children: getEmployeePhonesList top: 1,
// .map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ right: 1,
// "${e.pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor), child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(updatePhone),
// "${e.pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor), ),
// ]))
// .toList())
], ],
).objectContainerView(), ).objectContainerView(),
12.height, 12.height,
if (getEmployeeAddressList.isNotEmpty) if (getEmployeeAddressList.isNotEmpty)
Stack( Stack(
children: [ children: [
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
menuEntriesAddress.updateButton == 'Y'
? IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {
addUpdateAddress();
},
)
: Container()
],
),
ListView.separated( ListView.separated(
physics: NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
itemBuilder: (cxt, index) => Column( itemBuilder: (cxt, index) => Column(
@ -156,14 +122,12 @@ class _ContactDetailsState extends State<ContactDetails> {
), ),
separatorBuilder: (cxt, index) => 12.height, separatorBuilder: (cxt, index) => 12.height,
itemCount: getEmployeeAddressList.length), itemCount: getEmployeeAddressList.length),
// Column( if (menuEntriesAddress.updateButton == 'Y')
// crossAxisAlignment: CrossAxisAlignment.start, Positioned(
// children: getEmployeeAddressList top: 1,
// .map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ right: 1,
// "${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(addUpdateAddress),
// "${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), ),
// ]))
// .toList())
], ],
).objectContainerView() ).objectContainerView()
], ],

@ -4,6 +4,8 @@ import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.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/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
@ -26,6 +28,7 @@ class PhoneNumbers extends StatefulWidget {
class _PhoneNumbersState extends State<PhoneNumbers> { class _PhoneNumbersState extends State<PhoneNumbers> {
List<GetPhoneNumberTypesModel> getPhoneNumberTypesList = []; List<GetPhoneNumberTypesModel> getPhoneNumberTypesList = [];
SubmitPhonesTransactionList submitPhoneNumbers = SubmitPhonesTransactionList(); SubmitPhonesTransactionList submitPhoneNumbers = SubmitPhonesTransactionList();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -46,129 +49,66 @@ class _PhoneNumbersState extends State<PhoneNumbers> {
title: LocaleKeys.profile_contactDetails.tr(), title: LocaleKeys.profile_contactDetails.tr(),
), ),
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(), body: Column(
body: SingleChildScrollView( children: [
child: Column( ListView(
children: [ physics: const BouncingScrollPhysics(),
Container( padding: const EdgeInsets.all(21),
width: double.infinity, children: [
margin: EdgeInsets.only(left: 25, right: 25, top: 25), DefaultButton("+ ${LocaleKeys.addRow.tr()}", () {
padding: EdgeInsets.all(20), widget.getEmployeePhonesList.add(GetEmployeePhonesList(aCTION: 'NEW_ROW'));
// height: 400, setState(() {});
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.0), border: Border.all(color: Color.fromARGB(255, 209, 207, 207))), }),
child: InkWell( 12.height,
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ ListView.separated(
Icon( shrinkWrap: true,
Icons.add, physics: const NeverScrollableScrollPhysics(),
color: Color(0xff259CB8), itemBuilder: (cxt, index) {
), var element = widget.getEmployeePhonesList[index];
Text( return element.aCTION != 'DELETE_ROW'
LocaleKeys.addRow.tr(), ? Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
style: TextStyle(color: Color(0xff259CB8), fontWeight: FontWeight.bold), PopupMenuButton(
) child: DynamicTextFieldWidget(
]), LocaleKeys.selectTypeT.tr(),
onTap: () { element.pHONETYPEMEANING ?? LocaleKeys.pleaseSelect.tr(),
addNewRow(); isEnable: false,
}, isPopup: true,
), ).paddingOnly(bottom: 12),
), itemBuilder: (_) => <PopupMenuItem<int>>[
Column( for (int i = 0; i < getPhoneNumberTypesList.length; i++) PopupMenuItem<int>(child: Text(getPhoneNumberTypesList![i].mEANING!), value: i),
crossAxisAlignment: CrossAxisAlignment.start, ],
children: widget.getEmployeePhonesList onSelected: (int index) {
.map((e) => e.aCTION != 'DELETE_ROW' element.pHONETYPEMEANING = getPhoneNumberTypesList[index].mEANING;
? Container( element.pHONETYPE = getPhoneNumberTypesList[index].cODE;
width: double.infinity, setState(() {});
margin: EdgeInsets.only( }),
top: 20, DynamicTextFieldWidget(
left: 26, "Value",
right: 26, element.pHONENUMBER ?? "",
), isReadOnly: false,
padding: EdgeInsets.only(left: 14, right: 14, top: 15, bottom: 15), onChange: (text) {
// height: 400, element.pHONENUMBER = text;
decoration: BoxDecoration( },
boxShadow: [ ).paddingOnly(bottom: 12),
BoxShadow( Row(mainAxisAlignment: MainAxisAlignment.end, children: [
color: Colors.grey.withOpacity(0.5), Icon(Icons.delete, color: MyColors.redColor, size: 18),
spreadRadius: 5, LocaleKeys.delete.tr().toText14(color: MyColors.redColor),
blurRadius: 26, ]).onPress(() {
offset: Offset(0, 3), element.aCTION = 'DELETE_ROW';
), setState(() {});
], }),
color: Colors.white, ]).objectContainerView().paddingOnly(bottom: 12)
borderRadius: BorderRadius.circular(10.0), : Container();
), },
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ separatorBuilder: (cxt, index) => 0.height,
PopupMenuButton( itemCount: widget.getEmployeePhonesList.length)
child: DynamicTextFieldWidget( ],
LocaleKeys.pleaseSelect.tr(), ).expanded,
e.pHONETYPEMEANING ?? "", DefaultButton(LocaleKeys.update.tr(), () async {
isEnable: false, updatePhone();
isPopup: true, }).insideContainer
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getPhoneNumberTypesList.length; i++) PopupMenuItem<int>(child: Text(getPhoneNumberTypesList![i].mEANING!), value: i),
],
onSelected: (int index) {
e.pHONETYPEMEANING = getPhoneNumberTypesList[index].mEANING;
e.pHONETYPE = getPhoneNumberTypesList[index].cODE;
setState(() {});
}),
DynamicTextFieldWidget(
"",
e.pHONENUMBER ?? "",
isReadOnly: false,
onChange: (text) {
e.pHONENUMBER = text;
},
).paddingOnly(bottom: 12),
InkWell(
child: Row(mainAxisAlignment: MainAxisAlignment.end, children: [
Icon(
Icons.delete,
color: Colors.red,
size: 18,
),
Text(
LocaleKeys.delete.tr(),
style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold),
)
]),
onTap: () {
// widget.getEmployeePhonesList.removeWhere((item) => item.pHONEID == e.pHONEID);
setState(() {
deleteRow(e);
});
},
),
SizedBox(
height: 10,
),
]))
: Container())
.toList()),
SizedBox(
height: 80,
)
],
),
),
);
}
Widget footer() {
return Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
color: MyColors.white,
boxShadow: [
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
], ],
), ),
child: DefaultButton(LocaleKeys.update.tr(), () async {
updatePhone();
// context.setLocale(const Locale("en", "US")); // to change Loacle
// Profile();
}).insideContainer,
); );
} }
@ -176,7 +116,6 @@ class _PhoneNumbersState extends State<PhoneNumbers> {
Utils.showLoading(context); Utils.showLoading(context);
setUpdateStatus(); setUpdateStatus();
submitPhoneNumbers = await ProfileApiClient().submitPhoneNumbers(widget.getEmployeePhonesList); submitPhoneNumbers = await ProfileApiClient().submitPhoneNumbers(widget.getEmployeePhonesList);
Utils.hideLoading(context); Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(LocaleKeys.profile_contactDetails.tr(), submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'phone_numbers')); arguments: RequestSubmitScreenParams(LocaleKeys.profile_contactDetails.tr(), submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'phone_numbers'));
@ -191,14 +130,4 @@ class _PhoneNumbersState extends State<PhoneNumbers> {
} }
}); });
} }
void addNewRow() {
setState(() {
widget.getEmployeePhonesList.add(GetEmployeePhonesList(aCTION: 'NEW_ROW'));
});
}
void deleteRow(GetEmployeePhonesList row) {
row.aCTION = 'DELETE_ROW';
}
} }

@ -19,6 +19,7 @@ import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
class WorkListScreen extends StatefulWidget { class WorkListScreen extends StatefulWidget {
WorkListScreen({Key? key}) : super(key: key); WorkListScreen({Key? key}) : super(key: key);
@ -41,14 +42,7 @@ class _WorkListScreenState extends State<WorkListScreen> {
key: 'HRSSA', key: 'HRSSA',
disable: false), disable: false),
WorkListItemTypeModelData( WorkListItemTypeModelData(
value: 0, value: 0, name: 'MR', fullName: LocaleKeys.moveOrder.tr(), active: false, color: [Color(0xff58DCFA), Color(0xff3CB9D5)], icon: "assets/images/miss_swipe.svg", key: 'INVMOA', disable: false),
name: 'MR',
fullName: LocaleKeys.moveOrder.tr(),
active: false,
color: [Color(0xff58DCFA), Color(0xff3CB9D5)],
icon: "assets/images/miss_swipe.svg",
key: 'INVMOA',
disable: false),
WorkListItemTypeModelData( WorkListItemTypeModelData(
value: 0, value: 0,
name: 'PR', name: 'PR',
@ -112,6 +106,8 @@ class _WorkListScreenState extends State<WorkListScreen> {
late DashboardProviderModel providerData; late DashboardProviderModel providerData;
final RefreshController _refreshController = RefreshController(initialRefresh: false);
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -180,6 +176,11 @@ class _WorkListScreenState extends State<WorkListScreen> {
} }
} }
void _onRefresh() async {
getWorkList();
_refreshController.refreshCompleted();
}
@override @override
void dispose() { void dispose() {
super.dispose(); super.dispose();
@ -200,11 +201,7 @@ class _WorkListScreenState extends State<WorkListScreen> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor),
width: double.infinity,
height: 1,
color: MyColors.lightGreyEFColor,
),
SizedBox( SizedBox(
height: 40, height: 40,
child: ListView.separated( child: ListView.separated(
@ -230,6 +227,7 @@ class _WorkListScreenState extends State<WorkListScreen> {
workListItemIndex = index; workListItemIndex = index;
if (workListItemTypes[index].value == 0) { if (workListItemTypes[index].value == 0) {
workList = []; workList = [];
itgRequestTypeIndex = null;
} else { } else {
workList = null; workList = null;
} }
@ -247,84 +245,71 @@ class _WorkListScreenState extends State<WorkListScreen> {
padding: const EdgeInsets.only(left: 21, right: 21), padding: const EdgeInsets.only(left: 21, right: 21),
), ),
).paddingOnly(top: 21, bottom: 21), ).paddingOnly(top: 21, bottom: 21),
workListItemTypes[workListItemIndex] workListItemTypes[workListItemIndex].fullName.toSectionHeading().paddingOnly(left: 21, right: 21),
.fullName SmartRefresher(
.toSectionHeading() enablePullDown: true,
.paddingOnly(left: 21, right: 21), enablePullUp: false,
if (itgRequestTypeIndex != null) header: const MaterialClassicHeader(
SizedBox( color: MyColors.gradiantEndColor,
height: 40,
child: ListView.separated(
itemBuilder: (context, index) {
RequestType type = itgFormsModel!.requestType![index];
return Container(
padding: const EdgeInsets.only(
left: 21, right: 21, top: 8, bottom: 8),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(30),
color: itgRequestTypeIndex == index
? MyColors.darkIconColor
: MyColors.lightGreyEAColor),
child: ("${type.requestTypeName}").toText12(
color: itgRequestTypeIndex == index
? MyColors.white
: MyColors.black),
).onPress(() {
if (itgRequestTypeIndex != index) {
itgRequestTypeIndex = index;
setState(() {});
}
});
},
separatorBuilder: (context, index) => 8.width,
shrinkWrap: true,
itemCount: itgFormsModel?.requestType?.length ?? 0,
scrollDirection: Axis.horizontal,
padding: const EdgeInsets.only(left: 21, right: 21),
), ),
).paddingOnly(top: 16, bottom: 16), controller: _refreshController,
itgRequestTypeIndex != null onRefresh: _onRefresh,
? Expanded( child: SingleChildScrollView(
child: ListView.separated( physics: const BouncingScrollPhysics(),
physics: BouncingScrollPhysics(), child: itgRequestTypeIndex != null
itemBuilder: (context, index) { ? Column(
return itgRowItem( children: [
workListItemTypes[workListItemIndex], SizedBox(
itgFormsModel!.requestType![itgRequestTypeIndex!] height: 40,
.requestDetails![index], child: ListView.separated(
index);
},
separatorBuilder: (context, index) => 12.height,
itemCount: itgFormsModel!
.requestType![itgRequestTypeIndex!]
.requestDetails
?.length ??
0,
padding: const EdgeInsets.all(21),
),
)
: Expanded(
child: workList != null
? ((workList!).isEmpty
? LocaleKeys.noHistoryAvailable
.tr()
.toText16()
.center
: ListView.separated(
physics: const BouncingScrollPhysics(),
itemBuilder: (context, index) { itemBuilder: (context, index) {
return rowItem( RequestType type = itgFormsModel!.requestType![index];
workListItemTypes[workListItemIndex], return Container(
workList![index], padding: const EdgeInsets.only(left: 21, right: 21, top: 8, bottom: 8),
index); alignment: Alignment.center,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: itgRequestTypeIndex == index ? MyColors.darkIconColor : MyColors.lightGreyEAColor),
child: ("${type.requestTypeName}").toText12(color: itgRequestTypeIndex == index ? MyColors.white : MyColors.black),
).onPress(() {
if (itgRequestTypeIndex != index) {
itgRequestTypeIndex = index;
setState(() {});
}
});
}, },
separatorBuilder: (context, index) => 12.height, separatorBuilder: (context, index) => 8.width,
itemCount: workList?.length ?? 0, shrinkWrap: true,
padding: const EdgeInsets.all(21), itemCount: itgFormsModel?.requestType?.length ?? 0,
)) scrollDirection: Axis.horizontal,
: const SizedBox(), padding: const EdgeInsets.only(left: 21, right: 21),
), ),
).paddingOnly(top: 16, bottom: 16),
ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return itgRowItem(workListItemTypes[workListItemIndex], itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails![index], index);
},
separatorBuilder: (context, index) => 12.height,
itemCount: itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails?.length ?? 0,
padding: const EdgeInsets.all(21),
),
],
)
: workList != null
? ((workList!).isEmpty
? Utils.getNoDataWidget(context).paddingOnly(top: 100)
: ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return rowItem(workListItemTypes[workListItemIndex], workList![index], index);
},
separatorBuilder: (context, index) => 12.height,
itemCount: workList?.length ?? 0,
padding: const EdgeInsets.all(21),
))
: const SizedBox(),
)).expanded,
], ],
), ),
), ),
@ -411,17 +396,8 @@ class _WorkListScreenState extends State<WorkListScreen> {
10.height, 10.height,
Row( Row(
children: [ children: [
DateUtil.formatDateToDate( DateUtil.formatDateToDate(DateUtil.convertStringToDate(requestDetails.modifiedDate!), false).toText10(color: MyColors.lightTextColor).expanded,
DateUtil.convertStringToDate( RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.darkIconColor)),
requestDetails.modifiedDate!),
false)
.toText10(color: MyColors.lightTextColor)
.expanded,
RotatedBox(
quarterTurns: AppState().isArabic(context) ? 2 : 4,
child: SvgPicture.asset(
"assets/images/arrow_next.svg",
color: MyColors.darkIconColor)),
], ],
), ),
], ],
@ -512,17 +488,8 @@ class _WorkListScreenState extends State<WorkListScreen> {
10.height, 10.height,
Row( Row(
children: [ children: [
DateUtil.formatDateToDate( DateUtil.formatDateToDate(DateUtil.convertSimpleStringDateToDate(workData.bEGINDATE!), false).toText10(color: MyColors.lightTextColor).expanded,
DateUtil.convertSimpleStringDateToDate( RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.darkIconColor)),
workData.bEGINDATE!),
false)
.toText10(color: MyColors.lightTextColor)
.expanded,
RotatedBox(
quarterTurns: AppState().isArabic(context) ? 2 : 4,
child: SvgPicture.asset(
"assets/images/arrow_next.svg",
color: MyColors.darkIconColor)),
], ],
), ),
], ],

@ -115,9 +115,15 @@ class ActionsFragment extends StatelessWidget {
if (code == "SUBMIT") { if (code == "SUBMIT") {
return const Color(0xff2E303A); return const Color(0xff2E303A);
} else if (code == "REJECTED") { } else if (code == "REJECTED") {
return const Color(0xffD02127); return MyColors.redColor;
} else if (code == "REJECT") {
return MyColors.redColor;
} else if (code == "PENDING") {
return MyColors.orange;
} else if (code == "APPROVED") { } else if (code == "APPROVED") {
return const Color(0xff1FA269); return const Color(0xff1FA269);
} else if (code != "SUBMIT" && code != "REJECT" && code != "PENDING") {
return const Color(0xff1FA269);
} else if (code == "REQUEST_INFO") { } else if (code == "REQUEST_INFO") {
return const Color(0xff2E303A); return const Color(0xff2E303A);
} else { } else {

@ -28,9 +28,12 @@ class AttachmentsFragment extends StatelessWidget {
(getAttachmentList[index].fILENAME?.capitalizeFirstofEach ?? "").toText16().expanded, (getAttachmentList[index].fILENAME?.capitalizeFirstofEach ?? "").toText16().expanded,
], ],
).objectContainerView().onPress(() async { ).objectContainerView().onPress(() async {
// print("calling"); try {
// String path = await _createFileFromString(getAttachmentList[index].fILEDATA ?? "", getAttachmentList[index].fILECONTENTTYPE ?? ""); String path = await _createFileFromString(getAttachmentList[index].fILEDATA ?? "", getAttachmentList[index].fILECONTENTTYPE ?? "");
// OpenFile.open(path); OpenFile.open(path);
} catch (ex) {
debugPrint("FileErorr:$ex");
}
}); });
}, },
separatorBuilder: (BuildContext context, int index) => 12.height, separatorBuilder: (BuildContext context, int index) => 12.height,
@ -67,7 +70,6 @@ class AttachmentsFragment extends StatelessWidget {
String dir = (await getApplicationDocumentsDirectory()).path; String dir = (await getApplicationDocumentsDirectory()).path;
File file = File("$dir/" + DateTime.now().millisecondsSinceEpoch.toString() + "." + ext); File file = File("$dir/" + DateTime.now().millisecondsSinceEpoch.toString() + "." + ext);
await file.writeAsBytes(bytes); await file.writeAsBytes(bytes);
// print(file.path);
return file.path; return file.path;
} }
} }

@ -1,4 +1,3 @@
import 'package:easy_localization/src/public_ext.dart'; import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -6,6 +5,7 @@ import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.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/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_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/generated/locale_keys.g.dart';
@ -15,7 +15,7 @@ import 'package:mohem_flutter_app/models/worklist/update_user_type_list.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
class WorklistSettings extends StatefulWidget { class WorklistSettings extends StatefulWidget {
const WorklistSettings({Key? key}) : super(key: key); const WorklistSettings({Key? key}) : super(key: key);
@override @override
@ -26,7 +26,6 @@ class _WorklistSettingsState extends State<WorklistSettings> {
List<GetUserItemTypesList> getUserItemTypesList = []; List<GetUserItemTypesList> getUserItemTypesList = [];
UpdateUserItemTypesList? updateUserItemTypesList; UpdateUserItemTypesList? updateUserItemTypesList;
void initState() { void initState() {
super.initState(); super.initState();
userItemTypesList(); userItemTypesList();
@ -47,10 +46,9 @@ class _WorklistSettingsState extends State<WorklistSettings> {
void updateUserItem() async { void updateUserItem() async {
try { try {
Utils.showLoading(context); Utils.showLoading(context);
List<Map<String, dynamic>> itemList=[]; List<Map<String, dynamic>> itemList = [];
for (var element in getUserItemTypesList) { for (var element in getUserItemTypesList) {
itemList.add(UpdateUserTypesList(itemID: element.uSERITEMTYPEID, pITEMTYPE: element.iTEMTYPE,pFYAENABLEDFALG: element.fYAENABLEDFALG, pFYIENABLEDFALG: element.fYIENABLEDFLAG).toJson()); itemList.add(UpdateUserTypesList(itemID: element.uSERITEMTYPEID, pITEMTYPE: element.iTEMTYPE, pFYAENABLEDFALG: element.fYAENABLEDFALG, pFYIENABLEDFALG: element.fYIENABLEDFLAG).toJson());
} }
updateUserItemTypesList = await WorkListApiClient().updateUserItemTypes(itemList); updateUserItemTypesList = await WorkListApiClient().updateUserItemTypes(itemList);
Utils.hideLoading(context); Utils.hideLoading(context);
@ -64,115 +62,92 @@ class _WorklistSettingsState extends State<WorklistSettings> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold(backgroundColor: Colors.white, return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget( appBar: AppBarWidget(
context, context,
title: LocaleKeys.worklistSettings.tr(), title: LocaleKeys.worklistSettings.tr(),
), ),
body:ListView( body: Column(
children: [ children: [
Expanded( ListView(
child: Container( padding: const EdgeInsets.only(top: 21, left: 21, right: 21),
margin: const EdgeInsets.only(top: 21, left: 21, right: 21), children: [
child: Column( LocaleKeys.TurnNotificationsFor.tr().toText22(color: MyColors.blackColor),
crossAxisAlignment: CrossAxisAlignment.start, 16.height,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Container( LocaleKeys.itemType.tr().toText14(color: MyColors.blackColor),
child: LocaleKeys.TurnNotificationsFor.tr().toText22(color: MyColors.blackColor),
).paddingOnly(top: 10, bottom: 50),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [ children: ["FYA".tr().toText14(color: MyColors.blackColor), 30.width, "FYI".tr().toText14(color: MyColors.blackColor), 30.width],
Container( )
child: LocaleKeys.itemType.tr().toText14(color: MyColors.blackColor) ,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Container(
child: "FYA".tr().toText14(color: MyColors.blackColor) ,
),
Container(
child: "FYI".tr().toText14(color: MyColors.blackColor) ,
).paddingOnly(left: 30, right: 30),
],
)
],
),
Divider(color: MyColors.greyA5Color,),
SingleChildScrollView(
scrollDirection: Axis.vertical,
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: ScrollPhysics(),
itemCount: getUserItemTypesList == null ? 0 : getUserItemTypesList.length,
itemBuilder: (BuildContext context,int index) {
return Column(
children:[
customSwitch(getUserItemTypesList[index]),
Divider(
color: MyColors.greyC4Color,
thickness: 0.5,),
]);
}
),
),
], ],
), ),
), const Divider(color: MyColors.greyA5Color),
), SingleChildScrollView(
DefaultButton( scrollDirection: Axis.vertical,
LocaleKeys.save.tr(), () async { child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: ScrollPhysics(),
itemCount: getUserItemTypesList == null ? 0 : getUserItemTypesList.length,
itemBuilder: (BuildContext context, int index) {
return Column(children: [
customSwitch(getUserItemTypesList[index]),
Divider(
color: MyColors.greyC4Color,
thickness: 0.5,
),
]);
}),
),
],
).expanded,
DefaultButton(LocaleKeys.save.tr(), () async {
updateUserItem(); updateUserItem();
}).insideContainer, }).insideContainer,
], ],
) ));
);
} }
Widget customSwitch(GetUserItemTypesList list) {
Widget customSwitch(GetUserItemTypesList list){ return Padding(
return Padding( padding: const EdgeInsets.only(top: 21),
padding: const EdgeInsets.only(top: 21), child: Row(
child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
children: [ Text(
Text(list.iTEMTYPE.toString(), style: TextStyle( list.iTEMTYPE.toString(),
fontSize: 16, style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.blackColor),
fontWeight: FontWeight.w600, ),
color: MyColors.blackColor const Spacer(),
),), Row(
const Spacer(), children: [
Row( CupertinoSwitch(
children: [ trackColor: MyColors.grey57Color,
CupertinoSwitch( activeColor: MyColors.textMixColor,
trackColor: Colors.grey, value: list?.fYAENABLEDFALG == 'Y' ? true : false,
activeColor: MyColors.gradiantEndColor, onChanged: (value) {
value: list?.fYAENABLEDFALG =='Y' ?true : false, setState(() {
onChanged: (value){ list?.fYAENABLEDFALG = value == true ? 'Y' : 'N';
setState(() { });
list?.fYAENABLEDFALG = value == true ? 'Y': 'N'; }),
}); CupertinoSwitch(
} trackColor: MyColors.grey57Color,
), activeColor: MyColors.textMixColor,
CupertinoSwitch( value: list?.fYIENABLEDFLAG == 'Y' ? true : false,
trackColor: Colors.grey, onChanged: (value) {
activeColor: MyColors.gradiantEndColor, setState(() {
value: list?.fYIENABLEDFLAG =='Y' ?true : false, // list.isFYI = value;
onChanged: (value){ list?.fYIENABLEDFLAG = value == true ? 'Y' : 'N';
setState(() { });
// list.isFYI = value; }),
list?.fYIENABLEDFLAG = value ==true ? 'Y': 'N'; ],
}); )
} ],
), ),
], );
)
],
),
);
} }
} }

Loading…
Cancel
Save