fix issue

merge-requests/1/merge
Fatimah Alshammari 3 years ago
parent 89058f9e59
commit d640ce29de

@ -9,6 +9,7 @@ import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart'; import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart'; import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart'; import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart';
import 'package:mohem_flutter_app/models/my_team/get_subordinates_leaves_total_vacations_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart';
class MyTeamApiClient { class MyTeamApiClient {
@ -145,5 +146,18 @@ class MyTeamApiClient {
return responseData; return responseData;
}, url, postParams); }, url, postParams);
} }
Future<List<GetSubordinatesLeavesTotalVacationsList>> getSubordinatesLeavesList(String dateFrom, String dateTo) async {
String url = "${ApiConsts.erpRest}GET_SUBORDINATES_LEAVES_TOTAL_VACATIONS";
Map<String, dynamic> postParams = {
"P_DATE_FROM": dateFrom,
"P_DATE_TO": dateTo,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel responseData = GenericResponseModel.fromJson(json);
return responseData.getSubordinatesLeavesTotalVacationsList ?? [];
}, url, postParams);
}
} }

@ -19,6 +19,7 @@ import 'package:mohem_flutter_app/ui/my_team/create_request.dart';
import 'package:mohem_flutter_app/ui/my_team/employee_details.dart'; import 'package:mohem_flutter_app/ui/my_team/employee_details.dart';
import 'package:mohem_flutter_app/ui/my_team/my_team.dart'; import 'package:mohem_flutter_app/ui/my_team/my_team.dart';
import 'package:mohem_flutter_app/ui/my_team/profile_details.dart'; import 'package:mohem_flutter_app/ui/my_team/profile_details.dart';
import 'package:mohem_flutter_app/ui/my_team/subordinate_leave.dart';
import 'package:mohem_flutter_app/ui/my_team/team_members.dart'; import 'package:mohem_flutter_app/ui/my_team/team_members.dart';
import 'package:mohem_flutter_app/ui/my_team/view_attendance.dart'; import 'package:mohem_flutter_app/ui/my_team/view_attendance.dart';
import 'package:mohem_flutter_app/ui/payslip/monthly_pay_slip_screen.dart'; import 'package:mohem_flutter_app/ui/payslip/monthly_pay_slip_screen.dart';
@ -124,6 +125,7 @@ class AppRoutes {
static const String viewAttendance = "/viewAttendance"; static const String viewAttendance = "/viewAttendance";
static const String teamMembers = "/teamMembers"; static const String teamMembers = "/teamMembers";
static const String createRequest = "/createRequest"; static const String createRequest = "/createRequest";
static const String subordinateLeave = "/subordinateLeave";
static final Map<String, WidgetBuilder> routes = { static final Map<String, WidgetBuilder> routes = {
@ -196,6 +198,7 @@ class AppRoutes {
viewAttendance: (context) => ViewAttendance(), viewAttendance: (context) => ViewAttendance(),
teamMembers: (context) => TeamMembers(), teamMembers: (context) => TeamMembers(),
createRequest: (context) => CreateRequest(), createRequest: (context) => CreateRequest(),
subordinateLeave: (context) => SubordinateLeave(),

@ -49,6 +49,7 @@ import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_transactions.dart
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart';
import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart'; import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart';
import 'package:mohem_flutter_app/models/my_team/get_subordinates_leaves_total_vacations_list_model.dart';
import 'package:mohem_flutter_app/models/notification_action_model.dart'; import 'package:mohem_flutter_app/models/notification_action_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/pending_transactions/get_pending_transactions_details.dart'; import 'package:mohem_flutter_app/models/pending_transactions/get_pending_transactions_details.dart';
@ -215,7 +216,7 @@ class GenericResponseModel {
List<GetStampNsNotificationBodyList>? getStampNsNotificationBodyList; List<GetStampNsNotificationBodyList>? getStampNsNotificationBodyList;
List<String>? getSubordinatesAttdStatusList; List<String>? getSubordinatesAttdStatusList;
List<SubordinatesLeavesList>? getSubordinatesLeavesList; List<SubordinatesLeavesList>? getSubordinatesLeavesList;
List<String>? getSubordinatesLeavesTotalVacationsList; List<GetSubordinatesLeavesTotalVacationsList>?getSubordinatesLeavesTotalVacationsList;
List<GetSummaryOfPaymentList>? getSummaryOfPaymentList; List<GetSummaryOfPaymentList>? getSummaryOfPaymentList;
List<String>? getSwipesList; List<String>? getSwipesList;
List<String>? getTermColsStructureList; List<String>? getTermColsStructureList;
@ -964,7 +965,14 @@ class GenericResponseModel {
}); });
} }
getSubordinatesLeavesTotalVacationsList = json['GetSubordinatesLeavesTotalVacationsList']; if (json['GetSubordinatesLeavesTotalVacationsList'] != null) {
getSubordinatesLeavesTotalVacationsList =
<GetSubordinatesLeavesTotalVacationsList>[];
json['GetSubordinatesLeavesTotalVacationsList'].forEach((v) {
getSubordinatesLeavesTotalVacationsList!
.add(new GetSubordinatesLeavesTotalVacationsList.fromJson(v));
});
}
if (json['GetSummaryOfPaymentList'] != null) { if (json['GetSummaryOfPaymentList'] != null) {
getSummaryOfPaymentList = <GetSummaryOfPaymentList>[]; getSummaryOfPaymentList = <GetSummaryOfPaymentList>[];
json['GetSummaryOfPaymentList'].forEach((v) { json['GetSummaryOfPaymentList'].forEach((v) {
@ -1507,7 +1515,12 @@ class GenericResponseModel {
data['GetSubordinatesLeavesList'] = this.getSubordinatesLeavesList!.map((v) => v.toJson()).toList(); data['GetSubordinatesLeavesList'] = this.getSubordinatesLeavesList!.map((v) => v.toJson()).toList();
} }
data['GetSubordinatesLeavesTotalVacationsList'] = this.getSubordinatesLeavesTotalVacationsList; if (this.getSubordinatesLeavesTotalVacationsList != null) {
data['GetSubordinatesLeavesTotalVacationsList'] = this
.getSubordinatesLeavesTotalVacationsList!
.map((v) => v.toJson())
.toList();
}
if (this.getSummaryOfPaymentList != null) { if (this.getSummaryOfPaymentList != null) {
data['GetSummaryOfPaymentList'] = this.getSummaryOfPaymentList!.map((v) => v.toJson()).toList(); data['GetSummaryOfPaymentList'] = this.getSummaryOfPaymentList!.map((v) => v.toJson()).toList();
} }

@ -25,7 +25,7 @@ class GetUserItemTypesList {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); Map<String, dynamic> data = new Map<String, dynamic>();
data['FYA_ENABLED_FALG'] = this.fYAENABLEDFALG; data['FYA_ENABLED_FALG'] = this.fYAENABLEDFALG;
data['FYI_ENABLED_FLAG'] = this.fYIENABLEDFLAG; data['FYI_ENABLED_FLAG'] = this.fYIENABLEDFLAG;
data['ITEM_TYPE'] = this.iTEMTYPE; data['ITEM_TYPE'] = this.iTEMTYPE;

@ -41,7 +41,7 @@ class GetAttendanceTrackingList {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); Map<String, dynamic> data = new Map<String, dynamic>();
data['P_BREAK_HOURS'] = this.pBREAKHOURS; data['P_BREAK_HOURS'] = this.pBREAKHOURS;
data['P_LATE_IN_HOURS'] = this.pLATEINHOURS; data['P_LATE_IN_HOURS'] = this.pLATEINHOURS;
data['P_REMAINING_HOURS'] = this.pREMAININGHOURS; data['P_REMAINING_HOURS'] = this.pREMAININGHOURS;

@ -232,7 +232,7 @@ class GetEmployeeSubordinatesList {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); Map<String, dynamic> data = new Map<String, dynamic>();
data['ACTUAL_TERMINATION_DATE'] = this.aCTUALTERMINATIONDATE; data['ACTUAL_TERMINATION_DATE'] = this.aCTUALTERMINATIONDATE;
data['ASSIGNMENT_END_DATE'] = this.aSSIGNMENTENDDATE; data['ASSIGNMENT_END_DATE'] = this.aSSIGNMENTENDDATE;
data['ASSIGNMENT_ID'] = this.aSSIGNMENTID; data['ASSIGNMENT_ID'] = this.aSSIGNMENTID;

@ -0,0 +1,62 @@
class GetSubordinatesLeavesTotalVacationsList {
String? aBSENCEATTENDANCETYPENAME;
String? cALENDARENTRYDESC;
String? dATEEND;
String? dATESTART;
String? eMPLOYEENAME;
String? eMPLOYEENUMBER;
String? lEAVETYPE;
int? oRGANIZATIONID;
String? oRGANIZATIONNAME;
String? pOSITIONTITLE;
String? rEPLACEMENTNAME;
String? sTATUS;
GetSubordinatesLeavesTotalVacationsList(
{this.aBSENCEATTENDANCETYPENAME,
this.cALENDARENTRYDESC,
this.dATEEND,
this.dATESTART,
this.eMPLOYEENAME,
this.eMPLOYEENUMBER,
this.lEAVETYPE,
this.oRGANIZATIONID,
this.oRGANIZATIONNAME,
this.pOSITIONTITLE,
this.rEPLACEMENTNAME,
this.sTATUS});
GetSubordinatesLeavesTotalVacationsList.fromJson(Map<String, dynamic> json) {
aBSENCEATTENDANCETYPENAME = json['ABSENCE_ATTENDANCE_TYPE_NAME'];
cALENDARENTRYDESC = json['CALENDAR_ENTRY_DESC'];
dATEEND = json['DATE_END'];
dATESTART = json['DATE_START'];
eMPLOYEENAME = json['EMPLOYEE_NAME'];
eMPLOYEENUMBER = json['EMPLOYEE_NUMBER'];
lEAVETYPE = json['LEAVE_TYPE'];
oRGANIZATIONID = json['ORGANIZATION_ID'];
oRGANIZATIONNAME = json['ORGANIZATION_NAME'];
pOSITIONTITLE = json['POSITION_TITLE'];
rEPLACEMENTNAME = json['REPLACEMENT_NAME'];
sTATUS = json['STATUS'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['ABSENCE_ATTENDANCE_TYPE_NAME'] = this.aBSENCEATTENDANCETYPENAME;
data['CALENDAR_ENTRY_DESC'] = this.cALENDARENTRYDESC;
data['DATE_END'] = this.dATEEND;
data['DATE_START'] = this.dATESTART;
data['EMPLOYEE_NAME'] = this.eMPLOYEENAME;
data['EMPLOYEE_NUMBER'] = this.eMPLOYEENUMBER;
data['LEAVE_TYPE'] = this.lEAVETYPE;
data['ORGANIZATION_ID'] = this.oRGANIZATIONID;
data['ORGANIZATION_NAME'] = this.oRGANIZATIONNAME;
data['POSITION_TITLE'] = this.pOSITIONTITLE;
data['REPLACEMENT_NAME'] = this.rEPLACEMENTNAME;
data['STATUS'] = this.sTATUS;
return data;
}
}

@ -15,7 +15,7 @@ class UpdateItemTypeSuccessList {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); Map<String, dynamic> data = new Map<String, dynamic>();
data['ItemID'] = this.itemID; data['ItemID'] = this.itemID;
data['UpdateError'] = this.updateError; data['UpdateError'] = this.updateError;
data['UpdateSuccess'] = this.updateSuccess; data['UpdateSuccess'] = this.updateSuccess;

@ -12,7 +12,7 @@ class UpdateUserItemTypesList {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); Map<String, dynamic> data = new Map<String, dynamic>();
data['P_RETURN_MSG'] = this.pRETURNMSG; data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS; data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
return data; return data;

@ -18,7 +18,7 @@ class UpdateUserTypesList {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); Map<String, dynamic> data = new Map<String, dynamic>();
data['ItemID'] = this.itemID; data['ItemID'] = this.itemID;
data['P_FYAENABLED_FALG'] = this.pFYAENABLEDFALG; data['P_FYAENABLED_FALG'] = this.pFYAENABLEDFALG;
data['P_FYIENABLED_FALG'] = this.pFYIENABLEDFALG; data['P_FYIENABLED_FALG'] = this.pFYIENABLEDFALG;

@ -65,8 +65,12 @@ class _EmployeeDetailsState extends State<EmployeeDetails> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
getEmployeeSubordinates = ModalRoute.of(context)?.settings.arguments as GetEmployeeSubordinatesList; if(getEmployeeSubordinates == null) {
setMenu(); getEmployeeSubordinates = ModalRoute.of(context)?.settings.arguments as GetEmployeeSubordinatesList;
setMenu();
}
return Scaffold( return Scaffold(
extendBody: true, extendBody: true,
backgroundColor: MyColors.lightGreyEFColor, backgroundColor: MyColors.lightGreyEFColor,

@ -55,46 +55,60 @@ class _MyTeamState extends State<MyTeam> {
appBar: AppBarWidget( appBar: AppBarWidget(
context, context,
title: LocaleKeys.myTeamMembers.tr(), title: LocaleKeys.myTeamMembers.tr(),
showMemberButton: true,
), ),
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
children: [ children: [
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[ Container(
Expanded( margin: EdgeInsets.only(left: 21, right: 21, top: 20, bottom: 6),
child: TextField( padding: EdgeInsets.only(left: 14, right: 14, top: 21, bottom: 21),
onChanged: dropdownValue == "Name" decoration: BoxDecoration(
? (String value) { borderRadius: BorderRadius.circular(15),
getEmployeeSListOnSearch = color: Color(0xffFFFFFF),
getEmployeeSubordinatesList.where((GetEmployeeSubordinatesList element) => element.eMPLOYEENAME!.toLowerCase().contains(value.toLowerCase())).toList(); border: Border.all(
setState(() {}); color: Color(0xffefefef),
} width: 1,
: (String value) {
getEmployeeSListOnSearch =
getEmployeeSubordinatesList.where((GetEmployeeSubordinatesList element) => element.eMPLOYEEEMAILADDRESS!.toLowerCase().contains(value.toLowerCase())).toList();
setState(() {});
},
controller: _textEditingController,
decoration: InputDecoration(
filled: true,
fillColor: Colors.white,
border: InputBorder.none,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
// contentPadding: EdgeInsets.fromLTRB(10, 15, 10, 15),
hintText: LocaleKeys.searchBy.tr() + " $dropdownValue",
hintStyle: TextStyle(fontSize: 14.0, color: MyColors.grey57Color, fontWeight: FontWeight.w600),
), ),
)), ),
Row( child: Row(
children: [ children: [
"|".toText16(color: MyColors.greyC4Color), Expanded(
child: TextField(
onChanged: dropdownValue == "Name"
? (String value) {
getEmployeeSListOnSearch =
getEmployeeSubordinatesList.where((GetEmployeeSubordinatesList element) => element.eMPLOYEENAME!.toLowerCase().contains(value.toLowerCase())).toList();
setState(() {});
}
: (String value) {
getEmployeeSListOnSearch =
getEmployeeSubordinatesList.where((GetEmployeeSubordinatesList element) => element.eMPLOYEEEMAILADDRESS!.toLowerCase().contains(value.toLowerCase())).toList();
setState(() {});
},
controller: _textEditingController,
decoration: InputDecoration(
filled: true,
fillColor: Colors.white,
border: InputBorder.none,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
// contentPadding: EdgeInsets.fromLTRB(10, 15, 10, 15),
hintText: LocaleKeys.searchBy.tr() + " $dropdownValue",
hintStyle: TextStyle(fontSize: 14.0, color: MyColors.grey57Color, fontWeight: FontWeight.w600),
),
)),
Container(
height: 36,
width: 1,
color: Color(0xffC4C4C4),
),
10.width, 10.width,
dropDown(), dropDown(),
], ],
) ),
]).objectContainerBorderView(), ),
// ),
Container( Container(
margin: EdgeInsets.only(left: 21, right: 21), margin: EdgeInsets.only(left: 21, right: 21),
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -162,23 +176,25 @@ class _MyTeamState extends State<MyTeam> {
} }
Widget dropDown() { Widget dropDown() {
return DropdownButton<String>( return
value: dropdownValue, DropdownButton<String>(
icon: const Icon(Icons.keyboard_arrow_down, value: dropdownValue,
color: MyColors.grey57Color), icon: const Icon(Icons.keyboard_arrow_down,
elevation: 16, color: MyColors.grey57Color).paddingOnly(left: 4),
onChanged: (String? newValue) { elevation: 16,
setState(() { onChanged: (String? newValue) {
dropdownValue = newValue!; setState(() {
}); dropdownValue = newValue!;
}, });
items: <String>['Name', 'Email'].map<DropdownMenuItem<String>>((String value) { },
return DropdownMenuItem<String>( items: <String>['Name', 'Email'].map<DropdownMenuItem<String>>((String value) {
value: value, return DropdownMenuItem<String>(
child: Text(value), value: value,
); child: Text(value),
}).toList(), );
style: TextStyle(fontSize: 14.0, color: MyColors.grey57Color, fontWeight: FontWeight.w600), }).toList(),
); style: TextStyle(fontSize: 14.0, color: MyColors.grey57Color,
fontWeight: FontWeight.w600),
);
} }
} }

@ -0,0 +1,175 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/api/my_team/my_team_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/date_uitl.dart';
import 'package:mohem_flutter_app/classes/utils.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/my_team/get_subordinates_leaves_total_vacations_list_model.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/dynamic_forms/dynamic_textfield_widget.dart';
class SubordinateLeave extends StatefulWidget {
const SubordinateLeave({Key? key}) : super(key: key);
@override
_SubordinateLeaveState createState() => _SubordinateLeaveState();
}
class _SubordinateLeaveState extends State<SubordinateLeave> {
List<GetSubordinatesLeavesTotalVacationsList> getSubordinatesLeavesTotalList = [];
DateTime selectedDateFrom = DateTime.now();
DateTime selectedDateTo = DateTime.now();
bool showList = false;
// DateTime dateFrom = DateFormat("MMM/DD/YYYY").format(selectedDateFrom) as DateTime;
// DateTime dateTo = DateFormat("MMM/DD/YYYY").format(selectedDateTo) as DateTime;
@override
void initState() {
super.initState();
}
void getSubordinatesLeaves()async {
try {
Utils.showLoading(context);
getSubordinatesLeavesTotalList = await MyTeamApiClient().getSubordinatesLeavesList(selectedDateFrom.toIso8601String(), selectedDateTo.toIso8601String());
Utils.hideLoading(context);
} catch (ex) {da
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
context,
title: "Subordinate Leave",
),
backgroundColor: MyColors.backgroundColor,
body: Column(
children: [
Expanded(
child: Column(
children: [
Column(
children: [
DynamicTextFieldWidget(
LocaleKeys.dateFrom.tr(),
selectedDateFrom.toString().split(" ")[0],
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
selectedDateFrom = await _selectDate(context, DateTime.now());
setState(() {});
},
),
12.height,
DynamicTextFieldWidget(
LocaleKeys.dateTo.tr(),
selectedDateTo.toString().split(" ")[0],
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
selectedDateTo = await _selectDate(context, DateTime.now());
setState(() {});
},
)
],
).objectContainerView(),
!showList?
SingleChildScrollView(
child: ListView.separated(
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: ScrollPhysics(),
separatorBuilder: (cxt, index) => 12.height,
itemCount: getSubordinatesLeavesTotalList.length,
itemBuilder: (context, index) {
var diffDays = selectedDateTo.difference(selectedDateFrom).inDays;
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// CircleAvatar(
// radius: 25,
// backgroundImage: MemoryImage(Utils.getPostBytes(getSubordinatesLeavesTotalList[index].eMPLOYEEIMAGE)),
// backgroundColor: Colors.black,
// ),
SvgPicture.asset("assets/images/clock.svg"),
10.width,
"${getSubordinatesLeavesTotalList[index].eMPLOYEENAME}".toText16(isBold: true, color: MyColors.grey3AColor),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
"From: ${getSubordinatesLeavesTotalList[index].dATESTART}".toText10(isBold: true, color: MyColors.grey57Color),
"To: ${getSubordinatesLeavesTotalList[index].dATEEND}".toText10(isBold: true, color: MyColors.grey57Color),
],
).expanded,
"Number of days: $diffDays".toText13(color: MyColors.grey3AColor),
],
).objectContainerView();
}),
).objectContainerView()
:Container(),
],
),
),
DefaultButton(
LocaleKeys.submit.tr(), () async {
getSubordinatesLeaves();
setState(() {
showList= true;
});
showList= true;
}).insideContainer
],
),
);
}
Future<DateTime> _selectDate(BuildContext context, DateTime selectedDate) async {
DateTime time = selectedDate;
if (!Platform.isIOS) {
await showCupertinoModalPopup(
context: context,
builder: (cxt) => Container(
height: 250,
color: Colors.white,
child: CupertinoDatePicker(
backgroundColor: Colors.white,
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (value) {
if (value != null && value != selectedDate) {
time = value;
}
},
initialDateTime: selectedDate,
),
),
);
} else {
DateTime? picked = await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101));
if (picked != null && picked != selectedDate) {
time = picked;
}
}
return time;
}
}

