You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.8 KiB
Dart
166 lines
5.8 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:easy_localization/easy_localization.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:mohem_flutter_app/api/leave_balance_api_client.dart';
|
|
import 'package:mohem_flutter_app/api/profile_api_client.dart';
|
|
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
|
import 'package:mohem_flutter_app/classes/utils.dart';
|
|
import 'package:mohem_flutter_app/config/routes.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/get_approves_list_model.dart';
|
|
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
|
|
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.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 DeleteFamilyMember extends StatefulWidget {
|
|
int relationId;
|
|
|
|
DeleteFamilyMember(@required this.relationId, {Key? key}) : super(key: key);
|
|
|
|
@override
|
|
_DeleteFamilyMemberState createState() => _DeleteFamilyMemberState();
|
|
}
|
|
|
|
class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
|
|
String pFunctionName = "HR_PERINFO_SS";
|
|
String actionType = "DELETE";
|
|
|
|
// int? contactRelationId;
|
|
String? date = "MM/DD/YYYY";
|
|
String? datePar;
|
|
|
|
// String? itemKey;
|
|
|
|
SubmitContactTransactionList? submitContactTransactionList;
|
|
GetApprovesList? getApprovesList;
|
|
|
|
//int? relationId;
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
}
|
|
|
|
void deleteFamilyMember(datePar) async {
|
|
try {
|
|
Utils.showLoading(context);
|
|
submitContactTransactionList = await ProfileApiClient().submetConatctTransaction(pFunctionName.toString(), actionType.toString(), widget.relationId!.toInt(), datePar.toString());
|
|
Utils.hideLoading(context);
|
|
|
|
await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
|
|
arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), submitContactTransactionList!.pTRANSACTIONID!, submitContactTransactionList!.pITEMKEY!, 'family_member'));
|
|
if (!AppState().cancelRequestTrancsection) {
|
|
return;
|
|
}
|
|
Utils.showLoading(context);
|
|
await LeaveBalanceApiClient().cancelHrTransaction(submitContactTransactionList!.pTRANSACTIONID!);
|
|
Utils.hideLoading(context);
|
|
|
|
setState(() {});
|
|
} catch (ex) {
|
|
Utils.hideLoading(context);
|
|
Utils.handleException(ex, context, null);
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBarWidget(
|
|
context,
|
|
title: LocaleKeys.profile_familyDetails.tr(),
|
|
),
|
|
backgroundColor: MyColors.backgroundColor,
|
|
body: Column(
|
|
children: [
|
|
Expanded(
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
DynamicTextFieldWidget(
|
|
LocaleKeys.endDate.tr(),
|
|
date.toString(),
|
|
isEnable: false,
|
|
onTap: () async {
|
|
DateTime dateValue = await _selectDate(context);
|
|
date = DateFormat('yyyy/MM/dd', "en_US").format(dateValue);
|
|
datePar = DateFormat('yyyy/MM/dd hh:mm:ss', "en_US").format(dateValue);
|
|
setState(() {});
|
|
},
|
|
).paddingOnly(bottom: 12),
|
|
],
|
|
),
|
|
),
|
|
DefaultButton(LocaleKeys.next.tr(), () async {
|
|
deleteFamilyMember(datePar);
|
|
}).insideContainer,
|
|
],
|
|
));
|
|
}
|
|
|
|
Widget footer() {
|
|
return Container(
|
|
color: MyColors.white,
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Container(
|
|
color: MyColors.gradiantEndColor,
|
|
margin: EdgeInsets.only(bottom: 20, top: 20),
|
|
padding: EdgeInsets.only(left: 50, right: 50),
|
|
child: TextButton(
|
|
style: TextButton.styleFrom(
|
|
primary: MyColors.white,
|
|
onSurface: MyColors.white,
|
|
backgroundColor: MyColors.gradiantEndColor,
|
|
),
|
|
onPressed: () {
|
|
deleteFamilyMember(datePar);
|
|
},
|
|
child: Text(
|
|
LocaleKeys.next.tr(),
|
|
style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600),
|
|
),
|
|
)),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
DateTime selectedDate = DateTime.now();
|
|
|
|
Future<DateTime> _selectDate(BuildContext context) 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;
|
|
}
|
|
}
|