1048147e0Sopenharmony_ci/** 2048147e0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3048147e0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4048147e0Sopenharmony_ci * you may not use this file except in compliance with the License. 5048147e0Sopenharmony_ci * You may obtain a copy of the License at 6048147e0Sopenharmony_ci * 7048147e0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8048147e0Sopenharmony_ci * 9048147e0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10048147e0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11048147e0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12048147e0Sopenharmony_ci * See the License for the specific language governing permissions and 13048147e0Sopenharmony_ci * limitations under the License. 14048147e0Sopenharmony_ci */ 15048147e0Sopenharmony_ci 16048147e0Sopenharmony_ciimport HiLog from '../utils/HiLog'; 17048147e0Sopenharmony_ciimport common from '../data/commonData'; 18048147e0Sopenharmony_ciimport telephoneUtil from '../utils/TelephoneUtil'; 19048147e0Sopenharmony_ciimport LooseObject from '../data/LooseObject' 20048147e0Sopenharmony_ci 21048147e0Sopenharmony_ciconst TAG = 'ContractService'; 22048147e0Sopenharmony_ci 23048147e0Sopenharmony_ciexport default { 24048147e0Sopenharmony_ci 25048147e0Sopenharmony_ci /** 26048147e0Sopenharmony_ci * Querying the contact list 27048147e0Sopenharmony_ci * 28048147e0Sopenharmony_ci * @param actionData 29048147e0Sopenharmony_ci * @callback callback 30048147e0Sopenharmony_ci */ 31048147e0Sopenharmony_ci queryContact(actionData, callback) { 32048147e0Sopenharmony_ci // Obtain rawContractIds and query contacts. 33048147e0Sopenharmony_ci globalThis.DataWorker.sendRequest('queryContact', { 34048147e0Sopenharmony_ci actionData: actionData, 35048147e0Sopenharmony_ci context: globalThis.mmsContext 36048147e0Sopenharmony_ci }, rawContractIds => { 37048147e0Sopenharmony_ci let result: LooseObject = {}; 38048147e0Sopenharmony_ci actionData.contractIds = rawContractIds; 39048147e0Sopenharmony_ci globalThis.DataWorker.sendRequest('queryContactDataByIds', { 40048147e0Sopenharmony_ci actionData: actionData, 41048147e0Sopenharmony_ci context: globalThis.mmsContext 42048147e0Sopenharmony_ci }, contracts => { 43048147e0Sopenharmony_ci result.code = common.int.SUCCESS; 44048147e0Sopenharmony_ci this.convertContracts(contracts, messageList => { 45048147e0Sopenharmony_ci result.response = messageList; 46048147e0Sopenharmony_ci callback(result); 47048147e0Sopenharmony_ci }); 48048147e0Sopenharmony_ci }); 49048147e0Sopenharmony_ci }); 50048147e0Sopenharmony_ci }, 51048147e0Sopenharmony_ci 52048147e0Sopenharmony_ci /** 53048147e0Sopenharmony_ci * Counting the number of rows of contacts 54048147e0Sopenharmony_ci * 55048147e0Sopenharmony_ci * @param actionData 56048147e0Sopenharmony_ci * @callback callback 57048147e0Sopenharmony_ci */ 58048147e0Sopenharmony_ci countContact(actionData, callback) { 59048147e0Sopenharmony_ci // Obtain rawContractIds and query contacts. 60048147e0Sopenharmony_ci globalThis.DataWorker.sendRequest('countContact', { 61048147e0Sopenharmony_ci actionData: actionData, 62048147e0Sopenharmony_ci context: globalThis.mmsContext 63048147e0Sopenharmony_ci }, count => { 64048147e0Sopenharmony_ci let result: LooseObject = {}; 65048147e0Sopenharmony_ci result.code = common.int.SUCCESS; 66048147e0Sopenharmony_ci result.response = count; 67048147e0Sopenharmony_ci callback(result); 68048147e0Sopenharmony_ci }); 69048147e0Sopenharmony_ci }, 70048147e0Sopenharmony_ci 71048147e0Sopenharmony_ci /** 72048147e0Sopenharmony_ci * Convert contact parameters 73048147e0Sopenharmony_ci * 74048147e0Sopenharmony_ci * @param contracts 75048147e0Sopenharmony_ci * @callback callback 76048147e0Sopenharmony_ci */ 77048147e0Sopenharmony_ci async convertContracts(contracts, callback) { 78048147e0Sopenharmony_ci let messageList = []; 79048147e0Sopenharmony_ci for (let contract of contracts) { 80048147e0Sopenharmony_ci let item: LooseObject = {}; 81048147e0Sopenharmony_ci item.contactName = contract.displayName; 82048147e0Sopenharmony_ci item.headImage = 'icon/user_avatar_full_fill.svg'; 83048147e0Sopenharmony_ci item.telephone = contract.detailInfo; 84048147e0Sopenharmony_ci item.telephoneFormat = contract.detailInfo; 85048147e0Sopenharmony_ci item.select = false; 86048147e0Sopenharmony_ci messageList.push(item); 87048147e0Sopenharmony_ci } 88048147e0Sopenharmony_ci callback(messageList); 89048147e0Sopenharmony_ci }, 90048147e0Sopenharmony_ci 91048147e0Sopenharmony_ci /** 92048147e0Sopenharmony_ci * Process contact parameters 93048147e0Sopenharmony_ci * 94048147e0Sopenharmony_ci * @param contactObjects 95048147e0Sopenharmony_ci */ 96048147e0Sopenharmony_ci dealContractParams(contactObjects): LooseObject { 97048147e0Sopenharmony_ci let contractParams: LooseObject = {}; 98048147e0Sopenharmony_ci if (contactObjects && contactObjects != common.string.EMPTY_STR) { 99048147e0Sopenharmony_ci let params: Array<LooseObject> = []; 100048147e0Sopenharmony_ci try { 101048147e0Sopenharmony_ci params = JSON.parse(contactObjects); 102048147e0Sopenharmony_ci } catch (Error) { 103048147e0Sopenharmony_ci HiLog.i(TAG, `JSON.parse error ${Error}`); 104048147e0Sopenharmony_ci return contractParams; 105048147e0Sopenharmony_ci } 106048147e0Sopenharmony_ci let contactsNumber: string = common.string.EMPTY_STR; 107048147e0Sopenharmony_ci let contactsName: string = common.string.EMPTY_STR; 108048147e0Sopenharmony_ci let contactsNumberFormat: string = common.string.EMPTY_STR; 109048147e0Sopenharmony_ci let length: number = params.length; 110048147e0Sopenharmony_ci for (let item of params) { 111048147e0Sopenharmony_ci contactsNumber = contactsNumber + item.telephone + common.string.COMMA; 112048147e0Sopenharmony_ci contactsNumberFormat = contactsNumberFormat + item.telephone + common.string.COMMA; 113048147e0Sopenharmony_ci if (item.contactsName) { 114048147e0Sopenharmony_ci contactsName += (item.contactsName + common.string.COMMA); 115048147e0Sopenharmony_ci } else if (length > 1) { 116048147e0Sopenharmony_ci contactsName += (item.telephone + common.string.COMMA); 117048147e0Sopenharmony_ci } 118048147e0Sopenharmony_ci } 119048147e0Sopenharmony_ci let telephone: string = contactsNumber.substring(0, contactsNumber.length - 1); 120048147e0Sopenharmony_ci contactsNumber = telephoneUtil.dealTelephoneSort(telephone); 121048147e0Sopenharmony_ci contractParams.strContactsNumber = contactsNumber; 122048147e0Sopenharmony_ci contractParams.strContactsNumberFormat = contactsNumber; 123048147e0Sopenharmony_ci contractParams.strContactsName = contactsName.substring(0, contactsName.length - 1); 124048147e0Sopenharmony_ci contractParams.contactsNum = length; 125048147e0Sopenharmony_ci } 126048147e0Sopenharmony_ci return contractParams; 127048147e0Sopenharmony_ci }, 128048147e0Sopenharmony_ci 129048147e0Sopenharmony_ci /** 130048147e0Sopenharmony_ci * Query a contact by mobile number. 131048147e0Sopenharmony_ci * 132048147e0Sopenharmony_ci * @param actionData 133048147e0Sopenharmony_ci * @callback callback 134048147e0Sopenharmony_ci */ 135048147e0Sopenharmony_ci queryContactDataByTelephone(actionData, callback) { 136048147e0Sopenharmony_ci globalThis.DataWorker.sendRequest('queryContactDataByTelephone', { 137048147e0Sopenharmony_ci actionData: actionData, 138048147e0Sopenharmony_ci context: globalThis.mmsContext 139048147e0Sopenharmony_ci }, contracts => { 140048147e0Sopenharmony_ci callback(contracts); 141048147e0Sopenharmony_ci }); 142048147e0Sopenharmony_ci }, 143048147e0Sopenharmony_ci 144048147e0Sopenharmony_ci /** 145048147e0Sopenharmony_ci * Fuzzy search for contacts 146048147e0Sopenharmony_ci * 147048147e0Sopenharmony_ci * @param actionData 148048147e0Sopenharmony_ci * @callback callback 149048147e0Sopenharmony_ci */ 150048147e0Sopenharmony_ci searchContracts(actionData, callback) { 151048147e0Sopenharmony_ci let result: LooseObject = {}; 152048147e0Sopenharmony_ci globalThis.DataWorker.sendRequest('searchContracts', { 153048147e0Sopenharmony_ci actionData: actionData, 154048147e0Sopenharmony_ci context: globalThis.mmsContext 155048147e0Sopenharmony_ci }, (res) =>{ 156048147e0Sopenharmony_ci result.code = res.code 157048147e0Sopenharmony_ci if (res.code == common.int.SUCCESS) { 158048147e0Sopenharmony_ci result.response = this.dealSearchContracts(res.abilityResult); 159048147e0Sopenharmony_ci callback(result); 160048147e0Sopenharmony_ci } 161048147e0Sopenharmony_ci }); 162048147e0Sopenharmony_ci }, 163048147e0Sopenharmony_ci 164048147e0Sopenharmony_ci dealSearchContracts(contracts) { 165048147e0Sopenharmony_ci let searchContracts = [] 166048147e0Sopenharmony_ci for (let item of contracts) { 167048147e0Sopenharmony_ci let searchContract: LooseObject = {}; 168048147e0Sopenharmony_ci searchContract.headImage = 'icon/user_avatar_full_fill.svg'; 169048147e0Sopenharmony_ci searchContract.contactName = item.displayName; 170048147e0Sopenharmony_ci searchContract.telephone = item.detailInfo; 171048147e0Sopenharmony_ci searchContract.telephoneFormat = item.detailInfo; 172048147e0Sopenharmony_ci searchContracts.push(searchContract); 173048147e0Sopenharmony_ci } 174048147e0Sopenharmony_ci return searchContracts; 175048147e0Sopenharmony_ci }, 176048147e0Sopenharmony_ci 177048147e0Sopenharmony_ci /** 178048147e0Sopenharmony_ci * Check whether a business card exists. 179048147e0Sopenharmony_ci * 180048147e0Sopenharmony_ci * @param actionData 181048147e0Sopenharmony_ci * @callback callback 182048147e0Sopenharmony_ci */ 183048147e0Sopenharmony_ci judgeIsExitProfile(actionData, callback) { 184048147e0Sopenharmony_ci globalThis.DataWorker.sendRequest('queryProfile', { 185048147e0Sopenharmony_ci actionData: actionData, 186048147e0Sopenharmony_ci context: globalThis.mmsContext 187048147e0Sopenharmony_ci }, res => { 188048147e0Sopenharmony_ci let result = false; 189048147e0Sopenharmony_ci if (res > 0) { 190048147e0Sopenharmony_ci result = true; 191048147e0Sopenharmony_ci } 192048147e0Sopenharmony_ci callback(result); 193048147e0Sopenharmony_ci }); 194048147e0Sopenharmony_ci } 195048147e0Sopenharmony_ci}