@ -447,7 +447,7 @@ class _ViewAttendanceState extends State<ViewAttendance> {
List<Meeting> _getDataSource() { List<Meeting> _getDataSource() {
final List<Meeting> meetings = <Meeting>[]; List<Meeting> meetings = <Meeting>[];
return meetings; return meetings;
} }
@ -545,7 +545,7 @@ class MeetingDataSource extends CalendarDataSource {
} }
Meeting _getMeetingData(int index) { Meeting _getMeetingData(int index) {
final dynamic meeting = appointments; dynamic meeting = appointments;
Meeting meetingData; Meeting meetingData;
if (meeting is Meeting) { if (meeting is Meeting) {
meetingData = meeting; meetingData = meeting;

@ -83,7 +83,6 @@ class _ContactDetailsState extends State<ContactDetails> {
title: LocaleKeys.profile_contactDetails.tr(), title: LocaleKeys.profile_contactDetails.tr(),
), ),
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
// bottomSheet: footer(),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column(children: [ child: Column(children: [
Container( Container(
@ -187,21 +186,21 @@ class _ContactDetailsState extends State<ContactDetails> {
]))); ])));
} }
Widget footer() { // Widget footer() {
return Container( // return Container(
decoration: BoxDecoration( // decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10), // // borderRadius: BorderRadius.circular(10),
color: MyColors.white, // color: MyColors.white,
boxShadow: [ // boxShadow: [
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3), // BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
], // ],
), // ),
child: DefaultButton(LocaleKeys.update.tr(), () async { // child: DefaultButton(LocaleKeys.update.tr(), () async {
// context.setLocale(const Locale("en", "US")); // to change Loacle // // context.setLocale(const Locale("en", "US")); // to change Loacle
ProfileScreen(); // ProfileScreen();
}).insideContainer, // }).insideContainer,
); // );
} // }
void updatePhone() { void updatePhone() {
Navigator.push( Navigator.push(

@ -4,7 +4,9 @@ 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/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/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
@ -58,29 +60,23 @@ class _FamilyMembersState extends State<FamilyMembers> {
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
body: Column( body: Column(
children: [ children: [
20.height,
Expanded( Expanded(
child: getEmployeeContactsList.length != 0 child: getEmployeeContactsList.length != 0
? SingleChildScrollView( ? SingleChildScrollView(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
child: ListView.builder( child: ListView.separated(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
shrinkWrap: true, shrinkWrap: true,
physics: ScrollPhysics(), physics: ScrollPhysics(),
separatorBuilder: (cxt, index) => 12.height,
itemCount: getEmployeeContactsList.length, itemCount: getEmployeeContactsList.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Container( return Container(
width: double.infinity, width: double.infinity,
margin: EdgeInsets.only( margin: EdgeInsets.only(left: 21, right: 21,
top: 20,
left: 21,
right: 21,
), ),
padding: EdgeInsets.only( // padding: EdgeInsets.only(left: 14, right: 14, top: 13, bottom: 10),
left: 14,
right: 14,
top: 13,
),
height: 110,
decoration: BoxDecoration( decoration: BoxDecoration(
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
@ -90,32 +86,33 @@ class _FamilyMembersState extends State<FamilyMembers> {
offset: Offset(0, 3), offset: Offset(0, 3),
), ),
], ],
color: MyColors.whiteColor, color: Colors.white,
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),
), ),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ child: Column(
"${getEmployeeContactsList[index].cONTACTNAME}".toText16(isBold: true, color: MyColors.grey3AColor), crossAxisAlignment: CrossAxisAlignment.start,
"${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor), children: [
SizedBox( Column(
height: 5, crossAxisAlignment: CrossAxisAlignment.start,
), children: [
Divider( "${getEmployeeContactsList[index].cONTACTNAME}".toText16(isBold: true, color: MyColors.grey3AColor),
color: MyColors.lightGreyEFColor, "${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor),
height: 20, ]).paddingOnly(left: 14, right: 14, top: 13, bottom: 11),
thickness: 1, const Divider(
indent: 0, color: Color(0xffEFEFEF),
endIndent: 0, thickness: 1,
), indent: 0,
Row( endIndent: 0,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, ),
children: <Widget>[ Row(
Container( mainAxisAlignment: MainAxisAlignment.spaceEvenly,
child: menuEntries.updateButton == 'Y' children: <Widget>[
menuEntries.updateButton == 'Y'
? InkWell( ? InkWell(
onTap: () async{ onTap: () async{
relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt();
showUpdateAlertDialog(context, relationId!.toInt(), 2, LocaleKeys.update.tr()); showUpdateAlertDialog(context, relationId!.toInt(), 2, LocaleKeys.update.tr());
}, },
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
@ -136,8 +133,8 @@ class _FamilyMembersState extends State<FamilyMembers> {
), ),
], ],
), ),
), ),
) )
: RichText( : RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
@ -158,23 +155,18 @@ class _FamilyMembersState extends State<FamilyMembers> {
), ),
], ],
), ),
) ),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
child: SizedBox(
child: Container(
width: 3,
color: MyColors.lightGreyEFColor,
), ),
), Container(
), height: 35,
Container( width: 1,
child: InkWell( color: Color(0xffEFEFEF),
onTap: () { ),
InkWell(
onTap: () {
relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt();
showRemoveAlertDialog(context, relationId!.toInt()); showRemoveAlertDialog(context, relationId!.toInt());
}, },
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
WidgetSpan( WidgetSpan(
@ -194,11 +186,12 @@ class _FamilyMembersState extends State<FamilyMembers> {
), ),
], ],
), ),
), ),
)), ),
], ],
), ).paddingOnly(left: 14, right: 14),
]), ],
),
); );
}), }),
) )

