Untitled
unknown
plain_text
2 years ago
15 kB
6
Indexable
import 'dart:convert'; import 'dart:io'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:get/get.dart' hide MultipartFile, FormData; import 'package:image_picker/image_picker.dart'; import 'package:intl/intl.dart'; import 'package:the_citizen_app/src/controllers/agency_controller.dart'; import 'package:the_citizen_app/src/helpers/dialogHelper.dart'; import 'package:the_citizen_app/src/helpers/get_hepler.dart'; import 'package:the_citizen_app/src/helpers/k_log.dart'; import 'package:the_citizen_app/src/helpers/route.dart'; import 'package:the_citizen_app/src/models/compensatory_model.dart'; import 'package:the_citizen_app/src/models/team_leave_type_model.dart'; import 'package:the_citizen_app/src/pages/attendance_page.dart'; import 'package:the_citizen_app/src/pages/home_page.dart'; import 'package:the_citizen_app/src/pages/main_page.dart'; import '../config/api_endpoint.dart'; import '../helpers/uniqe_id.dart'; import '../models/history_image_count_model.dart'; import '../models/leave_balance_model.dart'; import '../models/officer_search_view_model.dart'; import '../services/api_service.dart'; import 'user_controller.dart'; class EmployeeLeaveManageMentController extends GetxController with ApiService { final selectedIndex = RxInt(0); final startDate = Rx<DateTime?>( DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day)); final endDate = Rx<DateTime?>( DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day)); final historyImageCount = RxList<HistoryImageModel>(); final leaveTypeList = RxList<TeamLeaveTypeModel?>([]); final leaveBalanceList = RxList<LeaveBalanceModel?>([]); final isCompensatorySelected = RxBool(false); final compensatoryLeaveList = RxList<CompensatoryModel?>([]); final searchedOfficerList = RxList<OfficerSearchViewModel?>([]); // final checkBoxList = RxList<OfficerCheckBox?>([]); final selectedLeaveBal = Rx<LeaveBalanceModel?>(null); final selectedleaveType = Rx<TeamLeaveTypeModel?>(null); final selectedStartDate = RxString('Select Start Date'); final selectedContactPerson = RxString('Write Officer Name'); final selectedEndDate = RxString('Select End Date'); final purpose = RxString(''); final contactPersonSearch = RxString(''); final selectedCheckValue = RxString(''); final start_half = RxDouble(0); final leavedays = RxDouble(1); final isLoading = RxBool(false); final isLoading1 = RxBool(false); final end_half = RxDouble(0); final selectedOfficer = Rx<OfficerSearchViewModel?>(null); final imageList = RxList<File?>([]); final attachments = RxList<MultipartFile?>([]); pickImage({required ImageSource imageSource}) async { final pickImage = await ImagePicker().pickImage(source: imageSource); if (pickImage != null) { imageList.add(File(pickImage.path)); //final fileName = getExt(path: pickImage.path); attachments.add( await MultipartFile.fromFile( pickImage.path, filename: 'rep.jpg', ), ); } } @override void onReady() { start_half.value = 1; startDate.value = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); end_half.value = 1; endDate.value = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); super.onReady(); } @override void onClose() { leavedays.value = 0; start_half.value = 1; startDate.value = DateTime.now(); end_half.value = 1; endDate.value = DateTime.now(); super.onClose(); } pickDate({required bool? start}) async { final date = await showDatePicker( context: Get.context!, initialDate: start! ? DateTime.now() : startDate.value!, firstDate: start ? DateTime(1950) : startDate.value!, lastDate: DateTime(2050)); if (date != null) { if (start) { startDate.value = DateTime(date.year, date.month, date.day); differenceDays(); } else { endDate.value = DateTime(date.year, date.month, date.day); if (DateFormat.yMMMd().format(startDate.value!) != DateFormat.yMMMd().format(endDate.value!)) { differenceDays(); } else { end_half.value = 1.0; start_half.value = 1.0; leavedays.value = 1.0; } } } } differenceDays() { leavedays.value = (endDate.value!.difference(startDate.value!).inHours / 24) .roundToDouble() + 1; if (start_half == .5 || start_half == 1.5) { leavedays - 0.5; } if (end_half == .5 || end_half == 1.5) { leavedays - 0.5; } } getCompensatory() async { final username = Get.put(UserController()).username; final selectedAgency = Get.put(AgencyController()).selectedAgency; final body = { 'apiKey': "ZWR1Y2l0aW9uQkRBMTIzNDU2Nzg5", 'appCode': ApiEndpoint.WFC_APP_CODE, 'agencyId': '89180b6c-9cd0-40db-9b08-1b251aa1f18e', 'username': 'kabir2' // 'username': username, // 'agencyId': selectedAgency!.agencyId, }; // final res = await postDynamic( // authentication: true, path: ApiEndpoint.getLeaveBalance(), body: body); try { final res = await getDynamic( path: '${dotenv.env['BASE_URL_WFC']}/get_compensatory_leave', authentication: true, queryParameters: body); if (res.data['status'] != null && res.data['responseCode'] == '200') { for (var i = 0; i < res.data['data'].length; i++) { compensatoryLeaveList.add(CompensatoryModel( isSelect: false.obs, leaveDate: res.data['data'][i])); } } } catch (e) { throw e; } } getLeaveBalance() async { isLoading.value = true; final username = Get.put(UserController()).username; final selectedAgency = Get.put(AgencyController()).selectedAgency; final body = { 'apiKey': "ZWR1Y2l0aW9uQkRBMTIzNDU2Nzg5", 'appCode': ApiEndpoint.WFC_APP_CODE, 'username': username, 'agencyIds': [selectedAgency!.agencyId], }; // final res = await postDynamic( // authentication: true, path: ApiEndpoint.getLeaveBalance(), body: body); try { final res = await Dio().post('${dotenv.env['BASE_URL_WFC']}/get_leave_balance', options: Options( headers: { 'Content-Type': 'application/json', // 'latLng': '${locationC.latLng.value.latitude},${locationC.latLng.value.longitude}', 'latLng': '${locationC.latLng.value.latitude},${locationC.latLng.value.longitude}', 'Authorization': 'Bearer ${Get.put(UserController()).getToken()}' }, ), data: body); if (res.data['status'] != null && res.data['responseCode'] == '200') { final allleaveBalance = res.data['data'] .map((json) => LeaveBalanceModel.fromJson(json as Map<String, dynamic>)) .toList() .cast<LeaveBalanceModel>() as List<LeaveBalanceModel>; leaveBalanceList.clear(); leaveBalanceList.addAll(allleaveBalance); selectedLeaveBal.value = leaveBalanceList.first; } } catch (e) { throw e; } } getLeaveTypeList() async { try { final username = Get.put(UserController()).username; final selectedAgency = Get.put(AgencyController()).selectedAgency; final body = { 'apiKey': ApiEndpoint.SHOUT_API_KEY, 'appCode': ApiEndpoint.SHOUT_APP_CODE, 'username': username, 'agencyId': [selectedAgency!.agencyId], "uiCodes": ["411001"], }; final res = await getDynamic( authentication: true, path: ApiEndpoint.getLeaveTypeUrl(), queryParameters: body); if (res.data['status'].contains('successful') == true) { isLoading.value = false; final allleavetype = res.data['data'] .map((json) => TeamLeaveTypeModel.fromJson(json as Map<String, dynamic>)) .toList() .cast<TeamLeaveTypeModel>() as List<TeamLeaveTypeModel>; leaveTypeList.clear(); leaveTypeList.addAll(allleavetype); selectedleaveType.value = leaveTypeList.first; isLoading.value = false; } } on DioError catch (e) { throw e; } } getContactPersonList() async { isLoading.value = true; final username = Get.put(UserController()).username; final selectedAgency = Get.put(AgencyController()).selectedAgency; final body = { 'apiKey': ApiEndpoint.SHOUT_API_KEY, 'appCode': ApiEndpoint.SHOUT_APP_CODE, 'username': username, 'agencyIds': [selectedAgency!.agencyId], "uiCodes": ["411001"], "additionalUsernames": [username], "searchText": contactPersonSearch.value, }; final res = await postDynamic( authentication: true, path: ApiEndpoint.getContactPerson(), body: body); if (res.data['status'] != null && res.data['status'].contains('successful') == true) { isLoading.value = false; final allSearchedOfficer = res.data['data'] .map((json) => OfficerSearchViewModel.fromJson(json as Map<String, dynamic>)) .toList() .cast<OfficerSearchViewModel>() as List<OfficerSearchViewModel>; searchedOfficerList.clear(); searchedOfficerList.addAll(allSearchedOfficer); // checkBoxList.clear(); // for (var element in searchedOfficerList) { // checkBoxList.add( // OfficerCheckBox(isCheck: false, name: element!.username ?? '')); // } await getFileCount(); //checkBoxList.length.toString()); isLoading.value = false; } } leavesubmission() async { kLog('value'); GetHelper.showDialog(widget: CircularProgressIndicator()); try { final username = Get.put(UserController()).username; final selectedAgency = Get.put(AgencyController()).selectedAgency; FormData body = FormData.fromMap({ "apiKey": "ZWR1Y2l0aW9uQkRBMTIzNDU2Nzg5", "username": username, "agencyIds": selectedAgency!.agencyId, "appCode": "SHOUT", "additionalUsernames": username, "leaveCode": selectedleaveType.value!.leaveCode, "leaveName": selectedleaveType.value!.leaveName, "refno": "1458", "mandatory": selectedleaveType.value!.isMandatory, "encashable": selectedleaveType.value!.isEncashable, "leavePurpose": purpose.value, "annualQuota": selectedleaveType.value!.annualQuota, "prorated": selectedleaveType.value!.isProrated, "contactDetails": [ { "empId": selectedOfficer.value!.id, "username": selectedOfficer.value!.username, "fullname": selectedOfficer.value!.fullname, "mobile": selectedOfficer.value!.mobile, "email": selectedOfficer.value!.email, } ].toString(), "leaveStartDate": DateFormat('yyyy-MM-dd').format(startDate.value!).toString(), "leaveStartFirstHalf": start_half.value == 0.5 ? true : false, "leaveStartFull": start_half.value == 1 ? true : false, "leaveStartSecondHalf": start_half.value == 1.5 ? true : false, "leaveEndDate": DateFormat('yyyy-MM-dd').format(endDate.value!).toString(), "leaveEndFirstHalf": end_half.value == 0.5 ? true : false, "leaveEndFull": end_half.value == 1 ? true : false, "leaveEndSecondHalf": end_half.value == 1.5 ? true : false, "daysInLeave": leavedays.value, "lwp": false, "attachmentUploaded": true, "files": attachments }); final res = await postDynamic( path: "${dotenv.env['BASE_URL_WFC']}/add_tm_leave_application", authentication: true, body: body); if (res.statusCode == 200) { back(); DialogHelper.successDialog( title: 'Leave Application', msg: 'Application Submitted Successfully', color: Colors.amber, onPressed: () { leavedays.value = 1.0; startDate.value = DateTime.now(); endDate.value = DateTime.now(); back(); }, ); } else { back(); DialogHelper.successDialog( title: 'Leave Application', msg: 'Application Not Submitted, Try again', color: Colors.red, onPressed: () { leavedays.value = 0.0; startDate.value = DateTime.now(); endDate.value = DateTime.now(); back(); }, ); } } on DioError catch (e) { isLoading1.value = false; } } // changeValue({required bool a, required String username}) { // for (var element in checkBoxList) { // element!.isCheck = false; // } // checkBoxList[checkBoxList.indexWhere((e) => e!.name == username)]!.isCheck = // a; // selectedCheckValue.value = username; // } getFileCount() async { try { isLoading.value = true; historyImageCount.clear(); for (var element in searchedOfficerList) { // kLog(element.id); final selectedAgency = Get.put(AgencyController()).selectedAgency; final username = Get.put(UserController()).username; final params = { 'apiKey': ApiEndpoint.KYC_API_KEY, 'appCode': ApiEndpoint.WFC_APP_CODE, 'agencyId': selectedAgency!.agencyId, //'agencyId': ['e3b21bef-1afb-4ed7-8a46-2b1801d8649b'], 'username': username, 'fileCategory': 'FILE_CATEGORY_TASK_PROGRESS', 'fileRefId': element!.id!, 'fileRefNo': '', 'fileEntryUsername': '' }; final res = await getDynamic( path: ApiEndpoint.getFileCount(), queryParameters: params, ); historyImageCount.add(HistoryImageModel( progressId: element.id!, status: '', imageCount: res.data['data']['fileCount'].toString(), )); isLoading.value = false; } // ignore: unused_local_variable for (var element in historyImageCount) { print('image Count'); // kLog('${element.progressId} ${element.imageCount}'); } } on DioError catch (e) {} //get history image } }
Editor is loading...