contact = (ctsvc_contact_s *)record;
ret = __ctsvc_db_get_contact_base_info(id, contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("cts_get_main_contacts_info(ALL) Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_get_contact_base_info(ALL) Failed(%d)", ret);
contacts_record_destroy(record, true);
return ret;
}
contact->has_email = ctsvc_contact_check_default_email((contacts_list_h)contact->emails);
if (contact->images)
ctsvc_contact_check_default_image((contacts_list_h)contact->images);
+ if (contact->postal_addrs)
+ ctsvc_contact_check_default_address((contacts_list_h)contact->postal_addrs);
}
static inline int __ctsvc_contact_update_grouprel(int contact_id, contacts_list_h group_list)
if (NULL == grouprel)
continue;
+ RETVM_IF(grouprel->group_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "group_id(%d) invalid", grouprel->group_id);
if (grouprel->group_id) {
ret = ctsvc_group_add_contact_in_transaction(grouprel->group_id, contact_id);
RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_db_group_set_relation() Failed(%d)", ret);
if (NULL == grouprel)
continue;
+ RETVM_IF(grouprel->group_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "group_id(%d) invalid", grouprel->group_id);
if (grouprel->group_id) {
int ret = ctsvc_group_add_contact_in_transaction(grouprel->group_id, contact_id);
RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_db_group_set_relation() Failed(%d)", ret);
contacts_list_get_current_record_p(image_list, (contacts_record_h*)&image);
if (NULL != image && image->path && *image->path) {
image->is_default = true;
+ ctsvc_record_set_property_flag((ctsvc_record_s *)image, _contacts_image.is_default, CTSVC_PROPERTY_FLAG_DIRTY);
has_default = true;
break;
}
return CONTACTS_ERROR_NONE;
}
+bool ctsvc_contact_check_default_address(contacts_list_h address_list)
+{
+ bool has_default = false;
+ ctsvc_address_s* address;
+ unsigned int count;
+ int ret;
+
+ RETV_IF(NULL == address_list, false);
+
+ ret = contacts_list_get_count(address_list, &count);
+ if (CONTACTS_ERROR_NONE !=ret || 0 == count) {
+ CTS_DBG("list get count failed (%d)", count);
+ return false;
+ }
+
+ contacts_list_first(address_list);
+ do {
+ contacts_list_get_current_record_p(address_list, (contacts_record_h*)&address);
+ if (NULL != address &&
+ (address->pobox || address->postalcode || address->region || address->locality
+ || address->street || address->extended || address->country)) {
+ if (address->is_default && false == has_default)
+ has_default = true;
+ else if (has_default)
+ address->is_default = false;
+ }
+ }while(CONTACTS_ERROR_NONE == contacts_list_next(address_list));
+
+ if (false == has_default) {
+ contacts_list_first(address_list);
+ do {
+ contacts_list_get_current_record_p(address_list, (contacts_record_h*)&address);
+ if (NULL != address &&
+ (address->pobox || address->postalcode || address->region || address->locality
+ || address->street || address->extended || address->country)) {
+ address->is_default = true;
+ ctsvc_record_set_property_flag((ctsvc_record_s *)address, _contacts_address.is_default, CTSVC_PROPERTY_FLAG_DIRTY);
+ has_default = true;
+ break;
+ }
+ }while(CONTACTS_ERROR_NONE == contacts_list_next(address_list));
+ }
+ return CONTACTS_ERROR_NONE;
+}
+
int ctsvc_contact_update_data_name(contacts_list_h name_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
do {
contacts_list_get_current_record_p(number_list, &record);
number = (ctsvc_number_s*)record;
- if (number->number) {
- if (0 < number->id) {
- if (number->number)
- ret = ctsvc_db_number_update(record, is_my_profile);
- else
- ret = ctsvc_db_number_delete(number->id, is_my_profile);
+ if (0 < number->id) {
+ if (number->number) {
+ ret = ctsvc_db_number_update(record, is_my_profile);
+ had = true;
}
else
- ret = ctsvc_db_number_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret) {
- CTS_ERR("DB error : return (%d)", ret);
- break;
- }
+ ret = ctsvc_db_number_delete(number->id, is_my_profile);
+ }
+ else if (number->number) {
+ ret = ctsvc_db_number_insert(record, contact_id, is_my_profile, NULL);
had = true;
}
+ if (CONTACTS_ERROR_DB == ret) {
+ CTS_ERR("DB error : return (%d)", ret);
+ break;
+ }
}while(CONTACTS_ERROR_NONE == contacts_list_next(number_list));
*had_phonenumber = had;
do {
contacts_list_get_current_record_p(email_list, &record);
email = (ctsvc_email_s*)record;
- if (email->email_addr) {
- if (0 < email->id) {
- if (email->email_addr)
- ret = ctsvc_db_email_update(record, is_my_profile);
- else
- ret = ctsvc_db_email_delete(email->id, is_my_profile);
+
+ if (0 < email->id) {
+ if (email->email_addr) {
+ ret = ctsvc_db_email_update(record, is_my_profile);
+ had = true;
}
else
- ret = ctsvc_db_email_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
- CTS_ERR("DB error : return (%d)", ret);
- break;
- }
+ ret = ctsvc_db_email_delete(email->id, is_my_profile);
+ }
+ else if (email->email_addr) {
+ ret = ctsvc_db_email_insert(record, contact_id, is_my_profile, NULL);
had = true;
}
+ if (CONTACTS_ERROR_DB == ret){
+ CTS_ERR("DB error : return (%d)", ret);
+ break;
+ }
}while(CONTACTS_ERROR_NONE == contacts_list_next(email_list));
*had_email = had;
bool ctsvc_contact_check_default_number(contacts_list_h number_list);
bool ctsvc_contact_check_default_email(contacts_list_h email_list);
+bool ctsvc_contact_check_default_address(contacts_list_h address_list);
bool ctsvc_contact_check_default_image(contacts_list_h image_list);
bool ctsvc_contact_check_image_location(const char *path);
.replace_records = NULL,
};
-
-static int __ctsvc_db_image_reset_default(int image_id, int contact_id)
-{
- int ret;
- char query[CTS_SQL_MAX_LEN] = {0};
-
- snprintf(query, sizeof(query),
- "UPDATE "CTS_TABLE_DATA" SET is_default=0, is_primary_default=0 WHERE id != %d AND contact_id = %d AND datatype=%d",
- image_id, contact_id, CTSVC_DATA_IMAGE);
- ret = ctsvc_query_exec(query);
-
- WARN_IF(CONTACTS_ERROR_NONE != ret, "cts_query_exec() Failed(%d)", ret);
- return ret;
-}
-
static int __ctsvc_db_image_get_default_image_id(int contact_id)
{
int ret;
return ret;
}
- old_default_image_id = __ctsvc_db_image_get_default_image_id(image->contact_id);
- if (0 == old_default_image_id)
- image->is_default = true;
-
snprintf(query, sizeof(query),
"SELECT contact_id, person_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", image->contact_id);
stmt = cts_query_prepare(query);
person_id = ctsvc_stmt_get_int(stmt, 1);
cts_stmt_finalize(stmt);
+ old_default_image_id = __ctsvc_db_image_get_default_image_id(image->contact_id);
+ if (0 == old_default_image_id)
+ image->is_default = true;
+
ret = ctsvc_db_image_insert(record, image->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
int primary_default_contact_id;
primary_default_contact_id = __ctsvc_db_image_get_primary_default_contact_id(person_id);
- __ctsvc_db_image_reset_default(*id, contact_id);
+ ctsvc_db_image_reset_default(*id, contact_id);
if (primary_default_contact_id == 0 || primary_default_contact_id == contact_id) {
__ctsvc_db_image_set_primary_default(*id, true);
int primary_default_contact_id;
primary_default_contact_id = __ctsvc_db_image_get_primary_default_contact_id(contact_id);
- __ctsvc_db_image_reset_default(image->id, contact_id);
+ ctsvc_db_image_reset_default(image->id, contact_id);
if (contact_id == primary_default_contact_id) {
__ctsvc_db_image_set_primary_default(image->id, true);
return CONTACTS_ERROR_NONE;
}
+int ctsvc_db_image_reset_default(int image_id, int contact_id)
+{
+ int ret;
+ char query[CTS_SQL_MAX_LEN] = {0};
+
+ snprintf(query, sizeof(query),
+ "UPDATE "CTS_TABLE_DATA" SET is_default=0, is_primary_default=0 WHERE id != %d AND contact_id = %d AND datatype=%d",
+ image_id, contact_id, CTSVC_DATA_IMAGE);
+ ret = ctsvc_query_exec(query);
+
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "cts_query_exec() Failed(%d)", ret);
+ return ret;
+}
+
int ctsvc_db_image_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
image_id = cts_db_get_next_id(CTS_TABLE_DATA);
ret = ctsvc_contact_add_image_file(contact_id, image_id, image->path, image_path, sizeof(image_path));
-
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_add_image_file(NORMAL) Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_add_image_file() Failed(%d)", ret);
return ret;
}
free(image->path);
//image->id = cts_db_get_last_insert_id();
if (id)
- *id = cts_db_get_last_insert_id();
+ *id = image_id;
cts_stmt_finalize(stmt);
+ if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_image.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
+ if (image->is_default)
+ ctsvc_db_image_reset_default(image_id, contact_id);
+ }
+
if (!is_my_profile)
ctsvc_set_image_noti();
}
}
+ if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_image.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
+ if (image->is_default)
+ ctsvc_db_image_reset_default(image->id, contact_id);
+ }
+
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, image->id))) break;
int ctsvc_db_image_delete(int id, bool is_my_profile);
int ctsvc_db_image_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
void ctsvc_db_image_delete_callback(sqlite3_context *context, int argc, sqlite3_value ** argv);
+int ctsvc_db_image_reset_default(int image_id, int contact_id);
#endif // __CTSVC_DB_PLUGIN_RELATIONSHIP_HELPER_H__
ctsvc_contact_check_default_number((contacts_list_h)my_profile->numbers);
ctsvc_contact_check_default_email((contacts_list_h)my_profile->emails);
ctsvc_contact_check_default_image((contacts_list_h)my_profile->images);
+ ctsvc_contact_check_default_address((contacts_list_h)my_profile->postal_addrs);
}
static void __ctsvc_make_my_profile_display_name(ctsvc_my_profile_s *my_profile)