@ -5,7 +5,7 @@ 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';
AppBar AppBarWidget(BuildContext context, {required String title, bool showHomeButton = false, bool showNotificationButton = false}) { AppBar AppBarWidget(BuildContext context, {required String title, bool showHomeButton = false, bool showNotificationButton = false, bool showMemberButton = false}) {
return AppBar( return AppBar(
leadingWidth: 0, leadingWidth: 0,
// leading: GestureDetector( // leading: GestureDetector(
@ -44,14 +44,16 @@ AppBar AppBarWidget(BuildContext context, {required String title, bool showHomeB
IconButton( IconButton(
onPressed: () { onPressed: () {
Navigator.pushNamed(context, AppRoutes.worklistSettings); Navigator.pushNamed(context, AppRoutes.worklistSettings);
// Navigator.pushAndRemoveUntil(
// context,
// MaterialPageRoute(builder: (context) => LandingPage()),
// (Route<dynamic> route) => false,
// );
}, },
icon: const Icon(Icons.notifications, color: MyColors.textMixColor), icon: const Icon(Icons.notifications, color: MyColors.textMixColor),
), ),
if(showMemberButton)
IconButton(
onPressed: () {
Navigator.pushNamed(context, AppRoutes.subordinateLeave);
},
icon: const Icon(Icons.people, color: MyColors.textMixColor),
),
], ],
); );
} }

Loading…
Cancel
Save