Merge branch 'master' of https://gitlab.com/mirza.shafique/mohem_flutter_app into development_sultan
commit
ff4a546e5f
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
|
||||
<g>
|
||||
<rect x="38" y="23" width="2" height="5"/>
|
||||
<rect x="42" y="23" width="2" height="5"/>
|
||||
<rect x="38" y="30" width="2" height="2"/>
|
||||
<rect x="42" y="30" width="2" height="2"/>
|
||||
<rect x="31" y="34" width="2" height="2"/>
|
||||
<rect x="26" y="54" width="2" height="2"/>
|
||||
<rect x="42" y="34" width="2" height="2"/>
|
||||
<rect x="38" y="38" width="2" height="2"/>
|
||||
<rect x="42" y="38" width="2" height="2"/>
|
||||
<path d="M2,2h3V0H1C0.448,0,0,0.448,0,1v4h2V2z"/>
|
||||
<path d="M63,0h-4v2h3v3h2V1C64,0.448,63.552,0,63,0z"/>
|
||||
<path d="M2,59H0v4c0,0.552,0.448,1,1,1h4v-2H2V59z"/>
|
||||
<path d="M62,62h-3v2h4c0.552,0,1-0.448,1-1v-4h-2V62z"/>
|
||||
<path d="M4,5v12c0,0.552,0.448,1,1,1h12c0.552,0,1-0.448,1-1V5c0-0.552-0.448-1-1-1H5C4.448,4,4,4.448,4,5z M6,6h10v10H6V6z"/>
|
||||
<path d="M13,8H9C8.448,8,8,8.448,8,9v4c0,0.552,0.448,1,1,1h4c0.552,0,1-0.448,1-1V9C14,8.448,13.552,8,13,8z M12,12h-2v-2h2V12z"
|
||||
/>
|
||||
<path d="M47,18h12c0.552,0,1-0.448,1-1V5c0-0.552-0.448-1-1-1H47c-0.552,0-1,0.448-1,1v12C46,17.552,46.448,18,47,18z M48,6h10v10
|
||||
H48V6z"/>
|
||||
<path d="M55,8h-4c-0.552,0-1,0.448-1,1v4c0,0.552,0.448,1,1,1h4c0.552,0,1-0.448,1-1V9C56,8.448,55.552,8,55,8z M54,12h-2v-2h2V12z
|
||||
"/>
|
||||
<path d="M17,46H5c-0.552,0-1,0.448-1,1v12c0,0.552,0.448,1,1,1h12c0.552,0,1-0.448,1-1V47C18,46.448,17.552,46,17,46z M16,58H6V48
|
||||
h10V58z"/>
|
||||
<path d="M9,56h4c0.552,0,1-0.448,1-1v-4c0-0.552-0.448-1-1-1H9c-0.552,0-1,0.448-1,1v4C8,55.552,8.448,56,9,56z M10,52h2v2h-2V52z"
|
||||
/>
|
||||
<path d="M44,19h-7V7h-2v13c0,0.552,0.448,1,1,1h8V19z"/>
|
||||
<rect x="22" y="12" width="7" height="2"/>
|
||||
<rect x="26" y="8" width="7" height="2"/>
|
||||
<rect x="4" y="19" width="2" height="9"/>
|
||||
<path d="M18,25H8v2h9v4h2v-5C19,25.448,18.552,25,18,25z"/>
|
||||
<rect x="9" y="20" width="2" height="2"/>
|
||||
<rect x="21" y="18" width="2" height="8"/>
|
||||
<rect x="21" y="28" width="9" height="2"/>
|
||||
<path d="M61,29h-2v10h-3v2h4c0.552,0,1-0.448,1-1V29z"/>
|
||||
<rect x="26" y="18" width="2" height="2"/>
|
||||
<rect x="4" y="33" width="2" height="8"/>
|
||||
<rect x="4" y="42" width="9" height="2"/>
|
||||
<path d="M50,28h2v-4c0-0.552-0.448-1-1-1h-5v2h4V28z"/>
|
||||
<rect x="9" y="33" width="2" height="2"/>
|
||||
<rect x="20" y="32" width="2" height="8"/>
|
||||
<rect x="20" y="42" width="9" height="2"/>
|
||||
<rect x="8" y="38" width="9" height="2"/>
|
||||
<rect x="21" y="52" width="2" height="4"/>
|
||||
<rect x="20" y="48" width="9" height="2"/>
|
||||
<path d="M36,44v-5c0-0.552-0.448-1-1-1H25v2h9v4H36z"/>
|
||||
<rect x="26" y="32" width="2" height="2"/>
|
||||
<rect x="15" y="34" width="2" height="2"/>
|
||||
<rect x="59" y="53" width="2" height="7"/>
|
||||
<rect x="54" y="58" width="3" height="2"/>
|
||||
<rect x="54" y="52" width="2" height="4"/>
|
||||
<path d="M61,44c0-0.552-0.448-1-1-1H49v2h10v6h2V44z"/>
|
||||
<path d="M48,56v-5c0-0.552-0.448-1-1-1H36v2h10v4H48z"/>
|
||||
<rect x="50" y="47" width="7" height="2"/>
|
||||
<rect x="20" y="58" width="7" height="2"/>
|
||||
<rect x="30" y="51" width="2" height="9"/>
|
||||
<rect x="32" y="46" width="4" height="2"/>
|
||||
<path d="M47,36h5v-2h-4v-6h-2v7C46,35.552,46.448,36,47,36z"/>
|
||||
<rect x="50" y="30" width="5" height="2"/>
|
||||
<rect x="54" y="20" width="3" height="2"/>
|
||||
<rect x="59" y="20" width="2" height="5"/>
|
||||
<rect x="54" y="25" width="2" height="2"/>
|
||||
<path d="M39,17h4c0.552,0,1-0.448,1-1V3h-2v12h-3V17z"/>
|
||||
<path d="M24,5h15V3H23c-0.552,0-1,0.448-1,1v5h2V5z"/>
|
||||
<path d="M25,24h7c0.552,0,1-0.448,1-1v-8h-2v7h-6V24z"/>
|
||||
<rect x="34" y="23" width="2" height="4"/>
|
||||
<rect x="36" y="54" width="7" height="2"/>
|
||||
<rect x="36" y="58" width="9" height="2"/>
|
||||
<path d="M50,58h-2v2h3c0.552,0,1-0.448,1-1v-8h-2V58z"/>
|
||||
<rect x="16" y="42" width="2" height="2"/>
|
||||
<rect x="39" y="42" width="4" height="2"/>
|
||||
<rect x="46" y="38" width="2" height="3"/>
|
||||
<rect x="45" y="43" width="2" height="2"/>
|
||||
<rect x="39" y="46" width="3" height="2"/>
|
||||
<rect x="50" y="38" width="2" height="2"/>
|
||||
<rect x="54" y="34" width="3" height="2"/>
|
||||
<rect x="35" y="34" width="5" height="2"/>
|
||||
<rect x="34" y="29" width="2" height="3"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 634 KiB |
Binary file not shown.
After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 3.4 KiB |
@ -0,0 +1,78 @@
|
||||
import 'package:mohem_flutter_app/api/api_client.dart';
|
||||
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
||||
import 'package:mohem_flutter_app/classes/consts.dart';
|
||||
import 'package:mohem_flutter_app/models/generic_response_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/get_item_type_notifications_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/get_vacation_rules_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/respond_attributes_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/wf_look_up_list_model.dart';
|
||||
|
||||
class VacationRuleApiClient {
|
||||
static final VacationRuleApiClient _instance = VacationRuleApiClient._internal();
|
||||
|
||||
VacationRuleApiClient._internal();
|
||||
|
||||
factory VacationRuleApiClient() => _instance;
|
||||
|
||||
Future<List<GetVacationRulesList>> getVacationRules() async {
|
||||
String url = "${ApiConsts.erpRest}GET_VACATION_RULES";
|
||||
Map<String, dynamic> postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1};
|
||||
postParams.addAll(AppState().postParamsJson);
|
||||
return await ApiClient().postJsonForObject((json) {
|
||||
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
|
||||
return responseData.getVacationRulesList ?? [];
|
||||
}, url, postParams);
|
||||
}
|
||||
|
||||
Future<List<VrItemTypesList>> getVrItemTypes() async {
|
||||
String url = "${ApiConsts.erpRest}GET_VR_ITEM_TYPES";
|
||||
Map<String, dynamic> postParams = {};
|
||||
postParams.addAll(AppState().postParamsJson);
|
||||
return await ApiClient().postJsonForObject((json) {
|
||||
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
|
||||
return responseData.vrItemTypesList ?? [];
|
||||
}, url, postParams);
|
||||
}
|
||||
|
||||
Future<List<GetItemTypeNotificationsList>> getItemTypeNotifications(String pItemType) async {
|
||||
String url = "${ApiConsts.erpRest}GET_ITEM_TYPE_NOTIFICATIONS";
|
||||
Map<String, dynamic> postParams = {"P_ITEM_TYPE": pItemType};
|
||||
postParams.addAll(AppState().postParamsJson);
|
||||
return await ApiClient().postJsonForObject((json) {
|
||||
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
|
||||
return responseData.getItemTypeNotificationsList ?? [];
|
||||
}, url, postParams);
|
||||
}
|
||||
|
||||
Future<List<GetNotificationReassignModeList>> getNotificationReassignMode() async {
|
||||
String url = "${ApiConsts.erpRest}GET_NOTIFICATION_REASSIGN_MODE";
|
||||
Map<String, dynamic> postParams = {};
|
||||
postParams.addAll(AppState().postParamsJson);
|
||||
return await ApiClient().postJsonForObject((json) {
|
||||
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
|
||||
return responseData.getNotificationReassignModeList ?? [];
|
||||
}, url, postParams);
|
||||
}
|
||||
|
||||
Future<List<RespondAttributesList>> getRespondAttributes(String pItemType, String pNotificationName) async {
|
||||
String url = "${ApiConsts.erpRest}GET_RESPOND_ATTRIBUTES";
|
||||
Map<String, dynamic> postParams = {"P_ITEM_TYPE": pItemType, "P_NOTIFICATION_NAME": pNotificationName};
|
||||
postParams.addAll(AppState().postParamsJson);
|
||||
return await ApiClient().postJsonForObject((json) {
|
||||
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
|
||||
return responseData.respondAttributesList ?? [];
|
||||
}, url, postParams);
|
||||
}
|
||||
|
||||
Future<List<WFLookUpList>> getWfLookup(String pLookupType) async {
|
||||
String url = "${ApiConsts.erpRest}GET_WF_LOOKUP";
|
||||
Map<String, dynamic> postParams = {"P_LOOKUP_TYPE": pLookupType};
|
||||
postParams.addAll(AppState().postParamsJson);
|
||||
return await ApiClient().postJsonForObject((json) {
|
||||
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
|
||||
return responseData.wFLookUpList ?? [];
|
||||
}, url, postParams);
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
class GetDeductionsList {
|
||||
int? aMOUNT;
|
||||
String? eLEMENTNAME;
|
||||
int? fROMROWNUM;
|
||||
int? nOOFROWS;
|
||||
int? rOWNUM;
|
||||
int? tOROWNUM;
|
||||
|
||||
GetDeductionsList(
|
||||
{this.aMOUNT,
|
||||
this.eLEMENTNAME,
|
||||
this.fROMROWNUM,
|
||||
this.nOOFROWS,
|
||||
this.rOWNUM,
|
||||
this.tOROWNUM});
|
||||
|
||||
GetDeductionsList.fromJson(Map<String, dynamic> json) {
|
||||
aMOUNT = json['AMOUNT'];
|
||||
eLEMENTNAME = json['ELEMENT_NAME'];
|
||||
fROMROWNUM = json['FROM_ROW_NUM'];
|
||||
nOOFROWS = json['NO_OF_ROWS'];
|
||||
rOWNUM = json['ROW_NUM'];
|
||||
tOROWNUM = json['TO_ROW_NUM'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['AMOUNT'] = this.aMOUNT;
|
||||
data['ELEMENT_NAME'] = this.eLEMENTNAME;
|
||||
data['FROM_ROW_NUM'] = this.fROMROWNUM;
|
||||
data['NO_OF_ROWS'] = this.nOOFROWS;
|
||||
data['ROW_NUM'] = this.rOWNUM;
|
||||
data['TO_ROW_NUM'] = this.tOROWNUM;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
|
||||
class GetEarningsList {
|
||||
int? aMOUNT;
|
||||
String? eLEMENTNAME;
|
||||
int? fROMROWNUM;
|
||||
int? nOOFROWS;
|
||||
int? rOWNUM;
|
||||
int? tOROWNUM;
|
||||
|
||||
GetEarningsList(
|
||||
{this.aMOUNT,
|
||||
this.eLEMENTNAME,
|
||||
this.fROMROWNUM,
|
||||
this.nOOFROWS,
|
||||
this.rOWNUM,
|
||||
this.tOROWNUM});
|
||||
|
||||
GetEarningsList.fromJson(Map<String, dynamic> json) {
|
||||
aMOUNT = json['AMOUNT'];
|
||||
eLEMENTNAME = json['ELEMENT_NAME'];
|
||||
fROMROWNUM = json['FROM_ROW_NUM'];
|
||||
nOOFROWS = json['NO_OF_ROWS'];
|
||||
rOWNUM = json['ROW_NUM'];
|
||||
tOROWNUM = json['TO_ROW_NUM'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['AMOUNT'] = this.aMOUNT;
|
||||
data['ELEMENT_NAME'] = this.eLEMENTNAME;
|
||||
data['FROM_ROW_NUM'] = this.fROMROWNUM;
|
||||
data['NO_OF_ROWS'] = this.nOOFROWS;
|
||||
data['ROW_NUM'] = this.rOWNUM;
|
||||
data['TO_ROW_NUM'] = this.tOROWNUM;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
|
||||
class GetPaymentInformationList {
|
||||
String? aCCOUNTNUMBER;
|
||||
String? aMOUNT;
|
||||
String? bANKNAME;
|
||||
String? bRANCHNAME;
|
||||
String? pAYMENTMETHODNAME;
|
||||
|
||||
GetPaymentInformationList(
|
||||
{this.aCCOUNTNUMBER,
|
||||
this.aMOUNT,
|
||||
this.bANKNAME,
|
||||
this.bRANCHNAME,
|
||||
this.pAYMENTMETHODNAME});
|
||||
|
||||
GetPaymentInformationList.fromJson(Map<String, dynamic> json) {
|
||||
aCCOUNTNUMBER = json['ACCOUNT_NUMBER'];
|
||||
aMOUNT = json['AMOUNT'];
|
||||
bANKNAME = json['BANK_NAME'];
|
||||
bRANCHNAME = json['BRANCH_NAME'];
|
||||
pAYMENTMETHODNAME = json['PAYMENT_METHOD_NAME'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ACCOUNT_NUMBER'] = this.aCCOUNTNUMBER;
|
||||
data['AMOUNT'] = this.aMOUNT;
|
||||
data['BANK_NAME'] = this.bANKNAME;
|
||||
data['BRANCH_NAME'] = this.bRANCHNAME;
|
||||
data['PAYMENT_METHOD_NAME'] = this.pAYMENTMETHODNAME;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
|
||||
|
||||
class GetPayslipList {
|
||||
int? aCTIONCONTEXTID;
|
||||
String? pAYMENTDATE;
|
||||
String? pAYSLIPCHOICE;
|
||||
String? pERIODENDDATE;
|
||||
String? pERIODNAME;
|
||||
String? pERIODSTARTDATE;
|
||||
|
||||
GetPayslipList(
|
||||
{this.aCTIONCONTEXTID,
|
||||
this.pAYMENTDATE,
|
||||
this.pAYSLIPCHOICE,
|
||||
this.pERIODENDDATE,
|
||||
this.pERIODNAME,
|
||||
this.pERIODSTARTDATE});
|
||||
|
||||
GetPayslipList.fromJson(Map<String, dynamic> json) {
|
||||
aCTIONCONTEXTID = json['ACTION_CONTEXT_ID'];
|
||||
pAYMENTDATE = json['PAYMENT_DATE'];
|
||||
pAYSLIPCHOICE = json['PAYSLIP_CHOICE'];
|
||||
pERIODENDDATE = json['PERIOD_END_DATE'];
|
||||
pERIODNAME = json['PERIOD_NAME'];
|
||||
pERIODSTARTDATE = json['PERIOD_START_DATE'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ACTION_CONTEXT_ID'] = this.aCTIONCONTEXTID;
|
||||
data['PAYMENT_DATE'] = this.pAYMENTDATE;
|
||||
data['PAYSLIP_CHOICE'] = this.pAYSLIPCHOICE;
|
||||
data['PERIOD_END_DATE'] = this.pERIODENDDATE;
|
||||
data['PERIOD_NAME'] = this.pERIODNAME;
|
||||
data['PERIOD_START_DATE'] = this.pERIODSTARTDATE;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
|
||||
|
||||
class GetSummaryOfPaymentList {
|
||||
int? tOTALDEDUCTIONSAMOUNT;
|
||||
int? tOTALDEDUCTIONSPERCENTAGE;
|
||||
int? tOTALEARNINGSAMOUNT;
|
||||
int? tOTALEARNINGSPERCENTAGE;
|
||||
int? tOTALPAYAMOUNT;
|
||||
int? tOTALPAYPERCENTAGE;
|
||||
|
||||
GetSummaryOfPaymentList(
|
||||
{this.tOTALDEDUCTIONSAMOUNT,
|
||||
this.tOTALDEDUCTIONSPERCENTAGE,
|
||||
this.tOTALEARNINGSAMOUNT,
|
||||
this.tOTALEARNINGSPERCENTAGE,
|
||||
this.tOTALPAYAMOUNT,
|
||||
this.tOTALPAYPERCENTAGE});
|
||||
|
||||
GetSummaryOfPaymentList.fromJson(Map<String, dynamic> json) {
|
||||
tOTALDEDUCTIONSAMOUNT = json['TOTAL_DEDUCTIONS_AMOUNT'];
|
||||
tOTALDEDUCTIONSPERCENTAGE = json['TOTAL_DEDUCTIONS_PERCENTAGE'];
|
||||
tOTALEARNINGSAMOUNT = json['TOTAL_EARNINGS_AMOUNT'];
|
||||
tOTALEARNINGSPERCENTAGE = json['TOTAL_EARNINGS_PERCENTAGE'];
|
||||
tOTALPAYAMOUNT = json['TOTAL_PAY_AMOUNT'];
|
||||
tOTALPAYPERCENTAGE = json['TOTAL_PAY_PERCENTAGE'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['TOTAL_DEDUCTIONS_AMOUNT'] = this.tOTALDEDUCTIONSAMOUNT;
|
||||
data['TOTAL_DEDUCTIONS_PERCENTAGE'] = this.tOTALDEDUCTIONSPERCENTAGE;
|
||||
data['TOTAL_EARNINGS_AMOUNT'] = this.tOTALEARNINGSAMOUNT;
|
||||
data['TOTAL_EARNINGS_PERCENTAGE'] = this.tOTALEARNINGSPERCENTAGE;
|
||||
data['TOTAL_PAY_AMOUNT'] = this.tOTALPAYAMOUNT;
|
||||
data['TOTAL_PAY_PERCENTAGE'] = this.tOTALPAYPERCENTAGE;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
class GetItemTypeNotificationsList {
|
||||
String? fYIFLAG;
|
||||
String? nOTIFICATIONDISPLAYNAME;
|
||||
String? nOTIFICATIONNAME;
|
||||
String? nOTIFICATIONSUBJECT;
|
||||
|
||||
GetItemTypeNotificationsList(
|
||||
{this.fYIFLAG,
|
||||
this.nOTIFICATIONDISPLAYNAME,
|
||||
this.nOTIFICATIONNAME,
|
||||
this.nOTIFICATIONSUBJECT});
|
||||
|
||||
GetItemTypeNotificationsList.fromJson(Map<String, dynamic> json) {
|
||||
fYIFLAG = json['FYI_FLAG'];
|
||||
nOTIFICATIONDISPLAYNAME = json['NOTIFICATION_DISPLAY_NAME'];
|
||||
nOTIFICATIONNAME = json['NOTIFICATION_NAME'];
|
||||
nOTIFICATIONSUBJECT = json['NOTIFICATION_SUBJECT'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['FYI_FLAG'] = this.fYIFLAG;
|
||||
data['NOTIFICATION_DISPLAY_NAME'] = this.nOTIFICATIONDISPLAYNAME;
|
||||
data['NOTIFICATION_NAME'] = this.nOTIFICATIONNAME;
|
||||
data['NOTIFICATION_SUBJECT'] = this.nOTIFICATIONSUBJECT;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
class GetNotificationReassignModeList {
|
||||
String? rADIOBUTTONACTION;
|
||||
String? rADIOBUTTONLABEL;
|
||||
int? rADIOBUTTONSEQ;
|
||||
|
||||
GetNotificationReassignModeList(
|
||||
{this.rADIOBUTTONACTION, this.rADIOBUTTONLABEL, this.rADIOBUTTONSEQ});
|
||||
|
||||
GetNotificationReassignModeList.fromJson(Map<String, dynamic> json) {
|
||||
rADIOBUTTONACTION = json['RADIO_BUTTON_ACTION'];
|
||||
rADIOBUTTONLABEL = json['RADIO_BUTTON_LABEL'];
|
||||
rADIOBUTTONSEQ = json['RADIO_BUTTON_SEQ'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['RADIO_BUTTON_ACTION'] = this.rADIOBUTTONACTION;
|
||||
data['RADIO_BUTTON_LABEL'] = this.rADIOBUTTONLABEL;
|
||||
data['RADIO_BUTTON_SEQ'] = this.rADIOBUTTONSEQ;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
class GetVacationRulesList {
|
||||
String? aCTION;
|
||||
String? aCTIONDISPLAY;
|
||||
String? bEGINDATE;
|
||||
String? eNDDATE;
|
||||
int? fROMROWNUM;
|
||||
String? fYIFLAG;
|
||||
String? iTEMTYPE;
|
||||
String? iTEMTYPEDISPLAYNAME;
|
||||
String? mESSAGE;
|
||||
String? nOTIFICATIONDISPLAYNAME;
|
||||
String? nOTIFICATIONNAME;
|
||||
String? nOTIFICATIONSUBJECT;
|
||||
int? nOOFROWS;
|
||||
String? rEPLACEMENTUSERNAME;
|
||||
int? rOWNUM;
|
||||
int? rULEID;
|
||||
String? rULENAME;
|
||||
String? rULESTATUS;
|
||||
String? rULETIPMESSAGE;
|
||||
int? tOROWNUM;
|
||||
|
||||
GetVacationRulesList(
|
||||
{this.aCTION,
|
||||
this.aCTIONDISPLAY,
|
||||
this.bEGINDATE,
|
||||
this.eNDDATE,
|
||||
this.fROMROWNUM,
|
||||
this.fYIFLAG,
|
||||
this.iTEMTYPE,
|
||||
this.iTEMTYPEDISPLAYNAME,
|
||||
this.mESSAGE,
|
||||
this.nOTIFICATIONDISPLAYNAME,
|
||||
this.nOTIFICATIONNAME,
|
||||
this.nOTIFICATIONSUBJECT,
|
||||
this.nOOFROWS,
|
||||
this.rEPLACEMENTUSERNAME,
|
||||
this.rOWNUM,
|
||||
this.rULEID,
|
||||
this.rULENAME,
|
||||
this.rULESTATUS,
|
||||
this.rULETIPMESSAGE,
|
||||
this.tOROWNUM});
|
||||
|
||||
GetVacationRulesList.fromJson(Map<String, dynamic> json) {
|
||||
aCTION = json['ACTION'];
|
||||
aCTIONDISPLAY = json['ACTION_DISPLAY'];
|
||||
bEGINDATE = json['BEGIN_DATE'];
|
||||
eNDDATE = json['END_DATE'];
|
||||
fROMROWNUM = json['FROM_ROW_NUM'];
|
||||
fYIFLAG = json['FYI_FLAG'];
|
||||
iTEMTYPE = json['ITEM_TYPE'];
|
||||
iTEMTYPEDISPLAYNAME = json['ITEM_TYPE_DISPLAY_NAME'];
|
||||
mESSAGE = json['MESSAGE'];
|
||||
nOTIFICATIONDISPLAYNAME = json['NOTIFICATION_DISPLAY_NAME'];
|
||||
nOTIFICATIONNAME = json['NOTIFICATION_NAME'];
|
||||
nOTIFICATIONSUBJECT = json['NOTIFICATION_SUBJECT'];
|
||||
nOOFROWS = json['NO_OF_ROWS'];
|
||||
rEPLACEMENTUSERNAME = json['REPLACEMENT_USER_NAME'];
|
||||
rOWNUM = json['ROW_NUM'];
|
||||
rULEID = json['RULE_ID'];
|
||||
rULENAME = json['RULE_NAME'];
|
||||
rULESTATUS = json['RULE_STATUS'];
|
||||
rULETIPMESSAGE = json['RULE_TIP_MESSAGE'];
|
||||
tOROWNUM = json['TO_ROW_NUM'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ACTION'] = this.aCTION;
|
||||
data['ACTION_DISPLAY'] = this.aCTIONDISPLAY;
|
||||
data['BEGIN_DATE'] = this.bEGINDATE;
|
||||
data['END_DATE'] = this.eNDDATE;
|
||||
data['FROM_ROW_NUM'] = this.fROMROWNUM;
|
||||
data['FYI_FLAG'] = this.fYIFLAG;
|
||||
data['ITEM_TYPE'] = this.iTEMTYPE;
|
||||
data['ITEM_TYPE_DISPLAY_NAME'] = this.iTEMTYPEDISPLAYNAME;
|
||||
data['MESSAGE'] = this.mESSAGE;
|
||||
data['NOTIFICATION_DISPLAY_NAME'] = this.nOTIFICATIONDISPLAYNAME;
|
||||
data['NOTIFICATION_NAME'] = this.nOTIFICATIONNAME;
|
||||
data['NOTIFICATION_SUBJECT'] = this.nOTIFICATIONSUBJECT;
|
||||
data['NO_OF_ROWS'] = this.nOOFROWS;
|
||||
data['REPLACEMENT_USER_NAME'] = this.rEPLACEMENTUSERNAME;
|
||||
data['ROW_NUM'] = this.rOWNUM;
|
||||
data['RULE_ID'] = this.rULEID;
|
||||
data['RULE_NAME'] = this.rULENAME;
|
||||
data['RULE_STATUS'] = this.rULESTATUS;
|
||||
data['RULE_TIP_MESSAGE'] = this.rULETIPMESSAGE;
|
||||
data['TO_ROW_NUM'] = this.tOROWNUM;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
class RespondAttributesList {
|
||||
String? aTTRIBUTEDISPLAYNAME;
|
||||
String? aTTRIBUTEFORMAT;
|
||||
String? aTTRIBUTENAME;
|
||||
String? aTTRIBUTETYPE;
|
||||
|
||||
RespondAttributesList(
|
||||
{this.aTTRIBUTEDISPLAYNAME,
|
||||
this.aTTRIBUTEFORMAT,
|
||||
this.aTTRIBUTENAME,
|
||||
this.aTTRIBUTETYPE});
|
||||
|
||||
RespondAttributesList.fromJson(Map<String, dynamic> json) {
|
||||
aTTRIBUTEDISPLAYNAME = json['ATTRIBUTE_DISPLAY_NAME'];
|
||||
aTTRIBUTEFORMAT = json['ATTRIBUTE_FORMAT'];
|
||||
aTTRIBUTENAME = json['ATTRIBUTE_NAME'];
|
||||
aTTRIBUTETYPE = json['ATTRIBUTE_TYPE'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ATTRIBUTE_DISPLAY_NAME'] = this.aTTRIBUTEDISPLAYNAME;
|
||||
data['ATTRIBUTE_FORMAT'] = this.aTTRIBUTEFORMAT;
|
||||
data['ATTRIBUTE_NAME'] = this.aTTRIBUTENAME;
|
||||
data['ATTRIBUTE_TYPE'] = this.aTTRIBUTETYPE;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
class VrItemTypesList {
|
||||
String? iTEMTYPE;
|
||||
String? iTEMTYPEDISPLAYNAME;
|
||||
|
||||
VrItemTypesList({this.iTEMTYPE, this.iTEMTYPEDISPLAYNAME});
|
||||
|
||||
VrItemTypesList.fromJson(Map<String, dynamic> json) {
|
||||
iTEMTYPE = json['ITEM_TYPE'];
|
||||
iTEMTYPEDISPLAYNAME = json['ITEM_TYPE_DISPLAY_NAME'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ITEM_TYPE'] = this.iTEMTYPE;
|
||||
data['ITEM_TYPE_DISPLAY_NAME'] = this.iTEMTYPEDISPLAYNAME;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
class WFLookUpList {
|
||||
String? lOOKUPCODE;
|
||||
String? lOOKUPDESCRIPTION;
|
||||
String? lOOKUPMEANING;
|
||||
|
||||
WFLookUpList({this.lOOKUPCODE, this.lOOKUPDESCRIPTION, this.lOOKUPMEANING});
|
||||
|
||||
WFLookUpList.fromJson(Map<String, dynamic> json) {
|
||||
lOOKUPCODE = json['LOOKUP_CODE'];
|
||||
lOOKUPDESCRIPTION = json['LOOKUP_DESCRIPTION'];
|
||||
lOOKUPMEANING = json['LOOKUP_MEANING'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['LOOKUP_CODE'] = this.lOOKUPCODE;
|
||||
data['LOOKUP_DESCRIPTION'] = this.lOOKUPDESCRIPTION;
|
||||
data['LOOKUP_MEANING'] = this.lOOKUPMEANING;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mohem_flutter_app/api/vacation_rule_api_client.dart';
|
||||
import 'package:mohem_flutter_app/classes/utils.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/vacation_rule/get_item_type_notifications_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/respond_attributes_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_model.dart';
|
||||
import 'package:mohem_flutter_app/models/vacation_rule/wf_look_up_list_model.dart';
|
||||
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
|
||||
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
||||
|
||||
class AddVacationRuleScreen extends StatefulWidget {
|
||||
AddVacationRuleScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_AddVacationRuleScreenState createState() {
|
||||
return _AddVacationRuleScreenState();
|
||||
}
|
||||
}
|
||||
|
||||
class _AddVacationRuleScreenState extends State<AddVacationRuleScreen> {
|
||||
List<VrItemTypesList>? vrItemTypesList;
|
||||
List<GetItemTypeNotificationsList>? itemTypeNotificationsList;
|
||||
|
||||
List<GetNotificationReassignModeList>? notificationReassignModeList;
|
||||
List<RespondAttributesList>? respondAttributesList;
|
||||
List<WFLookUpList>? wfLookupList;
|
||||
|
||||
int currentStage = 0;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
getVacationRulesList();
|
||||
}
|
||||
|
||||
void getVacationRulesList() async {
|
||||
try {
|
||||
Utils.showLoading(context);
|
||||
vrItemTypesList = await VacationRuleApiClient().getVrItemTypes();
|
||||
Utils.hideLoading(context);
|
||||
currentStage = 1;
|
||||
setState(() {});
|
||||
} catch (ex) {
|
||||
Utils.hideLoading(context);
|
||||
Utils.handleException(ex, context, null);
|
||||
}
|
||||
}
|
||||
|
||||
void getItemTypeNotificationsList() async {
|
||||
try {
|
||||
Utils.showLoading(context);
|
||||
//itemTypeNotificationsList = await VacationRuleApiClient().getItemTypeNotifications();
|
||||
Utils.hideLoading(context);
|
||||
currentStage = 2;
|
||||
setState(() {});
|
||||
} catch (ex) {
|
||||
Utils.hideLoading(context);
|
||||
Utils.handleException(ex, context, null);
|
||||
}
|
||||
}
|
||||
|
||||
void callCombineApis() async {
|
||||
try {
|
||||
Utils.showLoading(context);
|
||||
List results = await Future.wait([
|
||||
// VacationRuleApiClient().getNotificationReassignMode(),
|
||||
// VacationRuleApiClient().getRespondAttributes("", ""),
|
||||
// VacationRuleApiClient().getWfLookup(P_LOOKUP_TYPE),
|
||||
]);
|
||||
notificationReassignModeList = results[0];
|
||||
respondAttributesList = results[1];
|
||||
wfLookupList = results[2];
|
||||
Utils.hideLoading(context);
|
||||
currentStage = 3;
|
||||
setState(() {});
|
||||
} catch (ex) {
|
||||
Utils.hideLoading(context);
|
||||
Utils.handleException(ex, context, null);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.white,
|
||||
appBar: AppBarWidget(
|
||||
context,
|
||||
title: LocaleKeys.vacationRule.tr(),
|
||||
),
|
||||
body: vrItemTypesList == null
|
||||
? const SizedBox()
|
||||
: (vrItemTypesList!.isEmpty
|
||||
? Utils.getNoDataWidget(context)
|
||||
: Column(
|
||||
children: [
|
||||
ListView(
|
||||
padding: const EdgeInsets.all(21),
|
||||
physics: const BouncingScrollPhysics(),
|
||||
children: [],
|
||||
).expanded,
|
||||
DefaultButton(
|
||||
currentStage == 3 ? LocaleKeys.apply.tr() : LocaleKeys.next.tr(),
|
||||
() {
|
||||
if (currentStage == 1) {
|
||||
getItemTypeNotificationsList();
|
||||
} else if (currentStage == 2) {
|
||||
callCombineApis();
|
||||
}
|
||||
},
|
||||
).insideContainer,
|
||||
],
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,146 @@
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mohem_flutter_app/api/vacation_rule_api_client.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/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/vacation_rule/get_vacation_rules_list_model.dart';
|
||||
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
|
||||
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
|
||||
|
||||
class VacationRuleScreen extends StatefulWidget {
|
||||
VacationRuleScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_VacationRuleScreenState createState() {
|
||||
return _VacationRuleScreenState();
|
||||
}
|
||||
}
|
||||
|
||||
class _VacationRuleScreenState extends State<VacationRuleScreen> {
|
||||
List<GetVacationRulesList>? vacationRuleList;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
getVacationRulesList();
|
||||
}
|
||||
|
||||
void getVacationRulesList() async {
|
||||
try {
|
||||
Utils.showLoading(context);
|
||||
vacationRuleList = await VacationRuleApiClient().getVacationRules();
|
||||
Utils.hideLoading(context);
|
||||
setState(() {});
|
||||
} catch (ex) {
|
||||
Utils.hideLoading(context);
|
||||
Utils.handleException(ex, context, null);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.white,
|
||||
appBar: AppBarWidget(
|
||||
context,
|
||||
title: LocaleKeys.vacationRule.tr(),
|
||||
),
|
||||
body: vacationRuleList == null
|
||||
? const SizedBox()
|
||||
: (vacationRuleList!.isEmpty
|
||||
? Utils.getNoDataWidget(context)
|
||||
: ListView.separated(
|
||||
physics: const BouncingScrollPhysics(),
|
||||
padding: const EdgeInsets.all(21),
|
||||
itemBuilder: (cxt, int parentIndex) => Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: const Color(0xff000000).withOpacity(.05),
|
||||
blurRadius: 26,
|
||||
offset: const Offset(0, -3),
|
||||
),
|
||||
],
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Stack(
|
||||
clipBehavior: Clip.antiAlias,
|
||||
children: [
|
||||
Positioned(
|
||||
left: -20,
|
||||
top: -10,
|
||||
child: Transform.rotate(
|
||||
angle: 15,
|
||||
child: Container(
|
||||
width: 50,
|
||||
height: 30,
|
||||
color: getStatusColor(vacationRuleList![parentIndex].rULESTATUS!),
|
||||
),
|
||||
),
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
("${vacationRuleList![parentIndex].rULENAME!} | ${vacationRuleList![parentIndex].iTEMTYPEDISPLAYNAME!}").toText16(),
|
||||
4.height,
|
||||
ItemDetailView(LocaleKeys.startDateT.tr(), getParsedTime(vacationRuleList![parentIndex].bEGINDATE!)),
|
||||
ItemDetailView(LocaleKeys.endDateT.tr(), getParsedTime(vacationRuleList![parentIndex].eNDDATE!)),
|
||||
4.height,
|
||||
vacationRuleList![parentIndex].rULESTATUS!.toText12(color: getStatusColor(vacationRuleList![parentIndex].rULESTATUS!)),
|
||||
],
|
||||
).paddingOnly(top: 16, left: 16, right: 16, bottom: 16),
|
||||
],
|
||||
),
|
||||
),
|
||||
separatorBuilder: (cxt, index) => 12.height,
|
||||
itemCount: vacationRuleList!.length)),
|
||||
floatingActionButton: Container(
|
||||
height: 54,
|
||||
width: 54,
|
||||
decoration: const BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
gradient: LinearGradient(transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
|
||||
MyColors.gradiantEndColor,
|
||||
MyColors.gradiantStartColor,
|
||||
]),
|
||||
),
|
||||
child: const Icon(Icons.add, color: Colors.white, size: 30),
|
||||
).onPress(() {
|
||||
Navigator.pushNamed(context, AppRoutes.addVacationRule);
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
Color getStatusColor(String code) {
|
||||
if (code == "SUBMIT") {
|
||||
return const Color(0xff2E303A);
|
||||
} else if (code == "Inactive") {
|
||||
return const Color(0xffD02127);
|
||||
} else if (code == "active") {
|
||||
return const Color(0xff1FA269);
|
||||
} else if (code == "REQUEST_INFO") {
|
||||
return const Color(0xff2E303A);
|
||||
} else {
|
||||
return const Color(0xff2E303A);
|
||||
}
|
||||
}
|
||||
|
||||
String getParsedTime(String time) {
|
||||
DateTime date = DateFormat("mm/dd/yyyy").parse(time);
|
||||
return DateFormat("d MMM yyyy").format(date);
|
||||
}
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||
|
||||
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
||||
import 'package:mohem_flutter_app/classes/utils.dart';
|
||||
|
||||
class BusinessCardDialog extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return RotatedBox(
|
||||
quarterTurns: 1,
|
||||
child: Container(
|
||||
width: MediaQuery.of(context).size.height / 2,
|
||||
color: Colors.white,
|
||||
margin: EdgeInsets.all(20),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Image.asset(
|
||||
"assets/images/logos/bn_cloud_soloution.jpg",
|
||||
width: 80,
|
||||
height: 80,
|
||||
),
|
||||
12.height,
|
||||
(AppState().memberInformationList!.eMPLOYEENAME ?? "").toText20(),
|
||||
],
|
||||
),
|
||||
),
|
||||
Image.memory(
|
||||
Utils.getPostBytes(AppState().memberInformationList!.businessCardQR ?? ""),
|
||||
width: 100,
|
||||
height: 100,
|
||||
),
|
||||
],
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
1.height,
|
||||
(AppState().memberInformationList!.pOSITIONNAME ?? "").toText12(isBold: false),
|
||||
12.height,
|
||||
(AppState().memberInformationList!.eMPLOYEENUMBER ?? "").toText12(isBold: false),
|
||||
1.height,
|
||||
(AppState().memberInformationList!.eMPLOYEEEMAILADDRESS ?? "").toText12(isBold: false),
|
||||
1.height,
|
||||
(AppState().memberInformationList!.jOBNAME ?? "").toText12(isBold: false),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
||||
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
||||
import 'package:qr_flutter/qr_flutter.dart';
|
||||
|
||||
import 'package:mohem_flutter_app/classes/utils.dart';
|
||||
import 'package:mohem_flutter_app/main.dart';
|
||||
|
||||
class EmployeeDigitialIdDialog extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Image.asset("assets/images/bn_logo.png"),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(20.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 80,
|
||||
height: 80,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: const BorderRadius.all(Radius.circular(12)),
|
||||
boxShadow: [BoxShadow(color: Colors.white60, blurRadius: 10, spreadRadius: 10)],
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Image.memory(
|
||||
Utils.getPostBytes(
|
||||
AppState().memberInformationList!.eMPLOYEEIMAGE ?? "",
|
||||
),
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
16.width,
|
||||
(AppState().memberInformationList!.eMPLOYEENUMBER ?? "").toText20(),
|
||||
],
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
12.height,
|
||||
(AppState().memberInformationList!.eMPLOYEENAME ?? "").toText16(),
|
||||
4.height,
|
||||
(AppState().memberInformationList!.pOSITIONNAME ?? "").toText12(isBold: false),
|
||||
],
|
||||
),
|
||||
),
|
||||
Image.memory(
|
||||
Utils.getPostBytes(AppState().memberInformationList!.employeeQR ?? ""),
|
||||
width: 160,
|
||||
height: 160,
|
||||
),
|
||||
DefaultButton("Cancel", () {
|
||||
Navigator.pop(context);
|
||||
})
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,19 +1,26 @@
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
||||
|
||||
class AppLogo extends StatelessWidget {
|
||||
AppLogo({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// TODO: implement build
|
||||
return Row(children: [
|
||||
SvgPicture.asset(
|
||||
"assets/mohemm_logo.svg",
|
||||
height: 100,
|
||||
width: 100,
|
||||
alignment: Alignment.centerRight,
|
||||
),
|
||||
],);
|
||||
return Row(
|
||||
children: [
|
||||
SvgPicture.asset(
|
||||
"assets/mohemm_logo.svg",
|
||||
height: 48,
|
||||
width: 48,
|
||||
alignment: Alignment.centerRight,
|
||||
),
|
||||
8.width,
|
||||
LocaleKeys.mohemm.tr().toText14()
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,16 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
void showMDialog(
|
||||
context, {
|
||||
Widget? child,
|
||||
}) async {
|
||||
return showDialog(
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
builder: (context) {
|
||||
return Dialog(
|
||||
child: child,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:qr_code_scanner/qr_code_scanner.dart';
|
||||
|
||||
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
||||
|
||||
class QrScannerDialog extends StatefulWidget {
|
||||
@override
|
||||
State<QrScannerDialog> createState() => _QrScannerDialogState();
|
||||
}
|
||||
|
||||
class _QrScannerDialogState extends State<QrScannerDialog> {
|
||||
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
|
||||
Barcode? result;
|
||||
QRViewController? controller;
|
||||
bool isPicked = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: QRView(
|
||||
key: qrKey,
|
||||
onQRViewCreated: _onQRViewCreated,
|
||||
),
|
||||
),
|
||||
// Expanded(
|
||||
// flex: 1,
|
||||
// child: Center(
|
||||
// child: (result != null)
|
||||
// ? Text(
|
||||
// 'Barcode Type: ${result!.format} Data: ${result!.code}')
|
||||
// : Text('Scan a code'),
|
||||
// ),
|
||||
// ),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
child: DefaultButton(
|
||||
"Cancel",
|
||||
() {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _onQRViewCreated(QRViewController controller) {
|
||||
this.controller = controller;
|
||||
|
||||
controller.scannedDataStream.listen((scanData) {
|
||||
setState(() {
|
||||
result = scanData;
|
||||
if (!isPicked) {
|
||||
isPicked = true;
|
||||
Navigator.pop(context, result!.code);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
controller?.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue