18779efd5Sopenharmony_ci/**
28779efd5Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
38779efd5Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48779efd5Sopenharmony_ci * you may not use this file except in compliance with the License.
58779efd5Sopenharmony_ci * You may obtain a copy of the License at
68779efd5Sopenharmony_ci *
78779efd5Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
88779efd5Sopenharmony_ci *
98779efd5Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108779efd5Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118779efd5Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128779efd5Sopenharmony_ci * See the License for the specific language governing permissions and
138779efd5Sopenharmony_ci * limitations under the License.
148779efd5Sopenharmony_ci */
158779efd5Sopenharmony_ci
168779efd5Sopenharmony_ciimport MorandiColor from '../model/bean/MorandiColor';
178779efd5Sopenharmony_ciimport dataShare from '@ohos.data.dataShare';
188779efd5Sopenharmony_ciimport dataSharePredicates from '@ohos.data.dataSharePredicates';
198779efd5Sopenharmony_ciimport { ContactVo } from '../model/bean/ContactVo';
208779efd5Sopenharmony_ciimport { ContactInfo } from '../model/bean/ContactInfo';
218779efd5Sopenharmony_ciimport { ContactRepository } from '../../../../../feature/contact/src/main/ets/repo/ContactRepository';
228779efd5Sopenharmony_ciimport { DataItem } from '../../../../../feature/contact/src/main/ets/entity/DataItem';
238779efd5Sopenharmony_ciimport { DataItemType } from '../../../../../feature/contact/src/main/ets/contract/DataType';
248779efd5Sopenharmony_ciimport { Data } from '../../../../../feature/contact/src/main/ets/contract/Data';
258779efd5Sopenharmony_ciimport { RawContacts } from '../../../../../feature/contact/src/main/ets/contract/RawContacts';
268779efd5Sopenharmony_ciimport { Contacts } from '../../../../../feature/contact/src/main/ets/contract/Contacts';
278779efd5Sopenharmony_ciimport { HiLog } from '../../../../../common/src/main/ets/util/HiLog';
288779efd5Sopenharmony_ciimport { StringUtil } from '../../../../../common/src/main/ets/util/StringUtil';
298779efd5Sopenharmony_ciimport { ArrayUtil } from '../../../../../common/src/main/ets/util/ArrayUtil';
308779efd5Sopenharmony_ciimport { CallLogRepository } from '../../../../../feature/call/src/main/ets/repo/CallLogRepository';
318779efd5Sopenharmony_ciimport { PhoneNumber } from '../../../../../feature/phonenumber/src/main/ets/PhoneNumber';
328779efd5Sopenharmony_ciimport { FavoriteBean } from './bean/FavoriteBean';
338779efd5Sopenharmony_ciimport { CallLog } from '../../../../../feature/call/src/main/ets/entity/CallLog';
348779efd5Sopenharmony_ciimport { SearchContactsBean } from './bean/SearchContactsBean';
358779efd5Sopenharmony_ci
368779efd5Sopenharmony_ciconst TAG = 'ContactAbility: ';
378779efd5Sopenharmony_ciconst PROFILE_CONTACT_DATA_URI = 'datashare:///com.ohos.contactsdataability/profile/contact_data';
388779efd5Sopenharmony_ci
398779efd5Sopenharmony_ciexport default {
408779efd5Sopenharmony_ci  /**
418779efd5Sopenharmony_ci   * Add Contact
428779efd5Sopenharmony_ci   *
438779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
448779efd5Sopenharmony_ci   * @param {Object} callBack
458779efd5Sopenharmony_ci   */
468779efd5Sopenharmony_ci  addContact: async function (addParams: ContactInfo, callBack?, context?) {
478779efd5Sopenharmony_ci    HiLog.i(TAG, 'Start to create a new contact.');
488779efd5Sopenharmony_ci    if (addParams == undefined || addParams == null) {
498779efd5Sopenharmony_ci      HiLog.e(TAG, 'The addParams of parameter is NULL');
508779efd5Sopenharmony_ci      return '';
518779efd5Sopenharmony_ci    }
528779efd5Sopenharmony_ci    let DAHelper = await dataShare.createDataShareHelper(context ? context : globalThis.context, Contacts.CONTENT_URI);
538779efd5Sopenharmony_ci    let insertValues = {
548779efd5Sopenharmony_ci      'display_name': this.getDisplayName(addParams),
558779efd5Sopenharmony_ci    };
568779efd5Sopenharmony_ci    DAHelper.insert(
578779efd5Sopenharmony_ci    RawContacts.CONTENT_URI,
588779efd5Sopenharmony_ci      insertValues
598779efd5Sopenharmony_ci    ).then(data => {
608779efd5Sopenharmony_ci      if (data == -1 || data == undefined) {
618779efd5Sopenharmony_ci        HiLog.e(TAG, 'Data inserted failed');
628779efd5Sopenharmony_ci        return;
638779efd5Sopenharmony_ci      }
648779efd5Sopenharmony_ci      addParams.id = data.toString();
658779efd5Sopenharmony_ci      this.dealParam(DAHelper, addParams, false, callBack);
668779efd5Sopenharmony_ci    }).catch(error => {
678779efd5Sopenharmony_ci      HiLog.e(TAG, 'logMessage insert error: ' + JSON.stringify(error.message));
688779efd5Sopenharmony_ci    });
698779efd5Sopenharmony_ci    HiLog.i(TAG, 'End of creating a contact.');
708779efd5Sopenharmony_ci  },
718779efd5Sopenharmony_ci
728779efd5Sopenharmony_ci  /**
738779efd5Sopenharmony_ci   * Read the name, which needs to be optimized.
748779efd5Sopenharmony_ci   * Edit Contact
758779efd5Sopenharmony_ci   *
768779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
778779efd5Sopenharmony_ci   * @return {string} Contact Name
788779efd5Sopenharmony_ci   */
798779efd5Sopenharmony_ci  getDisplayName: function (addParams: ContactInfo): String {
808779efd5Sopenharmony_ci    let displayName = '';
818779efd5Sopenharmony_ci    if (addParams.display_name != undefined && addParams.display_name.length > 0) {
828779efd5Sopenharmony_ci      displayName = addParams.display_name;
838779efd5Sopenharmony_ci    } else if (addParams.nickname != undefined && addParams.nickname.length > 0) {
848779efd5Sopenharmony_ci      displayName = addParams.nickname;
858779efd5Sopenharmony_ci    } else if (addParams.hasOwnProperty('company') && addParams.company.length > 0) {
868779efd5Sopenharmony_ci      displayName = addParams.company;
878779efd5Sopenharmony_ci    } else if (addParams.hasOwnProperty('position') && addParams.position.length > 0) {
888779efd5Sopenharmony_ci      displayName = addParams.position;
898779efd5Sopenharmony_ci    } else if (addParams.hasOwnProperty('phones') && addParams.phones.length > 0) {
908779efd5Sopenharmony_ci      for (let element of addParams.phones) {
918779efd5Sopenharmony_ci        if (StringUtil.isEmpty(element.num)) {
928779efd5Sopenharmony_ci          continue;
938779efd5Sopenharmony_ci        }
948779efd5Sopenharmony_ci        displayName = PhoneNumber.fromString(element.num).getNumber();
958779efd5Sopenharmony_ci        break;
968779efd5Sopenharmony_ci      }
978779efd5Sopenharmony_ci    }
988779efd5Sopenharmony_ci    return displayName;
998779efd5Sopenharmony_ci  },
1008779efd5Sopenharmony_ci
1018779efd5Sopenharmony_ci  /**
1028779efd5Sopenharmony_ci   * Convert the data to the database.
1038779efd5Sopenharmony_ci   *
1048779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
1058779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
1068779efd5Sopenharmony_ci   * @param {boolean} isCard Indicates whether the information is a business card.
1078779efd5Sopenharmony_ci   */
1088779efd5Sopenharmony_ci  dealParam: function (DAHelper, addParams: ContactInfo, isCard, callBack) {
1098779efd5Sopenharmony_ci    let result = addParams.id;
1108779efd5Sopenharmony_ci    let uri = isCard ? PROFILE_CONTACT_DATA_URI : Data.CONTENT_URI;
1118779efd5Sopenharmony_ci
1128779efd5Sopenharmony_ci    this.dataContact(addParams, DAHelper, result, uri);
1138779efd5Sopenharmony_ci    this.organizationContact(addParams, DAHelper, result, uri);
1148779efd5Sopenharmony_ci    this.noteContact(addParams, DAHelper, result, uri);
1158779efd5Sopenharmony_ci    this.phoneContact(addParams, DAHelper, result, uri);
1168779efd5Sopenharmony_ci    this.emailContact(addParams, DAHelper, result, uri);
1178779efd5Sopenharmony_ci    this.postalContact(addParams, DAHelper, result, uri);
1188779efd5Sopenharmony_ci    this.eventContact(addParams, DAHelper, result, uri);
1198779efd5Sopenharmony_ci    this.imContact(addParams, DAHelper, result, uri);
1208779efd5Sopenharmony_ci    this.groupsContact(addParams, DAHelper, result, uri);
1218779efd5Sopenharmony_ci    this.websiteContact(addParams, DAHelper, result, uri);
1228779efd5Sopenharmony_ci    this.nickContact(addParams, DAHelper, result, uri);
1238779efd5Sopenharmony_ci    this.relationsContact(addParams, DAHelper, result, uri);
1248779efd5Sopenharmony_ci
1258779efd5Sopenharmony_ci    if (callBack != undefined) {
1268779efd5Sopenharmony_ci      HiLog.d(TAG, 'Start the callback function.');
1278779efd5Sopenharmony_ci      callBack(addParams.id);
1288779efd5Sopenharmony_ci    }
1298779efd5Sopenharmony_ci  },
1308779efd5Sopenharmony_ci
1318779efd5Sopenharmony_ci  /**
1328779efd5Sopenharmony_ci   * Save the contact name to the database.
1338779efd5Sopenharmony_ci   *
1348779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
1358779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
1368779efd5Sopenharmony_ci   * @param {string} result Contact ID
1378779efd5Sopenharmony_ci   * @param {string} uri Database address
1388779efd5Sopenharmony_ci   */
1398779efd5Sopenharmony_ci  dataContact: function (addParams, DAHelper, result, uri) {
1408779efd5Sopenharmony_ci    let displayName = '';
1418779efd5Sopenharmony_ci    let updateFlag = 0;
1428779efd5Sopenharmony_ci    if (addParams.display_name != undefined && addParams.display_name.length > 0) {
1438779efd5Sopenharmony_ci      displayName = addParams.display_name;
1448779efd5Sopenharmony_ci    } else {
1458779efd5Sopenharmony_ci      updateFlag = 1;
1468779efd5Sopenharmony_ci      displayName = this.getDisplayName(addParams);
1478779efd5Sopenharmony_ci    }
1488779efd5Sopenharmony_ci
1498779efd5Sopenharmony_ci    if (displayName.length > 0) {
1508779efd5Sopenharmony_ci      let dataContact = {
1518779efd5Sopenharmony_ci        'raw_contact_id': result,
1528779efd5Sopenharmony_ci        'detail_info': displayName,
1538779efd5Sopenharmony_ci        'alpha_name': displayName,
1548779efd5Sopenharmony_ci        'phonetic_name': addParams.hasOwnProperty('phonetic_name') ? (addParams.phonetic_name) : '',
1558779efd5Sopenharmony_ci        'other_lan_last_name': addParams.hasOwnProperty('other_lan_last_name') ? (addParams.other_lan_last_name) : '',
1568779efd5Sopenharmony_ci        'other_lan_first_name': addParams.hasOwnProperty('other_lan_first_name') ? (addParams.other_lan_first_name) : '',
1578779efd5Sopenharmony_ci        'type_id': 6,
1588779efd5Sopenharmony_ci        'extend7': updateFlag
1598779efd5Sopenharmony_ci      };
1608779efd5Sopenharmony_ci      DAHelper.insert(
1618779efd5Sopenharmony_ci        uri,
1628779efd5Sopenharmony_ci        dataContact
1638779efd5Sopenharmony_ci      ).then(data => {
1648779efd5Sopenharmony_ci        if (data == -1) {
1658779efd5Sopenharmony_ci          HiLog.e(TAG, 'name-insert data failed!');
1668779efd5Sopenharmony_ci        }
1678779efd5Sopenharmony_ci        HiLog.d(TAG, 'name-insert data success!');
1688779efd5Sopenharmony_ci      }).catch(err => {
1698779efd5Sopenharmony_ci        HiLog.e(TAG, 'name-insert failed. Cause: ' + JSON.stringify(err.message));
1708779efd5Sopenharmony_ci      });
1718779efd5Sopenharmony_ci    }
1728779efd5Sopenharmony_ci  },
1738779efd5Sopenharmony_ci
1748779efd5Sopenharmony_ci  /**
1758779efd5Sopenharmony_ci   * Save the contact nickname information to the database.
1768779efd5Sopenharmony_ci   *
1778779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
1788779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
1798779efd5Sopenharmony_ci   * @param {number} result Contact ID
1808779efd5Sopenharmony_ci   * @param {string} uri Database address
1818779efd5Sopenharmony_ci   */
1828779efd5Sopenharmony_ci  nickContact: function (addParams, DAHelper, result, uri) {
1838779efd5Sopenharmony_ci    if (addParams.nickname != undefined && addParams.nickname.length > 0) {
1848779efd5Sopenharmony_ci      let nickContact = {
1858779efd5Sopenharmony_ci        'raw_contact_id': result,
1868779efd5Sopenharmony_ci        'detail_info': addParams.nickname,
1878779efd5Sopenharmony_ci        'type_id': 9,
1888779efd5Sopenharmony_ci      };
1898779efd5Sopenharmony_ci      DAHelper.insert(
1908779efd5Sopenharmony_ci        uri,
1918779efd5Sopenharmony_ci        nickContact
1928779efd5Sopenharmony_ci      ).then(data => {
1938779efd5Sopenharmony_ci        if (data == -1) {
1948779efd5Sopenharmony_ci          HiLog.e(TAG, 'nickname-insert data failed!');
1958779efd5Sopenharmony_ci        }
1968779efd5Sopenharmony_ci        HiLog.d(TAG, 'nickname-insert data success!');
1978779efd5Sopenharmony_ci      }).catch(err => {
1988779efd5Sopenharmony_ci        HiLog.e(TAG, 'nickname-insert failed. Cause: ' + JSON.stringify(err.message));
1998779efd5Sopenharmony_ci      });
2008779efd5Sopenharmony_ci    }
2018779efd5Sopenharmony_ci  },
2028779efd5Sopenharmony_ci  /**
2038779efd5Sopenharmony_ci   * Save the position information of the contact company to the database.
2048779efd5Sopenharmony_ci   *
2058779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
2068779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
2078779efd5Sopenharmony_ci   * @param {string} result Contact ID
2088779efd5Sopenharmony_ci   * @param {string} uri Database address
2098779efd5Sopenharmony_ci   */
2108779efd5Sopenharmony_ci  organizationContact: function (addParams, DAHelper, result, uri) {
2118779efd5Sopenharmony_ci    let company = '';
2128779efd5Sopenharmony_ci    let position = '';
2138779efd5Sopenharmony_ci    if (addParams.company != undefined && addParams.company.length > 0) {
2148779efd5Sopenharmony_ci      company = addParams.company;
2158779efd5Sopenharmony_ci    }
2168779efd5Sopenharmony_ci    if (addParams.position != undefined && addParams.position.length > 0) {
2178779efd5Sopenharmony_ci      position = addParams.position;
2188779efd5Sopenharmony_ci    }
2198779efd5Sopenharmony_ci    if (addParams.company != undefined && addParams.company.length > 0
2208779efd5Sopenharmony_ci    || addParams.position != undefined && addParams.position.length > 0) {
2218779efd5Sopenharmony_ci      let organizationContact = {
2228779efd5Sopenharmony_ci        'raw_contact_id': result,
2238779efd5Sopenharmony_ci        'detail_info': company,
2248779efd5Sopenharmony_ci        'position': position,
2258779efd5Sopenharmony_ci        'type_id': 4,
2268779efd5Sopenharmony_ci      };
2278779efd5Sopenharmony_ci      DAHelper.insert(
2288779efd5Sopenharmony_ci        uri,
2298779efd5Sopenharmony_ci        organizationContact
2308779efd5Sopenharmony_ci      ).then(data => {
2318779efd5Sopenharmony_ci        if (data == -1) {
2328779efd5Sopenharmony_ci          HiLog.e(TAG, 'organizationContact-insert data failed!');
2338779efd5Sopenharmony_ci        }
2348779efd5Sopenharmony_ci        HiLog.d(TAG, 'organizationContact-insert data success!');
2358779efd5Sopenharmony_ci      }).catch(error => {
2368779efd5Sopenharmony_ci        HiLog.e(TAG, 'organizationContact-insert failed. Cause: ' + JSON.stringify(error.message));
2378779efd5Sopenharmony_ci      });
2388779efd5Sopenharmony_ci    }
2398779efd5Sopenharmony_ci  },
2408779efd5Sopenharmony_ci
2418779efd5Sopenharmony_ci  /**
2428779efd5Sopenharmony_ci   * Save the contact remarks to the database.
2438779efd5Sopenharmony_ci   *
2448779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
2458779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
2468779efd5Sopenharmony_ci   * @param {number} result Contact ID
2478779efd5Sopenharmony_ci   * @param {string} uri Database address
2488779efd5Sopenharmony_ci   */
2498779efd5Sopenharmony_ci  noteContact: function (addParams, DAHelper, result, uri) {
2508779efd5Sopenharmony_ci    if (addParams.remarks != undefined && addParams.remarks.length > 0) {
2518779efd5Sopenharmony_ci      let noteContact = {
2528779efd5Sopenharmony_ci        'raw_contact_id': result,
2538779efd5Sopenharmony_ci        'detail_info': addParams.remarks,
2548779efd5Sopenharmony_ci        'type_id': 10,
2558779efd5Sopenharmony_ci      };
2568779efd5Sopenharmony_ci      DAHelper.insert(
2578779efd5Sopenharmony_ci        uri,
2588779efd5Sopenharmony_ci        noteContact
2598779efd5Sopenharmony_ci      ).then(data => {
2608779efd5Sopenharmony_ci        if (data == -1) {
2618779efd5Sopenharmony_ci          HiLog.e(TAG, 'noteContact-insert data failed!');
2628779efd5Sopenharmony_ci        }
2638779efd5Sopenharmony_ci        HiLog.d(TAG, 'noteContact-insert insert data success!');
2648779efd5Sopenharmony_ci      }).catch(error => {
2658779efd5Sopenharmony_ci        HiLog.e(TAG, 'noteContact-insert failed. Cause: ' + JSON.stringify(error.message));
2668779efd5Sopenharmony_ci      });
2678779efd5Sopenharmony_ci    }
2688779efd5Sopenharmony_ci  },
2698779efd5Sopenharmony_ci
2708779efd5Sopenharmony_ci  /**
2718779efd5Sopenharmony_ci   * The contact mobile number information is saved to the database.
2728779efd5Sopenharmony_ci   *
2738779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
2748779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
2758779efd5Sopenharmony_ci   * @param {number} result Contact ID
2768779efd5Sopenharmony_ci   * @param {string} uri Database address
2778779efd5Sopenharmony_ci   */
2788779efd5Sopenharmony_ci  phoneContact: function (addParams, DAHelper, result, uri) {
2798779efd5Sopenharmony_ci    if (addParams.phones != undefined && addParams.phones.length > 0) {
2808779efd5Sopenharmony_ci      let index = 1;
2818779efd5Sopenharmony_ci      addParams.phones.forEach(element => {
2828779efd5Sopenharmony_ci        if (StringUtil.isEmpty(element.num)) {
2838779efd5Sopenharmony_ci          return;
2848779efd5Sopenharmony_ci        }
2858779efd5Sopenharmony_ci        let phoneContact = {
2868779efd5Sopenharmony_ci          'raw_contact_id': result,
2878779efd5Sopenharmony_ci          'detail_info': element.num,
2888779efd5Sopenharmony_ci          'extend7': (index++).toString(),
2898779efd5Sopenharmony_ci          'custom_data': element.numType,
2908779efd5Sopenharmony_ci          'type_id': 5,
2918779efd5Sopenharmony_ci        };
2928779efd5Sopenharmony_ci        DAHelper.insert(
2938779efd5Sopenharmony_ci          uri,
2948779efd5Sopenharmony_ci          phoneContact
2958779efd5Sopenharmony_ci        ).then(data => {
2968779efd5Sopenharmony_ci          if (data == -1) {
2978779efd5Sopenharmony_ci            HiLog.e(TAG, 'phoneContact-insert data failed!');
2988779efd5Sopenharmony_ci          }
2998779efd5Sopenharmony_ci          HiLog.d(TAG, 'phoneContact-insert data success!');
3008779efd5Sopenharmony_ci        }).catch(error => {
3018779efd5Sopenharmony_ci          HiLog.e(TAG, 'phoneContact-insert failed. Cause: ' + JSON.stringify(error.message));
3028779efd5Sopenharmony_ci        });
3038779efd5Sopenharmony_ci      });
3048779efd5Sopenharmony_ci    }
3058779efd5Sopenharmony_ci  },
3068779efd5Sopenharmony_ci
3078779efd5Sopenharmony_ci  /**
3088779efd5Sopenharmony_ci   * Save the contact email information to the database.
3098779efd5Sopenharmony_ci   *
3108779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
3118779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
3128779efd5Sopenharmony_ci   * @param {number} result Contact ID
3138779efd5Sopenharmony_ci   * @param {string} uri Database address
3148779efd5Sopenharmony_ci   */
3158779efd5Sopenharmony_ci  emailContact: function (addParams, DAHelper, result, uri) {
3168779efd5Sopenharmony_ci    if (addParams.emails != undefined && addParams.emails.length > 0) {
3178779efd5Sopenharmony_ci      let index = 1;
3188779efd5Sopenharmony_ci      addParams.emails.forEach(element => {
3198779efd5Sopenharmony_ci        if (StringUtil.isEmpty(element.address)) {
3208779efd5Sopenharmony_ci          return;
3218779efd5Sopenharmony_ci        }
3228779efd5Sopenharmony_ci        let emailContact = {
3238779efd5Sopenharmony_ci          'raw_contact_id': result,
3248779efd5Sopenharmony_ci          'detail_info': element.address,
3258779efd5Sopenharmony_ci          'extend7': (index++).toString(),
3268779efd5Sopenharmony_ci          'custom_data': element.emailType,
3278779efd5Sopenharmony_ci          'type_id': 1,
3288779efd5Sopenharmony_ci        };
3298779efd5Sopenharmony_ci        DAHelper.insert(
3308779efd5Sopenharmony_ci          uri,
3318779efd5Sopenharmony_ci          emailContact
3328779efd5Sopenharmony_ci        ).then(data => {
3338779efd5Sopenharmony_ci          if (data == -1) {
3348779efd5Sopenharmony_ci            HiLog.e(TAG, 'emailContact-insert data failed!');
3358779efd5Sopenharmony_ci          }
3368779efd5Sopenharmony_ci          HiLog.d(TAG, 'emailContact-insert data success!');
3378779efd5Sopenharmony_ci        }).catch(error => {
3388779efd5Sopenharmony_ci          HiLog.e(TAG, 'emailContact-insert failed. Cause: ' + JSON.stringify(error.message));
3398779efd5Sopenharmony_ci        });
3408779efd5Sopenharmony_ci      });
3418779efd5Sopenharmony_ci    }
3428779efd5Sopenharmony_ci  },
3438779efd5Sopenharmony_ci
3448779efd5Sopenharmony_ci  /**
3458779efd5Sopenharmony_ci   * The contact address information is saved to the database.
3468779efd5Sopenharmony_ci   *
3478779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
3488779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
3498779efd5Sopenharmony_ci   * @param {number} result Contact ID
3508779efd5Sopenharmony_ci   * @param {string} uri Database address
3518779efd5Sopenharmony_ci   */
3528779efd5Sopenharmony_ci  postalContact: function (addParams, DAHelper, result, uri) {
3538779efd5Sopenharmony_ci    if (addParams.houses != undefined && addParams.houses.length > 0) {
3548779efd5Sopenharmony_ci      let index = 1;
3558779efd5Sopenharmony_ci      addParams.houses.forEach(element => {
3568779efd5Sopenharmony_ci        if (StringUtil.isEmpty(element.houseName)) {
3578779efd5Sopenharmony_ci          return;
3588779efd5Sopenharmony_ci        }
3598779efd5Sopenharmony_ci        let postalContact = {
3608779efd5Sopenharmony_ci          'raw_contact_id': result,
3618779efd5Sopenharmony_ci          'detail_info': element.houseName,
3628779efd5Sopenharmony_ci          'extend7': (index++).toString(),
3638779efd5Sopenharmony_ci          'custom_data': element.houseType,
3648779efd5Sopenharmony_ci          'type_id': 7,
3658779efd5Sopenharmony_ci        };
3668779efd5Sopenharmony_ci        DAHelper.insert(
3678779efd5Sopenharmony_ci          uri,
3688779efd5Sopenharmony_ci          postalContact
3698779efd5Sopenharmony_ci        ).then(data => {
3708779efd5Sopenharmony_ci          if (data == -1) {
3718779efd5Sopenharmony_ci            HiLog.e(TAG, 'postalContact-insert data failed!');
3728779efd5Sopenharmony_ci          }
3738779efd5Sopenharmony_ci          HiLog.d(TAG, 'postalContact-insert data success!');
3748779efd5Sopenharmony_ci        }).catch(error => {
3758779efd5Sopenharmony_ci          HiLog.e(TAG, 'postalContact-insert failed. Cause: ' + JSON.stringify(error.message));
3768779efd5Sopenharmony_ci        });
3778779efd5Sopenharmony_ci      });
3788779efd5Sopenharmony_ci    }
3798779efd5Sopenharmony_ci  },
3808779efd5Sopenharmony_ci
3818779efd5Sopenharmony_ci
3828779efd5Sopenharmony_ci  /**
3838779efd5Sopenharmony_ci   * Save the contact special date information to the database.
3848779efd5Sopenharmony_ci   *
3858779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
3868779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
3878779efd5Sopenharmony_ci   * @param {number} result Contact ID
3888779efd5Sopenharmony_ci   * @param {string} uri Database address
3898779efd5Sopenharmony_ci   */
3908779efd5Sopenharmony_ci  eventContact: function (addParams, DAHelper, result, uri) {
3918779efd5Sopenharmony_ci    if (addParams.events != undefined && addParams.events.length > 0) {
3928779efd5Sopenharmony_ci      let index = 1;
3938779efd5Sopenharmony_ci      addParams.events.forEach(element => {
3948779efd5Sopenharmony_ci        if (StringUtil.isEmpty(element.data)) {
3958779efd5Sopenharmony_ci          return;
3968779efd5Sopenharmony_ci        }
3978779efd5Sopenharmony_ci        let eventContact = {
3988779efd5Sopenharmony_ci          'raw_contact_id': result,
3998779efd5Sopenharmony_ci          'detail_info': element.data,
4008779efd5Sopenharmony_ci          'extend7': (index++).toString(),
4018779efd5Sopenharmony_ci          'custom_data': element.eventType,
4028779efd5Sopenharmony_ci          'type_id': 11
4038779efd5Sopenharmony_ci        };
4048779efd5Sopenharmony_ci        DAHelper.insert(
4058779efd5Sopenharmony_ci          uri,
4068779efd5Sopenharmony_ci          eventContact
4078779efd5Sopenharmony_ci        ).then(data => {
4088779efd5Sopenharmony_ci          if (data == -1) {
4098779efd5Sopenharmony_ci            HiLog.e(TAG, 'eventContact-insert data failed!');
4108779efd5Sopenharmony_ci          }
4118779efd5Sopenharmony_ci          HiLog.d(TAG, 'eventContact-insert data success!');
4128779efd5Sopenharmony_ci        }).catch(error => {
4138779efd5Sopenharmony_ci          HiLog.e(TAG, 'eventContact-insert failed. Cause: ' + JSON.stringify(error.message));
4148779efd5Sopenharmony_ci        });
4158779efd5Sopenharmony_ci      });
4168779efd5Sopenharmony_ci    }
4178779efd5Sopenharmony_ci  },
4188779efd5Sopenharmony_ci
4198779efd5Sopenharmony_ci  /**
4208779efd5Sopenharmony_ci   * Save the contact IMA information to the database.
4218779efd5Sopenharmony_ci   *
4228779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
4238779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
4248779efd5Sopenharmony_ci   * @param {number} result Contact ID
4258779efd5Sopenharmony_ci   * @param {string} uri Database address
4268779efd5Sopenharmony_ci   */
4278779efd5Sopenharmony_ci  imContact: function (addParams, DAHelper, result, uri) {
4288779efd5Sopenharmony_ci    if (addParams.aims != undefined && addParams.aims.length > 0) {
4298779efd5Sopenharmony_ci      let index = 1;
4308779efd5Sopenharmony_ci      addParams.aims.forEach(element => {
4318779efd5Sopenharmony_ci        if (StringUtil.isEmpty(element.aimName)) {
4328779efd5Sopenharmony_ci          return;
4338779efd5Sopenharmony_ci        }
4348779efd5Sopenharmony_ci        let imContact = {
4358779efd5Sopenharmony_ci          'raw_contact_id': result,
4368779efd5Sopenharmony_ci          'detail_info': element.aimName,
4378779efd5Sopenharmony_ci          'extend7': (index++).toString(),
4388779efd5Sopenharmony_ci          'custom_data': element.aimType,
4398779efd5Sopenharmony_ci          'type_id': 2,
4408779efd5Sopenharmony_ci        };
4418779efd5Sopenharmony_ci        DAHelper.insert(
4428779efd5Sopenharmony_ci          uri,
4438779efd5Sopenharmony_ci          imContact
4448779efd5Sopenharmony_ci        ).then(data => {
4458779efd5Sopenharmony_ci          if (data == -1) {
4468779efd5Sopenharmony_ci            HiLog.e(TAG, 'imContact-insert data failed!');
4478779efd5Sopenharmony_ci          }
4488779efd5Sopenharmony_ci          HiLog.d(TAG, 'imContact-insert data success!');
4498779efd5Sopenharmony_ci        }).catch(error => {
4508779efd5Sopenharmony_ci          HiLog.e(TAG, 'imContact-insert failed. Cause: ' + JSON.stringify(error.message));
4518779efd5Sopenharmony_ci        });
4528779efd5Sopenharmony_ci      });
4538779efd5Sopenharmony_ci    }
4548779efd5Sopenharmony_ci  },
4558779efd5Sopenharmony_ci
4568779efd5Sopenharmony_ci  /**
4578779efd5Sopenharmony_ci   * Save the contact group information to the database.
4588779efd5Sopenharmony_ci   *
4598779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
4608779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
4618779efd5Sopenharmony_ci   * @param {number} result Contact ID
4628779efd5Sopenharmony_ci   * @param {string} uri Database address
4638779efd5Sopenharmony_ci   */
4648779efd5Sopenharmony_ci  groupsContact: function (addParams, DAHelper, result, uri) {
4658779efd5Sopenharmony_ci    if (addParams.groups != undefined && addParams.groups.length > 0) {
4668779efd5Sopenharmony_ci      addParams.groups.forEach(element => {
4678779efd5Sopenharmony_ci        let groupsContact = {
4688779efd5Sopenharmony_ci          'raw_contact_id': result,
4698779efd5Sopenharmony_ci          'detail_info': element.groupName,
4708779efd5Sopenharmony_ci          'extend7': element.groupId + '',
4718779efd5Sopenharmony_ci          'custom_data': element.groupType,
4728779efd5Sopenharmony_ci          'type_id': 9,
4738779efd5Sopenharmony_ci        };
4748779efd5Sopenharmony_ci        DAHelper.insert(
4758779efd5Sopenharmony_ci          uri,
4768779efd5Sopenharmony_ci          groupsContact
4778779efd5Sopenharmony_ci        ).then(data => {
4788779efd5Sopenharmony_ci          if (data == -1) {
4798779efd5Sopenharmony_ci            HiLog.e(TAG, 'groupsContact-insert data failed!');
4808779efd5Sopenharmony_ci          }
4818779efd5Sopenharmony_ci          HiLog.d(TAG, 'groupsContact-insert data success!');
4828779efd5Sopenharmony_ci        }).catch(error => {
4838779efd5Sopenharmony_ci          HiLog.e(TAG, 'groupsContact-insert failed. Cause: %s', JSON.stringify(error.message));
4848779efd5Sopenharmony_ci        });
4858779efd5Sopenharmony_ci      });
4868779efd5Sopenharmony_ci    }
4878779efd5Sopenharmony_ci  },
4888779efd5Sopenharmony_ci
4898779efd5Sopenharmony_ci  /**
4908779efd5Sopenharmony_ci   * Save the contact website information to the database.
4918779efd5Sopenharmony_ci   *
4928779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
4938779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
4948779efd5Sopenharmony_ci   * @param {number} result Contact ID
4958779efd5Sopenharmony_ci   * @param {string} uri Database address
4968779efd5Sopenharmony_ci   */
4978779efd5Sopenharmony_ci  websiteContact: function (addParams, DAHelper, result, uri) {
4988779efd5Sopenharmony_ci    if (!ArrayUtil.isEmpty(addParams.websites)) {
4998779efd5Sopenharmony_ci      addParams.websites.forEach(element => {
5008779efd5Sopenharmony_ci        if (StringUtil.isEmpty(element))
5018779efd5Sopenharmony_ci        return;
5028779efd5Sopenharmony_ci        let websiteContact = {
5038779efd5Sopenharmony_ci          'raw_contact_id': result,
5048779efd5Sopenharmony_ci          'detail_info': element,
5058779efd5Sopenharmony_ci          'type_id': 12,
5068779efd5Sopenharmony_ci        };
5078779efd5Sopenharmony_ci        DAHelper.insert(
5088779efd5Sopenharmony_ci          uri,
5098779efd5Sopenharmony_ci          websiteContact
5108779efd5Sopenharmony_ci        ).then(data => {
5118779efd5Sopenharmony_ci          if (data == -1) {
5128779efd5Sopenharmony_ci            HiLog.e(TAG, 'websiteContact-insert data failed!');
5138779efd5Sopenharmony_ci          }
5148779efd5Sopenharmony_ci          HiLog.d(TAG, 'websiteContact-insert data success!');
5158779efd5Sopenharmony_ci        }).catch(error => {
5168779efd5Sopenharmony_ci          HiLog.e(TAG, 'websiteContact-insert failed. Cause: %s', JSON.stringify(error.message));
5178779efd5Sopenharmony_ci        });
5188779efd5Sopenharmony_ci      });
5198779efd5Sopenharmony_ci    }
5208779efd5Sopenharmony_ci  },
5218779efd5Sopenharmony_ci
5228779efd5Sopenharmony_ci  /**
5238779efd5Sopenharmony_ci   * The relation information of the contact is saved to the database.
5248779efd5Sopenharmony_ci   *
5258779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
5268779efd5Sopenharmony_ci   * @param {string} DAHelper Database path
5278779efd5Sopenharmony_ci   * @param {number} result Contact ID
5288779efd5Sopenharmony_ci   * @param {string} uri Database address
5298779efd5Sopenharmony_ci   */
5308779efd5Sopenharmony_ci  relationsContact: function (addParams, DAHelper, result, uri) {
5318779efd5Sopenharmony_ci    if (!ArrayUtil.isEmpty(addParams.relationships)) {
5328779efd5Sopenharmony_ci      let index = 1;
5338779efd5Sopenharmony_ci      addParams.relationships.forEach(element => {
5348779efd5Sopenharmony_ci        if (StringUtil.isEmpty(element.name)) {
5358779efd5Sopenharmony_ci          return;
5368779efd5Sopenharmony_ci        }
5378779efd5Sopenharmony_ci        let relationsContact = {
5388779efd5Sopenharmony_ci          'raw_contact_id': result,
5398779efd5Sopenharmony_ci          'detail_info': element.name,
5408779efd5Sopenharmony_ci          'extend7': (index++).toString(),
5418779efd5Sopenharmony_ci          'custom_data': element.associatedType,
5428779efd5Sopenharmony_ci          'type_id': 13,
5438779efd5Sopenharmony_ci        };
5448779efd5Sopenharmony_ci        DAHelper.insert(
5458779efd5Sopenharmony_ci          uri,
5468779efd5Sopenharmony_ci          relationsContact
5478779efd5Sopenharmony_ci        ).then(data => {
5488779efd5Sopenharmony_ci          if (data == -1) {
5498779efd5Sopenharmony_ci            HiLog.e(TAG, 'relationsContact-insert data failed!');
5508779efd5Sopenharmony_ci          }
5518779efd5Sopenharmony_ci          HiLog.d(TAG, 'relationsContact-insert data success!');
5528779efd5Sopenharmony_ci        }).catch(error => {
5538779efd5Sopenharmony_ci          HiLog.e(TAG, 'relationsContact-insert failed. Cause: %s', JSON.stringify(error.message));
5548779efd5Sopenharmony_ci        });
5558779efd5Sopenharmony_ci      });
5568779efd5Sopenharmony_ci    }
5578779efd5Sopenharmony_ci  },
5588779efd5Sopenharmony_ci
5598779efd5Sopenharmony_ci  /**
5608779efd5Sopenharmony_ci   * Querying the Mobile Numbers of All Contacts
5618779efd5Sopenharmony_ci   *
5628779efd5Sopenharmony_ci   * @param {string} DAHelper
5638779efd5Sopenharmony_ci   * @param {Object} callBack
5648779efd5Sopenharmony_ci   */
5658779efd5Sopenharmony_ci  getAllContact: async function (actionData, callBack, context?) {
5668779efd5Sopenharmony_ci    HiLog.i(TAG, 'Start to query all contacts without PhoneNumbers');
5678779efd5Sopenharmony_ci    if (context) {
5688779efd5Sopenharmony_ci      ContactRepository.getInstance().init(context);
5698779efd5Sopenharmony_ci    }
5708779efd5Sopenharmony_ci    ContactRepository.getInstance().findAll(actionData, contactList => {
5718779efd5Sopenharmony_ci      if (ArrayUtil.isEmpty(contactList)) {
5728779efd5Sopenharmony_ci        HiLog.i(TAG, 'queryContacts-SelectcontactsModel queryContact resultSet is empty!');
5738779efd5Sopenharmony_ci        let emptyResult: ContactVo[] = [];
5748779efd5Sopenharmony_ci        callBack(emptyResult);
5758779efd5Sopenharmony_ci        return;
5768779efd5Sopenharmony_ci      }
5778779efd5Sopenharmony_ci      let resultList = [];
5788779efd5Sopenharmony_ci      for (let contactItem of contactList) {
5798779efd5Sopenharmony_ci        let jsonObj: ContactVo = new ContactVo('', '', '', '', '', '', true, '', '');
5808779efd5Sopenharmony_ci        jsonObj.contactId = contactItem.id.toString();
5818779efd5Sopenharmony_ci        jsonObj.emptyNameData = contactItem.displayName;
5828779efd5Sopenharmony_ci        jsonObj.namePrefix = contactItem.sortFirstLetter;
5838779efd5Sopenharmony_ci        jsonObj.nameSuffix = contactItem.photoFirstName;
5848779efd5Sopenharmony_ci        jsonObj.company = contactItem.company;
5858779efd5Sopenharmony_ci        jsonObj.position = contactItem.position;
5868779efd5Sopenharmony_ci        jsonObj.portraitColor = MorandiColor.Color[Math.abs(parseInt(jsonObj.contactId)) % 6];
5878779efd5Sopenharmony_ci        jsonObj.show = false;
5888779efd5Sopenharmony_ci        jsonObj.setShowName();
5898779efd5Sopenharmony_ci        resultList.push(jsonObj);
5908779efd5Sopenharmony_ci      }
5918779efd5Sopenharmony_ci      callBack(resultList);
5928779efd5Sopenharmony_ci      HiLog.i(TAG, 'End of querying all contacts');
5938779efd5Sopenharmony_ci    });
5948779efd5Sopenharmony_ci  },
5958779efd5Sopenharmony_ci
5968779efd5Sopenharmony_ci  /**
5978779efd5Sopenharmony_ci   * 查询所有联系人手机号
5988779efd5Sopenharmony_ci   *
5998779efd5Sopenharmony_ci   * @param {string} DAHelper 数据库地址
6008779efd5Sopenharmony_ci   * @param {Object} callBack 回调
6018779efd5Sopenharmony_ci   * @param {Object} addParams  Contact Information
6028779efd5Sopenharmony_ci   */
6038779efd5Sopenharmony_ci  getAllContactWithPhoneNumbers: function (callBack, addParams, context?) {
6048779efd5Sopenharmony_ci    HiLog.i(TAG, 'Start to query all contacts with PhoneNumbers');
6058779efd5Sopenharmony_ci    if (context) {
6068779efd5Sopenharmony_ci      ContactRepository.getInstance().init(context);
6078779efd5Sopenharmony_ci    }
6088779efd5Sopenharmony_ci    ContactRepository.getInstance().findByPhoneIsNotNull(addParams.favorite, addParams.editContact, contactList => {
6098779efd5Sopenharmony_ci      if (ArrayUtil.isEmpty(contactList)) {
6108779efd5Sopenharmony_ci        HiLog.i(TAG, 'getAllContactWithPhoneNumbers-SelectcontactsModel queryContact resultSet is empty!');
6118779efd5Sopenharmony_ci        let emptyResult: ContactVo[] = [];
6128779efd5Sopenharmony_ci        callBack(emptyResult);
6138779efd5Sopenharmony_ci        return;
6148779efd5Sopenharmony_ci      }
6158779efd5Sopenharmony_ci      let resultList = [];
6168779efd5Sopenharmony_ci      for (let contactItem of contactList) {
6178779efd5Sopenharmony_ci        let jsonObj: ContactVo = new ContactVo('', '', '', '', '', '', true, '', '');
6188779efd5Sopenharmony_ci        jsonObj.contactId = contactItem.id.toString();
6198779efd5Sopenharmony_ci        jsonObj.emptyNameData = contactItem.displayName;
6208779efd5Sopenharmony_ci        jsonObj.namePrefix = contactItem.sortFirstLetter;
6218779efd5Sopenharmony_ci        jsonObj.nameSuffix = contactItem.photoFirstName;
6228779efd5Sopenharmony_ci        jsonObj.company = contactItem.company;
6238779efd5Sopenharmony_ci        jsonObj.position = contactItem.position;
6248779efd5Sopenharmony_ci        jsonObj.portraitColor = MorandiColor.Color[Math.abs(parseInt(jsonObj.contactId)) % 6];
6258779efd5Sopenharmony_ci        jsonObj.show = false;
6268779efd5Sopenharmony_ci        jsonObj.phoneNumbers = contactItem.phoneNumbers;
6278779efd5Sopenharmony_ci        jsonObj.setShowName();
6288779efd5Sopenharmony_ci        resultList.push(jsonObj);
6298779efd5Sopenharmony_ci      }
6308779efd5Sopenharmony_ci      callBack(resultList);
6318779efd5Sopenharmony_ci      HiLog.i(TAG, 'End of querying all contacts');
6328779efd5Sopenharmony_ci    });
6338779efd5Sopenharmony_ci  },
6348779efd5Sopenharmony_ci
6358779efd5Sopenharmony_ci  /**
6368779efd5Sopenharmony_ci   * Obtain contact details.
6378779efd5Sopenharmony_ci   *
6388779efd5Sopenharmony_ci   * @param {Object} contactId Contact data ID.
6398779efd5Sopenharmony_ci   * @param {Object} callback Contact details
6408779efd5Sopenharmony_ci   */
6418779efd5Sopenharmony_ci  getContactById: function (contactId, callback, context?) {
6428779efd5Sopenharmony_ci    HiLog.i(TAG, 'Start to query contact by id.');
6438779efd5Sopenharmony_ci    if (context) {
6448779efd5Sopenharmony_ci      ContactRepository.getInstance().init(context);
6458779efd5Sopenharmony_ci    }
6468779efd5Sopenharmony_ci    ContactRepository.getInstance().findById(contactId, contact => {
6478779efd5Sopenharmony_ci      let res = {
6488779efd5Sopenharmony_ci        'data': {}
6498779efd5Sopenharmony_ci      };
6508779efd5Sopenharmony_ci      if (contact == undefined || ArrayUtil.isEmpty(contact.rowContacts)) {
6518779efd5Sopenharmony_ci        HiLog.e(TAG, 'Query contact by id failed.');
6528779efd5Sopenharmony_ci        callback(res);
6538779efd5Sopenharmony_ci        return;
6548779efd5Sopenharmony_ci      }
6558779efd5Sopenharmony_ci      let contactDetailInfo: any = {};
6568779efd5Sopenharmony_ci      for (let dataItem of contact.rowContacts[0].dataItems) {
6578779efd5Sopenharmony_ci        this.dealResult(dataItem, contactDetailInfo);
6588779efd5Sopenharmony_ci      }
6598779efd5Sopenharmony_ci      contactDetailInfo.id = contact.rowContacts[0].id;
6608779efd5Sopenharmony_ci      contactDetailInfo.photoFirstName = contact.rowContacts[0].values.get(RawContacts.PHOTO_FIRST_NAME);
6618779efd5Sopenharmony_ci      res.data = contactDetailInfo;
6628779efd5Sopenharmony_ci      callback(res);
6638779efd5Sopenharmony_ci      HiLog.i(TAG, 'End of querying contacts by ID.');
6648779efd5Sopenharmony_ci    });
6658779efd5Sopenharmony_ci  },
6668779efd5Sopenharmony_ci
6678779efd5Sopenharmony_ci  /**
6688779efd5Sopenharmony_ci   * Process contact details
6698779efd5Sopenharmony_ci   *
6708779efd5Sopenharmony_ci   * @param {Object} resultSet
6718779efd5Sopenharmony_ci   * @param {Object} contactDetailInfo Contact details data
6728779efd5Sopenharmony_ci   * @param {Object} actionData Contact data
6738779efd5Sopenharmony_ci   */
6748779efd5Sopenharmony_ci  dealResult: function (dataItem: DataItem, contactDetailInfo) {
6758779efd5Sopenharmony_ci    contactDetailInfo.favorite = dataItem.getFavorite();
6768779efd5Sopenharmony_ci    switch (dataItem.getContentTypeId()) {
6778779efd5Sopenharmony_ci      case DataItemType.NAME:
6788779efd5Sopenharmony_ci        contactDetailInfo.display_name = dataItem.getData();
6798779efd5Sopenharmony_ci        contactDetailInfo.nameUpdate = dataItem.getLabelId();
6808779efd5Sopenharmony_ci        break;
6818779efd5Sopenharmony_ci      case DataItemType.PHONE:
6828779efd5Sopenharmony_ci        let phone_element = {
6838779efd5Sopenharmony_ci          'num': dataItem.getData(),
6848779efd5Sopenharmony_ci          'id': dataItem.getLabelId(),
6858779efd5Sopenharmony_ci          'numType': dataItem.getLabelName()
6868779efd5Sopenharmony_ci        };
6878779efd5Sopenharmony_ci        if (contactDetailInfo.phones) {
6888779efd5Sopenharmony_ci          contactDetailInfo.phones.push(phone_element);
6898779efd5Sopenharmony_ci        } else {
6908779efd5Sopenharmony_ci          contactDetailInfo.phones = [phone_element];
6918779efd5Sopenharmony_ci        }
6928779efd5Sopenharmony_ci        break;
6938779efd5Sopenharmony_ci      case DataItemType.EMAIL:
6948779efd5Sopenharmony_ci        let email_element = {
6958779efd5Sopenharmony_ci          'address': dataItem.getData(),
6968779efd5Sopenharmony_ci          'id': dataItem.getLabelId(),
6978779efd5Sopenharmony_ci          'emailType': dataItem.getLabelName()
6988779efd5Sopenharmony_ci        };
6998779efd5Sopenharmony_ci        if (contactDetailInfo.emails) {
7008779efd5Sopenharmony_ci          contactDetailInfo.emails.push(email_element);
7018779efd5Sopenharmony_ci        } else {
7028779efd5Sopenharmony_ci          contactDetailInfo.emails = [email_element];
7038779efd5Sopenharmony_ci        }
7048779efd5Sopenharmony_ci        break;
7058779efd5Sopenharmony_ci      case DataItemType.NOTE:
7068779efd5Sopenharmony_ci        contactDetailInfo.remarks = dataItem.getData();
7078779efd5Sopenharmony_ci        break;
7088779efd5Sopenharmony_ci      case DataItemType.ORGANIZATION:
7098779efd5Sopenharmony_ci        contactDetailInfo.position = dataItem.values.get(Data.POSITION);
7108779efd5Sopenharmony_ci        contactDetailInfo.company = dataItem.getData();
7118779efd5Sopenharmony_ci        break;
7128779efd5Sopenharmony_ci      case DataItemType.IM:
7138779efd5Sopenharmony_ci        let aim_element = {
7148779efd5Sopenharmony_ci          'aimName': dataItem.getData(),
7158779efd5Sopenharmony_ci          'aimId': dataItem.getLabelId(),
7168779efd5Sopenharmony_ci          'aimType': dataItem.getLabelName()
7178779efd5Sopenharmony_ci        };
7188779efd5Sopenharmony_ci        if (contactDetailInfo.aims) {
7198779efd5Sopenharmony_ci          contactDetailInfo.aims.push(aim_element);
7208779efd5Sopenharmony_ci        } else {
7218779efd5Sopenharmony_ci          contactDetailInfo.aims = [aim_element];
7228779efd5Sopenharmony_ci        }
7238779efd5Sopenharmony_ci        break;
7248779efd5Sopenharmony_ci      case DataItemType.STRUCTURED_POSTAL:
7258779efd5Sopenharmony_ci        let house_element = {
7268779efd5Sopenharmony_ci          'houseName': dataItem.getData(),
7278779efd5Sopenharmony_ci          'houseId': dataItem.getLabelId(),
7288779efd5Sopenharmony_ci          'houseType': dataItem.getLabelName()
7298779efd5Sopenharmony_ci        };
7308779efd5Sopenharmony_ci        if (contactDetailInfo.houses) {
7318779efd5Sopenharmony_ci          contactDetailInfo.houses.push(house_element);
7328779efd5Sopenharmony_ci        } else {
7338779efd5Sopenharmony_ci          contactDetailInfo.houses = [house_element];
7348779efd5Sopenharmony_ci        }
7358779efd5Sopenharmony_ci        break;
7368779efd5Sopenharmony_ci      case DataItemType.GROUP_MEMBERSHIP:
7378779efd5Sopenharmony_ci        contactDetailInfo.nickname = dataItem.getData();
7388779efd5Sopenharmony_ci        break;
7398779efd5Sopenharmony_ci      case DataItemType.EVENT:
7408779efd5Sopenharmony_ci        let event_element = {
7418779efd5Sopenharmony_ci          'id': dataItem.getLabelId(),
7428779efd5Sopenharmony_ci          'data': dataItem.getData(),
7438779efd5Sopenharmony_ci          'eventType': dataItem.getLabelName(),
7448779efd5Sopenharmony_ci          'eventName': ''
7458779efd5Sopenharmony_ci        };
7468779efd5Sopenharmony_ci        if (contactDetailInfo.events) {
7478779efd5Sopenharmony_ci          contactDetailInfo.events.push(event_element);
7488779efd5Sopenharmony_ci        } else {
7498779efd5Sopenharmony_ci          contactDetailInfo.events = [event_element];
7508779efd5Sopenharmony_ci        }
7518779efd5Sopenharmony_ci        break;
7528779efd5Sopenharmony_ci      case DataItemType.WEBSITE:
7538779efd5Sopenharmony_ci        let website_element = dataItem.getData();
7548779efd5Sopenharmony_ci        if (contactDetailInfo.websites) {
7558779efd5Sopenharmony_ci          contactDetailInfo.websites.push(website_element);
7568779efd5Sopenharmony_ci        } else {
7578779efd5Sopenharmony_ci          contactDetailInfo.websites = [website_element];
7588779efd5Sopenharmony_ci        }
7598779efd5Sopenharmony_ci        break;
7608779efd5Sopenharmony_ci      case DataItemType.RELATION:
7618779efd5Sopenharmony_ci        let relation_element = {
7628779efd5Sopenharmony_ci          'id': dataItem.getLabelId(),
7638779efd5Sopenharmony_ci          'associatedPersonId': '',
7648779efd5Sopenharmony_ci          'name': dataItem.getData(),
7658779efd5Sopenharmony_ci          'associatedType': dataItem.getLabelName(),
7668779efd5Sopenharmony_ci        };
7678779efd5Sopenharmony_ci        if (contactDetailInfo.relationships) {
7688779efd5Sopenharmony_ci          contactDetailInfo.relationships.push(relation_element);
7698779efd5Sopenharmony_ci        } else {
7708779efd5Sopenharmony_ci          contactDetailInfo.relationships = [relation_element];
7718779efd5Sopenharmony_ci        }
7728779efd5Sopenharmony_ci        break;
7738779efd5Sopenharmony_ci    }
7748779efd5Sopenharmony_ci  },
7758779efd5Sopenharmony_ci
7768779efd5Sopenharmony_ci  /**
7778779efd5Sopenharmony_ci   * Obtains the contact ID of the number by phone number
7788779efd5Sopenharmony_ci   *
7798779efd5Sopenharmony_ci   * @param {string} DAHelper
7808779efd5Sopenharmony_ci   * @param {string} number Mobile number
7818779efd5Sopenharmony_ci   * @param {Object} callBack Contact ID
7828779efd5Sopenharmony_ci   */
7838779efd5Sopenharmony_ci  getContactIdByNumber: async function (DAHelper, number, callBack) {
7848779efd5Sopenharmony_ci    HiLog.i(TAG, 'Start to query contacts by phone number.');
7858779efd5Sopenharmony_ci    if (DAHelper == undefined || DAHelper.length == 0) {
7868779efd5Sopenharmony_ci      DAHelper = await dataShare.createDataShareHelper(globalThis.context, Contacts.CONTENT_URI);
7878779efd5Sopenharmony_ci    }
7888779efd5Sopenharmony_ci    if (StringUtil.isEmpty(number)) {
7898779efd5Sopenharmony_ci      return;
7908779efd5Sopenharmony_ci    }
7918779efd5Sopenharmony_ci    let resultColumns = [
7928779efd5Sopenharmony_ci      'raw_contact_id',
7938779efd5Sopenharmony_ci    ];
7948779efd5Sopenharmony_ci    let cleanNumber = StringUtil.removeSpace(number);
7958779efd5Sopenharmony_ci    let condition = new dataSharePredicates.DataSharePredicates();
7968779efd5Sopenharmony_ci    condition.equalTo('detail_info', cleanNumber);
7978779efd5Sopenharmony_ci    condition.and();
7988779efd5Sopenharmony_ci    condition.equalTo('is_deleted', 0);
7998779efd5Sopenharmony_ci    condition.and();
8008779efd5Sopenharmony_ci    condition.equalTo('type_id', '5');
8018779efd5Sopenharmony_ci    let resultSet = await DAHelper.query(Data.CONTENT_URI, resultColumns, condition);
8028779efd5Sopenharmony_ci    if (StringUtil.isEmpty(resultSet) || resultSet.rowCount == 0) {
8038779efd5Sopenharmony_ci      HiLog.i(TAG, 'getContactIdByNumber-contactId resultSet is empty!');
8048779efd5Sopenharmony_ci      callBack();
8058779efd5Sopenharmony_ci      return;
8068779efd5Sopenharmony_ci    }
8078779efd5Sopenharmony_ci    resultSet.goToFirstRow();
8088779efd5Sopenharmony_ci    let contactId = resultSet.getString(0);
8098779efd5Sopenharmony_ci    resultSet.close();
8108779efd5Sopenharmony_ci    callBack(contactId);
8118779efd5Sopenharmony_ci    HiLog.i(TAG, 'End of querying contacts by phone number.');
8128779efd5Sopenharmony_ci  },
8138779efd5Sopenharmony_ci
8148779efd5Sopenharmony_ci  /**
8158779efd5Sopenharmony_ci   * Edit Contact Information
8168779efd5Sopenharmony_ci   *
8178779efd5Sopenharmony_ci   * @param {string} DAHelper
8188779efd5Sopenharmony_ci   * @param {Object} addParams  Contact Information
8198779efd5Sopenharmony_ci   * @param {Object} callBack Contact ID
8208779efd5Sopenharmony_ci   */
8218779efd5Sopenharmony_ci  updateContact: async function (DAHelper, addParams, callBack, context?) {
8228779efd5Sopenharmony_ci    HiLog.i(TAG, 'Start to update contacts.');
8238779efd5Sopenharmony_ci    try {
8248779efd5Sopenharmony_ci      if (DAHelper == undefined || DAHelper.length == 0 || DAHelper == null) {
8258779efd5Sopenharmony_ci        DAHelper = await dataShare.createDataShareHelper(context ? context : globalThis.context, Contacts.CONTENT_URI);
8268779efd5Sopenharmony_ci      }
8278779efd5Sopenharmony_ci      let condition = new dataSharePredicates.DataSharePredicates();
8288779efd5Sopenharmony_ci      condition.equalTo('raw_contact_id', addParams.id);
8298779efd5Sopenharmony_ci      DAHelper.delete(
8308779efd5Sopenharmony_ci      Data.CONTENT_URI,
8318779efd5Sopenharmony_ci        condition,
8328779efd5Sopenharmony_ci      ).then(data => {
8338779efd5Sopenharmony_ci        this.dealParam(DAHelper, addParams, false, callBack);
8348779efd5Sopenharmony_ci      }).catch(error => {
8358779efd5Sopenharmony_ci        HiLog.e(TAG, 'updateContact-update contact error: %s', JSON.stringify(error.message));
8368779efd5Sopenharmony_ci      });
8378779efd5Sopenharmony_ci      HiLog.i(TAG, 'End to update contacts.');
8388779efd5Sopenharmony_ci    } catch(err) {
8398779efd5Sopenharmony_ci      HiLog.e(TAG, 'updateContact err : ' + JSON.stringify(err));
8408779efd5Sopenharmony_ci    }
8418779efd5Sopenharmony_ci  },
8428779efd5Sopenharmony_ci  /**
8438779efd5Sopenharmony_ci   * Querying IDs by Phone Number
8448779efd5Sopenharmony_ci   *
8458779efd5Sopenharmony_ci   * @param {string} DAHelper
8468779efd5Sopenharmony_ci   * @param {string} addParams  Phone number
8478779efd5Sopenharmony_ci   * @param {Object} callBack Contact ID array
8488779efd5Sopenharmony_ci   */
8498779efd5Sopenharmony_ci  getIdByTelephone: async function (number, callBack, context?) {
8508779efd5Sopenharmony_ci    HiLog.i(TAG, 'Start to query contactID by phone number.');
8518779efd5Sopenharmony_ci    let DAHelper = await dataShare.createDataShareHelper(context ?context : globalThis.context, Contacts.CONTENT_URI);
8528779efd5Sopenharmony_ci    let condition = new dataSharePredicates.DataSharePredicates();
8538779efd5Sopenharmony_ci    condition.equalTo('detail_info', number)
8548779efd5Sopenharmony_ci      .and()
8558779efd5Sopenharmony_ci      .equalTo('type_id', 5)
8568779efd5Sopenharmony_ci      .and()
8578779efd5Sopenharmony_ci      .equalTo('is_deleted', 0);
8588779efd5Sopenharmony_ci    let columns = ['raw_contact_id'];
8598779efd5Sopenharmony_ci    let data_row = await DAHelper.query(Data.CONTENT_URI, condition, columns);
8608779efd5Sopenharmony_ci    let resultList = [];
8618779efd5Sopenharmony_ci    if (data_row.rowCount <= 0) {
8628779efd5Sopenharmony_ci      data_row.close();
8638779efd5Sopenharmony_ci      callBack(resultList);
8648779efd5Sopenharmony_ci      return;
8658779efd5Sopenharmony_ci    }
8668779efd5Sopenharmony_ci    data_row.goToFirstRow();
8678779efd5Sopenharmony_ci    let maxRows = data_row.rowCount;
8688779efd5Sopenharmony_ci    let tempIndex = data_row.rowCount;
8698779efd5Sopenharmony_ci    let index = 0;
8708779efd5Sopenharmony_ci    do {
8718779efd5Sopenharmony_ci      resultList.push(data_row.getString(data_row.getColumnIndex('raw_contact_id')));
8728779efd5Sopenharmony_ci      if ((++index) >= maxRows) {
8738779efd5Sopenharmony_ci        data_row.close();
8748779efd5Sopenharmony_ci        callBack(resultList);
8758779efd5Sopenharmony_ci      }
8768779efd5Sopenharmony_ci      if (!data_row.goToNextRow()) {
8778779efd5Sopenharmony_ci        break;
8788779efd5Sopenharmony_ci      }
8798779efd5Sopenharmony_ci    } while ((--tempIndex) >= 0)
8808779efd5Sopenharmony_ci    data_row.close();
8818779efd5Sopenharmony_ci    HiLog.i(TAG, 'End to query contactID by phone number.');
8828779efd5Sopenharmony_ci  },
8838779efd5Sopenharmony_ci
8848779efd5Sopenharmony_ci  /**
8858779efd5Sopenharmony_ci   * Edit Contact Favorite
8868779efd5Sopenharmony_ci   *
8878779efd5Sopenharmony_ci   * @param {string} DAHelper
8888779efd5Sopenharmony_ci   * @param {Object} addParams  Contact Information
8898779efd5Sopenharmony_ci   * @param {Object} callBack Contact ID
8908779efd5Sopenharmony_ci   */
8918779efd5Sopenharmony_ci  updateFavorite: async function (DAHelper, addParams, callBack, context?) {
8928779efd5Sopenharmony_ci    HiLog.i(TAG, 'updateFavorite start.');
8938779efd5Sopenharmony_ci    if (DAHelper == undefined || DAHelper == null || DAHelper.length == 0) {
8948779efd5Sopenharmony_ci      DAHelper = await dataShare.createDataShareHelper(context ? context : globalThis.context, Contacts.CONTENT_URI);
8958779efd5Sopenharmony_ci    }
8968779efd5Sopenharmony_ci    let condition = new dataSharePredicates.DataSharePredicates();
8978779efd5Sopenharmony_ci    condition.equalTo('contact_id', addParams.id);
8988779efd5Sopenharmony_ci    const va = {
8998779efd5Sopenharmony_ci      'favorite': addParams.favorite,
9008779efd5Sopenharmony_ci    }
9018779efd5Sopenharmony_ci      DAHelper.update(
9028779efd5Sopenharmony_ci      RawContacts.CONTENT_URI,
9038779efd5Sopenharmony_ci        condition,
9048779efd5Sopenharmony_ci        va
9058779efd5Sopenharmony_ci      ).then(data => {
9068779efd5Sopenharmony_ci        if (data == -1) {
9078779efd5Sopenharmony_ci          HiLog.e(TAG, 'updateFavorite data failed!');
9088779efd5Sopenharmony_ci        }
9098779efd5Sopenharmony_ci        HiLog.i(TAG, 'updateFavorite data success!');
9108779efd5Sopenharmony_ci        callBack(addParams.favorite)
9118779efd5Sopenharmony_ci      }).catch(err => {
9128779efd5Sopenharmony_ci        HiLog.e(TAG, 'updateFavorite failed. Cause: ' + JSON.stringify(err.message));
9138779efd5Sopenharmony_ci      });
9148779efd5Sopenharmony_ci    HiLog.i(TAG, 'updateFavorite end.');
9158779efd5Sopenharmony_ci  },
9168779efd5Sopenharmony_ci
9178779efd5Sopenharmony_ci  /**
9188779efd5Sopenharmony_ci   * Querying the Mobile Numbers of All Favorites
9198779efd5Sopenharmony_ci   *
9208779efd5Sopenharmony_ci   * @param {string} DAHelper
9218779efd5Sopenharmony_ci   * @param {Object} callBack
9228779efd5Sopenharmony_ci   */
9238779efd5Sopenharmony_ci  getAllFavorite: async function (actionData, callBack, context?) {
9248779efd5Sopenharmony_ci    HiLog.i(TAG, 'getAllFavorite start.');
9258779efd5Sopenharmony_ci    if (context) {
9268779efd5Sopenharmony_ci      ContactRepository.getInstance().init(context);
9278779efd5Sopenharmony_ci      ContactRepository.getInstance().findAllFavorite(actionData, favoriteList => {
9288779efd5Sopenharmony_ci        if (ArrayUtil.isEmpty(favoriteList)) {
9298779efd5Sopenharmony_ci          let emptyResult: FavoriteBean[] = [];
9308779efd5Sopenharmony_ci          callBack(emptyResult);
9318779efd5Sopenharmony_ci          return;
9328779efd5Sopenharmony_ci        }
9338779efd5Sopenharmony_ci        let resultList = [];
9348779efd5Sopenharmony_ci        for (let contactItem of favoriteList) {
9358779efd5Sopenharmony_ci          let jsonObj: FavoriteBean = new FavoriteBean('', -1, '', '', '', '', '', true, '', false, 0, '');
9368779efd5Sopenharmony_ci          jsonObj.contactId = contactItem.id.toString();
9378779efd5Sopenharmony_ci          jsonObj.isCommonUseType = 0;
9388779efd5Sopenharmony_ci          jsonObj.displayName = contactItem.displayName;
9398779efd5Sopenharmony_ci          jsonObj.namePrefix = contactItem.sortFirstLetter;
9408779efd5Sopenharmony_ci          jsonObj.nameSuffix = contactItem.photoFirstName;
9418779efd5Sopenharmony_ci          jsonObj.position = contactItem.position;
9428779efd5Sopenharmony_ci          jsonObj.portraitColor = MorandiColor.Color[Math.abs(parseInt(jsonObj.contactId)) % 6];
9438779efd5Sopenharmony_ci          jsonObj.show = contactItem.show;
9448779efd5Sopenharmony_ci          jsonObj.isUsuallyShow = false;
9458779efd5Sopenharmony_ci          jsonObj.favorite = 1;
9468779efd5Sopenharmony_ci          jsonObj.setShowName();
9478779efd5Sopenharmony_ci          resultList.push(jsonObj);
9488779efd5Sopenharmony_ci        }
9498779efd5Sopenharmony_ci        HiLog.i(TAG, 'getAllFavorite data success!');
9508779efd5Sopenharmony_ci        callBack(resultList);
9518779efd5Sopenharmony_ci      });
9528779efd5Sopenharmony_ci    }
9538779efd5Sopenharmony_ci    HiLog.i(TAG, 'getAllFavorite end.');
9548779efd5Sopenharmony_ci  },
9558779efd5Sopenharmony_ci
9568779efd5Sopenharmony_ci  /**
9578779efd5Sopenharmony_ci   * Query call records
9588779efd5Sopenharmony_ci   *
9598779efd5Sopenharmony_ci   * @param {string} DAHelper
9608779efd5Sopenharmony_ci   * @param {Object} callBack call records
9618779efd5Sopenharmony_ci   */
9628779efd5Sopenharmony_ci  getAllUsually: async function (actionData, callBack, context?) {
9638779efd5Sopenharmony_ci    HiLog.i(TAG, 'getAllUsually start.');
9648779efd5Sopenharmony_ci    if (context) {
9658779efd5Sopenharmony_ci      ContactRepository.getInstance().init(context);
9668779efd5Sopenharmony_ci      ContactRepository.getInstance().findAllUsually(actionData, callLog => {
9678779efd5Sopenharmony_ci        if (ArrayUtil.isEmpty(callLog)) {
9688779efd5Sopenharmony_ci          let emptyResult: CallLog[] = [];
9698779efd5Sopenharmony_ci          callBack(emptyResult);
9708779efd5Sopenharmony_ci          return;
9718779efd5Sopenharmony_ci        }
9728779efd5Sopenharmony_ci        let resultList = [];
9738779efd5Sopenharmony_ci        resultList = callLog;
9748779efd5Sopenharmony_ci        HiLog.i(TAG, 'getAllUsually data success! ');
9758779efd5Sopenharmony_ci        callBack(resultList);
9768779efd5Sopenharmony_ci      });
9778779efd5Sopenharmony_ci    }
9788779efd5Sopenharmony_ci    HiLog.i(TAG, 'getAllUsually end.');
9798779efd5Sopenharmony_ci  },
9808779efd5Sopenharmony_ci
9818779efd5Sopenharmony_ci  /**
9828779efd5Sopenharmony_ci   * DisplayName Query Favorite
9838779efd5Sopenharmony_ci   *
9848779efd5Sopenharmony_ci   * @param {string} DAHelper
9858779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
9868779efd5Sopenharmony_ci   * @param {Object} callBack Contact Information
9878779efd5Sopenharmony_ci   */
9888779efd5Sopenharmony_ci  getDisplayNamesFindUsually:  async function (displayName, usuallyPhone, callBack, context?){
9898779efd5Sopenharmony_ci    HiLog.i(TAG, 'getDisplayNamesFindUsually start.');
9908779efd5Sopenharmony_ci    if (context) {
9918779efd5Sopenharmony_ci      ContactRepository.getInstance().init(context);
9928779efd5Sopenharmony_ci      ContactRepository.getInstance().getDisplayNameByFavorite(displayName, usuallyPhone, favoriteList => {
9938779efd5Sopenharmony_ci        if (ArrayUtil.isEmpty(favoriteList)) {
9948779efd5Sopenharmony_ci          let emptyResult: FavoriteBean[] = [];
9958779efd5Sopenharmony_ci          callBack(emptyResult);
9968779efd5Sopenharmony_ci          return;
9978779efd5Sopenharmony_ci        }
9988779efd5Sopenharmony_ci        let resultList = [];
9998779efd5Sopenharmony_ci        for (let i = 0; i < favoriteList.length; i++) {
10008779efd5Sopenharmony_ci          let jsonObj: FavoriteBean = new FavoriteBean('', -1, '', '', '', '', '', false, '', false, 0, '');
10018779efd5Sopenharmony_ci          jsonObj.contactId = favoriteList[i].id.toString();
10028779efd5Sopenharmony_ci          jsonObj.isCommonUseType = 1;
10038779efd5Sopenharmony_ci          jsonObj.displayName = favoriteList[i].displayName;
10048779efd5Sopenharmony_ci          jsonObj.namePrefix = favoriteList[i].sortFirstLetter;
10058779efd5Sopenharmony_ci          jsonObj.nameSuffix = favoriteList[i].photoFirstName;
10068779efd5Sopenharmony_ci          jsonObj.position = favoriteList[i].position;
10078779efd5Sopenharmony_ci          jsonObj.portraitColor = MorandiColor.Color[Math.abs(parseInt(jsonObj.contactId)) % 6];
10088779efd5Sopenharmony_ci          jsonObj.show = favoriteList[i].show;
10098779efd5Sopenharmony_ci          jsonObj.isUsuallyShow = false;
10108779efd5Sopenharmony_ci          jsonObj.favorite = 0;
10118779efd5Sopenharmony_ci          jsonObj.phoneNum = favoriteList[i].detailInfo;
10128779efd5Sopenharmony_ci          jsonObj.setShowName();
10138779efd5Sopenharmony_ci          resultList.push(jsonObj);
10148779efd5Sopenharmony_ci        }
10158779efd5Sopenharmony_ci        HiLog.i(TAG, 'getDisplayNamesFindUsually sc.');
10168779efd5Sopenharmony_ci        callBack(resultList);
10178779efd5Sopenharmony_ci      })
10188779efd5Sopenharmony_ci    }
10198779efd5Sopenharmony_ci    HiLog.i(TAG, 'getDisplayNamesFindUsually end! ');
10208779efd5Sopenharmony_ci  },
10218779efd5Sopenharmony_ci
10228779efd5Sopenharmony_ci  /**
10238779efd5Sopenharmony_ci   * Move Favorite Data Sorting
10248779efd5Sopenharmony_ci   *
10258779efd5Sopenharmony_ci   * @param {string} DAHelper
10268779efd5Sopenharmony_ci   * @param {Object} addParams Contact Information
10278779efd5Sopenharmony_ci   * @param {Object} callBack favoriteOrder
10288779efd5Sopenharmony_ci   */
10298779efd5Sopenharmony_ci  moveSortFavorite: async function (DAHelper, addParams, callBack, context?) {
10308779efd5Sopenharmony_ci    HiLog.i(TAG, 'moveSortFavorite start.');
10318779efd5Sopenharmony_ci    if (DAHelper == undefined || DAHelper == null || DAHelper.length == 0) {
10328779efd5Sopenharmony_ci      DAHelper = await dataShare.createDataShareHelper(context ? context : globalThis.context, Contacts.CONTENT_URI);
10338779efd5Sopenharmony_ci    }
10348779efd5Sopenharmony_ci    let condition = new dataSharePredicates.DataSharePredicates();
10358779efd5Sopenharmony_ci    condition.equalTo('contact_id', addParams.id);
10368779efd5Sopenharmony_ci    const va = {
10378779efd5Sopenharmony_ci      'favorite_order': addParams.favoriteOrder > 9 ? addParams.favoriteOrder : '0' + addParams.favoriteOrder
10388779efd5Sopenharmony_ci    }
10398779efd5Sopenharmony_ci    DAHelper.update(
10408779efd5Sopenharmony_ci    RawContacts.CONTENT_URI,
10418779efd5Sopenharmony_ci      condition,
10428779efd5Sopenharmony_ci      va
10438779efd5Sopenharmony_ci    ).then(data => {
10448779efd5Sopenharmony_ci      if (data == -1) {
10458779efd5Sopenharmony_ci        HiLog.e(TAG, 'moveSortFavorite data failed!');
10468779efd5Sopenharmony_ci        callBack('')
10478779efd5Sopenharmony_ci        return;
10488779efd5Sopenharmony_ci      }
10498779efd5Sopenharmony_ci      HiLog.i(TAG, 'moveSortFavorite data success!');
10508779efd5Sopenharmony_ci      callBack(addParams.favoriteOrder);
10518779efd5Sopenharmony_ci    }).catch(err => {
10528779efd5Sopenharmony_ci      HiLog.e(TAG, 'moveSortFavorite failed. Cause: ' + JSON.stringify(err.message));
10538779efd5Sopenharmony_ci    });
10548779efd5Sopenharmony_ci    HiLog.i(TAG, 'End to update moveSortFavorite.');
10558779efd5Sopenharmony_ci  },
10568779efd5Sopenharmony_ci
10578779efd5Sopenharmony_ci  /**
10588779efd5Sopenharmony_ci   * Querying the Mobile Numbers of Search Contacts
10598779efd5Sopenharmony_ci   *
10608779efd5Sopenharmony_ci   * @param {string} DAHelper
10618779efd5Sopenharmony_ci   * @param {Object} callBack
10628779efd5Sopenharmony_ci   */
10638779efd5Sopenharmony_ci  getSearchContact: async function (actionData, callBack, context?) {
10648779efd5Sopenharmony_ci    HiLog.i(TAG, 'getSearchContact start.');
10658779efd5Sopenharmony_ci    if (context) {
10668779efd5Sopenharmony_ci      ContactRepository.getInstance().init(context);
10678779efd5Sopenharmony_ci    }
10688779efd5Sopenharmony_ci    ContactRepository.getInstance().searchContact(actionData, contactList => {
10698779efd5Sopenharmony_ci      if (ArrayUtil.isEmpty(contactList)) {
10708779efd5Sopenharmony_ci        HiLog.i(TAG, 'getSearchContact resultSet is empty!');
10718779efd5Sopenharmony_ci        let emptyResult: SearchContactsBean[] = [];
10728779efd5Sopenharmony_ci        callBack(emptyResult);
10738779efd5Sopenharmony_ci        return;
10748779efd5Sopenharmony_ci      }
10758779efd5Sopenharmony_ci      let resultList = [];
10768779efd5Sopenharmony_ci      for (let contactItem of contactList) {
10778779efd5Sopenharmony_ci        let jsonObj: SearchContactsBean = new SearchContactsBean('', '', '', '', '', '', '', '', '', 0,'', '', '', '', '', '');
10788779efd5Sopenharmony_ci        jsonObj.id = contactItem.id.toString();
10798779efd5Sopenharmony_ci        jsonObj.accountId = contactItem.accountId;
10808779efd5Sopenharmony_ci        jsonObj.contactId = contactItem.contactId;
10818779efd5Sopenharmony_ci        jsonObj.rawContactId = contactItem.rawContactId;
10828779efd5Sopenharmony_ci        jsonObj.searchName = contactItem.searchName;
10838779efd5Sopenharmony_ci        jsonObj.displayName = contactItem.displayName;
10848779efd5Sopenharmony_ci        jsonObj.phoneticName = contactItem.phoneticName;
10858779efd5Sopenharmony_ci        jsonObj.photoId = contactItem.photoId;
10868779efd5Sopenharmony_ci        jsonObj.photoFileId = contactItem.photoFileId;
10878779efd5Sopenharmony_ci        jsonObj.isDeleted = contactItem.isDeleted;
10888779efd5Sopenharmony_ci        jsonObj.position = contactItem.position;
10898779efd5Sopenharmony_ci        jsonObj.sortFirstLetter = contactItem.sortFirstLetter;
10908779efd5Sopenharmony_ci        jsonObj.photoFirstName = contactItem.photoFirstName;
10918779efd5Sopenharmony_ci        jsonObj.portraitColor = MorandiColor.Color[Math.abs(parseInt(jsonObj.contactId)) % 6];
10928779efd5Sopenharmony_ci        jsonObj.detailInfo = contactItem.detailInfo;
10938779efd5Sopenharmony_ci        jsonObj.hasPhoneNumber = contactItem.hasPhoneNumber;
10948779efd5Sopenharmony_ci        resultList.push(jsonObj);
10958779efd5Sopenharmony_ci      }
10968779efd5Sopenharmony_ci      callBack(resultList);
10978779efd5Sopenharmony_ci      HiLog.i(TAG, 'getSearchContact end.');
10988779efd5Sopenharmony_ci    });
10998779efd5Sopenharmony_ci  },
11008779efd5Sopenharmony_ci
11018779efd5Sopenharmony_ci  getQueryT9PhoneNumbers: function (callBack, addParams, context?) {
11028779efd5Sopenharmony_ci    if (context) {
11038779efd5Sopenharmony_ci      ContactRepository.getInstance().init(context);
11048779efd5Sopenharmony_ci    }
11058779efd5Sopenharmony_ci    ContactRepository.getInstance().queryT9PhoneIsNotNull(addParams.favorite, contactList => {
11068779efd5Sopenharmony_ci      if (ArrayUtil.isEmpty(contactList)) {
11078779efd5Sopenharmony_ci        HiLog.i(TAG, 'getQueryT9PhoneNumbers queryContact resultSet is empty!');
11088779efd5Sopenharmony_ci        let emptyResult: ContactVo[] = [];
11098779efd5Sopenharmony_ci        callBack(emptyResult);
11108779efd5Sopenharmony_ci        return;
11118779efd5Sopenharmony_ci      }
11128779efd5Sopenharmony_ci      let resultList = [];
11138779efd5Sopenharmony_ci      for (let contactItem of contactList) {
11148779efd5Sopenharmony_ci        let jsonObj: ContactVo = new ContactVo('', '', '', '', '', '', true, '', '');
11158779efd5Sopenharmony_ci        jsonObj.contactId = contactItem.id.toString();
11168779efd5Sopenharmony_ci        jsonObj.emptyNameData = contactItem.displayName;
11178779efd5Sopenharmony_ci        jsonObj.namePrefix = contactItem.sortFirstLetter;
11188779efd5Sopenharmony_ci        jsonObj.nameSuffix = contactItem.photoFirstName;
11198779efd5Sopenharmony_ci        jsonObj.company = contactItem.company;
11208779efd5Sopenharmony_ci        jsonObj.position = contactItem.position;
11218779efd5Sopenharmony_ci        jsonObj.portraitColor = MorandiColor.Color[Math.abs(parseInt(jsonObj.contactId)) % 6];
11228779efd5Sopenharmony_ci        jsonObj.show = false;
11238779efd5Sopenharmony_ci        jsonObj.phoneNumbers = contactItem.phoneNumbers;
11248779efd5Sopenharmony_ci        jsonObj.setShowName();
11258779efd5Sopenharmony_ci        resultList.push(jsonObj);
11268779efd5Sopenharmony_ci      }
11278779efd5Sopenharmony_ci      callBack(resultList);
11288779efd5Sopenharmony_ci      HiLog.i(TAG, 'End of querying all contacts');
11298779efd5Sopenharmony_ci    });
11308779efd5Sopenharmony_ci  },
11318779efd5Sopenharmony_ci}