diff --git a/assets/images/services_icons/change_bank_details.svg b/assets/images/services_icons/change_bank_details.svg
new file mode 100644
index 0000000..ac53bed
--- /dev/null
+++ b/assets/images/services_icons/change_bank_details.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/images/services_icons/employee_certificates.svg b/assets/images/services_icons/employee_certificates.svg
new file mode 100644
index 0000000..6333b3c
--- /dev/null
+++ b/assets/images/services_icons/employee_certificates.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/images/services_icons/housing_allowance.svg b/assets/images/services_icons/housing_allowance.svg
new file mode 100644
index 0000000..bda38d3
--- /dev/null
+++ b/assets/images/services_icons/housing_allowance.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/images/services_icons/monthly_attendance.svg b/assets/images/services_icons/monthly_attendance.svg
new file mode 100644
index 0000000..b77ccc3
--- /dev/null
+++ b/assets/images/services_icons/monthly_attendance.svg
@@ -0,0 +1,15 @@
+
diff --git a/assets/images/services_icons/my_attendance.svg b/assets/images/services_icons/my_attendance.svg
new file mode 100644
index 0000000..ec35835
--- /dev/null
+++ b/assets/images/services_icons/my_attendance.svg
@@ -0,0 +1,17 @@
+
diff --git a/assets/images/services_icons/my_leaves.svg b/assets/images/services_icons/my_leaves.svg
new file mode 100644
index 0000000..3c16f47
--- /dev/null
+++ b/assets/images/services_icons/my_leaves.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/images/services_icons/other_requests.svg b/assets/images/services_icons/other_requests.svg
new file mode 100644
index 0000000..446a085
--- /dev/null
+++ b/assets/images/services_icons/other_requests.svg
@@ -0,0 +1,22 @@
+
diff --git a/assets/images/services_icons/payslips.svg b/assets/images/services_icons/payslips.svg
new file mode 100644
index 0000000..ca9fa88
--- /dev/null
+++ b/assets/images/services_icons/payslips.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/images/services_icons/profile_info.svg b/assets/images/services_icons/profile_info.svg
new file mode 100644
index 0000000..db08144
--- /dev/null
+++ b/assets/images/services_icons/profile_info.svg
@@ -0,0 +1,15 @@
+
diff --git a/assets/images/services_icons/ticket_bal.svg b/assets/images/services_icons/ticket_bal.svg
new file mode 100644
index 0000000..8fadde8
--- /dev/null
+++ b/assets/images/services_icons/ticket_bal.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/images/services_icons/vacation_rule.svg b/assets/images/services_icons/vacation_rule.svg
new file mode 100644
index 0000000..0a536f7
--- /dev/null
+++ b/assets/images/services_icons/vacation_rule.svg
@@ -0,0 +1,16 @@
+
diff --git a/assets/images/services_icons/work_from_home.svg b/assets/images/services_icons/work_from_home.svg
new file mode 100644
index 0000000..a807320
--- /dev/null
+++ b/assets/images/services_icons/work_from_home.svg
@@ -0,0 +1,11 @@
+
diff --git a/assets/images/worklist/answer_hr.svg b/assets/images/worklist/answer_hr.svg
new file mode 100644
index 0000000..ed7c211
--- /dev/null
+++ b/assets/images/worklist/answer_hr.svg
@@ -0,0 +1,14 @@
+
diff --git a/assets/images/worklist/approve_and_forward.svg b/assets/images/worklist/approve_and_forward.svg
new file mode 100644
index 0000000..ac96589
--- /dev/null
+++ b/assets/images/worklist/approve_and_forward.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/images/worklist/doable.svg b/assets/images/worklist/doable.svg
new file mode 100644
index 0000000..2eec837
--- /dev/null
+++ b/assets/images/worklist/doable.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/images/worklist/forward.svg b/assets/images/worklist/forward.svg
new file mode 100644
index 0000000..367ad5c
--- /dev/null
+++ b/assets/images/worklist/forward.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/worklist/not_doable.svg b/assets/images/worklist/not_doable.svg
new file mode 100644
index 0000000..7ed42e4
--- /dev/null
+++ b/assets/images/worklist/not_doable.svg
@@ -0,0 +1,17 @@
+
diff --git a/assets/images/worklist/report_generated.svg b/assets/images/worklist/report_generated.svg
new file mode 100644
index 0000000..83c293c
--- /dev/null
+++ b/assets/images/worklist/report_generated.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/worklist/return.svg b/assets/images/worklist/return.svg
new file mode 100644
index 0000000..5f67f12
--- /dev/null
+++ b/assets/images/worklist/return.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/images/worklist/transfer.svg b/assets/images/worklist/transfer.svg
new file mode 100644
index 0000000..8bebb56
--- /dev/null
+++ b/assets/images/worklist/transfer.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/images/worklist/update_action.svg b/assets/images/worklist/update_action.svg
new file mode 100644
index 0000000..7814f10
--- /dev/null
+++ b/assets/images/worklist/update_action.svg
@@ -0,0 +1,12 @@
+
diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart
new file mode 100644
index 0000000..0d1653d
--- /dev/null
+++ b/lib/api/chat/chat_api_client.dart
@@ -0,0 +1,103 @@
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:http/http.dart';
+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/chat/get_search_user_chat_model.dart';
+import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as user;
+import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav;
+
+class ChatApiClient {
+ static final ChatApiClient _instance = ChatApiClient._internal();
+
+ ChatApiClient._internal();
+
+ factory ChatApiClient() => _instance;
+
+ Future getUserLoginToken() async {
+ Response response = await ApiClient().postJsonForResponse(
+ "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin",
+ {
+ "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(),
+ "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG",
+ },
+ );
+ user.UserAutoLoginModel userLoginResponse = user.userAutoLoginModelFromJson(
+ response.body,
+ );
+ return userLoginResponse;
+ }
+
+ Future?> getChatMemberFromSearch(String sName, int cUserId) async {
+ Response response = await ApiClient().getJsonForResponse(
+ "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSearchMember}$sName/$cUserId",
+ token: AppState().chatDetails!.response!.token,
+ );
+ return searchUserJsonModel(response.body);
+ }
+
+ List searchUserJsonModel(String str) => List.from(
+ json.decode(str).map((x) => ChatUser.fromJson(x)),
+ );
+
+ Future getRecentChats() async {
+ Response response = await ApiClient().getJsonForResponse(
+ "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatRecentUrl}",
+ token: AppState().chatDetails!.response!.token,
+ );
+ return ChatUserModel.fromJson(
+ json.decode(response.body),
+ );
+ }
+
+ Future getFavUsers() async {
+ Response favRes = await ApiClient().getJsonForResponse(
+ "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatFavoriteUsers}${AppState().chatDetails!.response!.id}",
+ token: AppState().chatDetails!.response!.token,
+ );
+ return ChatUserModel.fromJson(
+ json.decode(favRes.body),
+ );
+ }
+
+ Future getSingleUserChatHistory({required int senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false, required int paginationVal}) async {
+ Response response = await ApiClient().getJsonForResponse(
+ "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal",
+ token: AppState().chatDetails!.response!.token,
+ );
+ return response;
+ }
+
+ Future favUser({required int userID, required int targetUserID}) async {
+ Response response = await ApiClient().postJsonForResponse(
+ "${ApiConsts.chatServerBaseApiUrl}FavUser/addFavUser",
+ {
+ "targetUserId": targetUserID,
+ "userId": userID,
+ },
+ token: AppState().chatDetails!.response!.token);
+ fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body);
+ return favoriteChatUser;
+ }
+
+ Future unFavUser({required int userID, required int targetUserID}) async {
+ Response response = await ApiClient().postJsonForResponse(
+ "${ApiConsts.chatServerBaseApiUrl}FavUser/deleteFavUser",
+ {"targetUserId": targetUserID, "userId": userID},
+ token: AppState().chatDetails!.response!.token,
+ );
+ fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body);
+ return favoriteChatUser;
+ }
+
+ Future uploadMedia(String userId, File file) async {
+ dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatMediaImageUploadUrl}'));
+ request.fields.addAll({'userId': userId, 'fileSource': '1'});
+ request.files.add(await MultipartFile.fromPath('files', file.path));
+ request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'});
+ StreamedResponse response = await request.send();
+ return response;
+ }
+}
diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart
index 9747e5c..69c2e82 100644
--- a/lib/api/dashboard_api_client.dart
+++ b/lib/api/dashboard_api_client.dart
@@ -186,4 +186,18 @@ class DashboardApiClient {
);
return chatUnreadCovnCountModelFromJson(response.body);
}
+
+ // Future setAdvertisementViewed(String masterID, int advertisementId) async {
+ // String url = "${ApiConsts.cocRest}Mohemm_ITG_UpdateAdvertisementAsViewed";
+ //
+ // Map postParams = {
+ // "ItgNotificationMasterId": masterID,
+ // "ItgAdvertisement": {"advertisementId": advertisementId, "acknowledgment": true} //Mobile Id
+ // };
+ // postParams.addAll(AppState().postParamsJson);
+ // return await ApiClient().postJsonForObject((json) {
+ // // ItgMainRes responseData = ItgMainRes.fromJson(json);
+ // return json;
+ // }, url, postParams);
+ // }
}
diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart
index c11885c..9bb16a8 100644
--- a/lib/api/my_attendance_api_client.dart
+++ b/lib/api/my_attendance_api_client.dart
@@ -22,8 +22,8 @@ class MyAttendanceApiClient {
String url = "${ApiConsts.erpRest}GET_EIT_TRANSACTIONS";
Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName};
postParams.addAll(AppState().postParamsJson);
- // postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID;
- if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty){
+ // postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID;
+ if (empID!.isNotEmpty) {
postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID;
// AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = empID;
print(empID);
@@ -38,7 +38,7 @@ class MyAttendanceApiClient {
String url = "${ApiConsts.erpRest}GET_EIT_DFF_STRUCTURE";
Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName};
postParams.addAll(AppState().postParamsJson);
- if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) {
+ if (empID!.isNotEmpty) {
postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID;
}
return await ApiClient().postJsonForObject((json) {
@@ -47,21 +47,21 @@ class MyAttendanceApiClient {
}, url, postParams);
}
- Future> getValueSetValues(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List