4 * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
22 #include "ctsvc_service.h"
23 #include "ctsvc_db_init.h"
25 #include "ctsvc_ipc_marshal.h"
26 #include "ctsvc_internal.h"
27 #include "ctsvc_ipc_server.h"
28 #include "ctsvc_utils.h"
31 void ctsvc_ipc_activity_delete_by_contact_id(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
33 int ret = CONTACTS_ERROR_NONE;
38 ret = ctsvc_ipc_unmarshal_int(indata, &contact_id);
39 if (ret != CONTACTS_ERROR_NONE)
41 ERR("ctsvc_ipc_unmarshal_int fail");
47 ERR("ctsvc_ipc_server_db_insert_record fail");
51 ret = contacts_activity_delete_by_contact_id(contact_id);
58 *outdata = pims_ipc_data_create(0);
61 ERR("pims_ipc_data_create fail");
64 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
66 pims_ipc_data_destroy(*outdata);
68 ERR("pims_ipc_data_put fail");
72 if (ret == CONTACTS_ERROR_NONE) {
73 int transaction_ver = ctsvc_get_transaction_ver();
74 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
75 pims_ipc_data_destroy(*outdata);
77 ERR("ctsvc_ipc_marshal_int fail");
84 ERR("outdata is NULL");
90 void ctsvc_ipc_activity_delete_by_account_id(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
92 int ret = CONTACTS_ERROR_NONE;
97 ret = ctsvc_ipc_unmarshal_int(indata, &account_id);
98 if (ret != CONTACTS_ERROR_NONE)
100 ERR("ctsvc_ipc_unmarshal_int fail");
106 ERR("ctsvc_ipc_activity_delete_by_account_id fail");
110 ret = contacts_activity_delete_by_account_id(account_id);
116 *outdata = pims_ipc_data_create(0);
119 ERR("pims_ipc_data_create fail");
122 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
124 pims_ipc_data_destroy(*outdata);
126 ERR("pims_ipc_data_put fail");
130 if (ret == CONTACTS_ERROR_NONE) {
131 int transaction_ver = ctsvc_get_transaction_ver();
132 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
133 pims_ipc_data_destroy(*outdata);
135 ERR("ctsvc_ipc_marshal_int fail");
142 ERR("outdata is NULL");
148 void ctsvc_ipc_group_add_contact(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
150 int ret = CONTACTS_ERROR_NONE;
156 ret = ctsvc_ipc_unmarshal_int(indata, &group_id);
157 if (ret != CONTACTS_ERROR_NONE)
159 ERR("ctsvc_ipc_unmarshal_int fail");
162 ret = ctsvc_ipc_unmarshal_int(indata, &contact_id);
163 if (ret != CONTACTS_ERROR_NONE)
165 ERR("ctsvc_ipc_unmarshal_int fail");
171 ERR("ctsvc_ipc_group_add_contact fail");
175 ret = contacts_group_add_contact(group_id, contact_id);
181 *outdata = pims_ipc_data_create(0);
184 ERR("pims_ipc_data_create fail");
187 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
189 pims_ipc_data_destroy(*outdata);
191 ERR("pims_ipc_data_put fail");
195 if (ret == CONTACTS_ERROR_NONE) {
196 int transaction_ver = ctsvc_get_transaction_ver();
197 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
198 pims_ipc_data_destroy(*outdata);
200 ERR("ctsvc_ipc_marshal_int fail");
207 ERR("outdata is NULL");
213 void ctsvc_ipc_group_remove_contact(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
215 int ret = CONTACTS_ERROR_NONE;
221 ret = ctsvc_ipc_unmarshal_int(indata, &group_id);
222 if (ret != CONTACTS_ERROR_NONE)
224 ERR("ctsvc_ipc_unmarshal_int fail");
227 ret = ctsvc_ipc_unmarshal_int(indata, &contact_id);
228 if (ret != CONTACTS_ERROR_NONE)
230 ERR("ctsvc_ipc_unmarshal_int fail");
236 ERR("ctsvc_ipc_group_remove_contact fail");
240 ret = contacts_group_remove_contact(group_id, contact_id);
246 *outdata = pims_ipc_data_create(0);
249 ERR("pims_ipc_data_create fail");
252 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
254 pims_ipc_data_destroy(*outdata);
256 ERR("pims_ipc_data_put fail");
259 if (ret == CONTACTS_ERROR_NONE) {
260 int transaction_ver = ctsvc_get_transaction_ver();
261 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
262 pims_ipc_data_destroy(*outdata);
264 ERR("ctsvc_ipc_marshal_int fail");
272 ERR("outdata is NULL");
278 void ctsvc_ipc_group_set_group_order(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
280 int ret = CONTACTS_ERROR_NONE;
282 int previous_group_id;
287 ret = ctsvc_ipc_unmarshal_int(indata, &group_id);
288 if (ret != CONTACTS_ERROR_NONE)
290 ERR("ctsvc_ipc_unmarshal_int fail");
293 ret = ctsvc_ipc_unmarshal_int(indata, &previous_group_id);
294 if (ret != CONTACTS_ERROR_NONE)
296 ERR("ctsvc_ipc_unmarshal_int fail");
299 ret = ctsvc_ipc_unmarshal_int(indata, &next_group_id);
300 if (ret != CONTACTS_ERROR_NONE)
302 ERR("ctsvc_ipc_unmarshal_int fail");
308 ERR("ctsvc_ipc_group_link_group fail");
312 ret = contacts_group_set_group_order(group_id, previous_group_id, next_group_id );
318 *outdata = pims_ipc_data_create(0);
321 ERR("pims_ipc_data_create fail");
324 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
326 pims_ipc_data_destroy(*outdata);
328 ERR("pims_ipc_data_put fail");
331 if (ret == CONTACTS_ERROR_NONE) {
332 int transaction_ver = ctsvc_get_transaction_ver();
333 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
334 pims_ipc_data_destroy(*outdata);
336 ERR("ctsvc_ipc_marshal_int fail");
343 ERR("outdata is NULL");
349 void ctsvc_ipc_person_link_person(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
351 int ret = CONTACTS_ERROR_NONE;
352 int base_person_id = 0;
357 ret = ctsvc_ipc_unmarshal_int(indata, &base_person_id);
358 if (ret != CONTACTS_ERROR_NONE)
360 ERR("ctsvc_ipc_unmarshal_int fail");
363 ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
364 if (ret != CONTACTS_ERROR_NONE)
366 ERR("ctsvc_ipc_unmarshal_int fail");
372 ERR("ctsvc_ipc_person_link_person fail");
376 ret = contacts_person_link_person(base_person_id, person_id);
382 *outdata = pims_ipc_data_create(0);
385 ERR("pims_ipc_data_create fail");
388 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
390 pims_ipc_data_destroy(*outdata);
392 ERR("pims_ipc_data_put fail");
395 if (ret == CONTACTS_ERROR_NONE) {
396 int transaction_ver = ctsvc_get_transaction_ver();
397 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
398 pims_ipc_data_destroy(*outdata);
400 ERR("ctsvc_ipc_marshal_int fail");
407 ERR("outdata is NULL");
412 void ctsvc_ipc_person_unlink_contact(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
414 int ret = CONTACTS_ERROR_NONE;
420 ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
421 if (ret != CONTACTS_ERROR_NONE)
423 ERR("ctsvc_ipc_unmarshal_int fail");
426 ret = ctsvc_ipc_unmarshal_int(indata, &contact_id);
427 if (ret != CONTACTS_ERROR_NONE)
429 ERR("ctsvc_ipc_unmarshal_int fail");
435 ERR("ctsvc_ipc_person_link_person fail");
439 int unlinked_person_id;
440 ret = contacts_person_unlink_contact(person_id, contact_id, &unlinked_person_id);
446 *outdata = pims_ipc_data_create(0);
449 ERR("pims_ipc_data_create fail");
452 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
454 pims_ipc_data_destroy(*outdata);
456 ERR("pims_ipc_data_put fail");
459 if (ret == CONTACTS_ERROR_NONE) {
460 int transaction_ver = ctsvc_get_transaction_ver();
461 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
462 pims_ipc_data_destroy(*outdata);
464 ERR("ctsvc_ipc_marshal_int fail");
468 if (pims_ipc_data_put(*outdata, (void*)&unlinked_person_id, sizeof(int)) != 0)
470 pims_ipc_data_destroy(*outdata);
472 ERR("pims_ipc_data_put fail");
478 ERR("outdata is NULL");
483 void ctsvc_ipc_person_reset_usage(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
485 int ret = CONTACTS_ERROR_NONE;
487 contacts_usage_type_e type;
491 ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
492 if (ret != CONTACTS_ERROR_NONE)
494 ERR("ctsvc_ipc_unmarshal_int fail");
498 ret = ctsvc_ipc_unmarshal_int(indata, &temp);
500 if (ret != CONTACTS_ERROR_NONE)
502 ERR("ctsvc_ipc_unmarshal_int fail");
508 ERR("ctsvc_ipc_person_link_person fail");
512 ret = contacts_person_reset_usage(person_id, type);
518 *outdata = pims_ipc_data_create(0);
521 ERR("pims_ipc_data_create fail");
524 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
526 pims_ipc_data_destroy(*outdata);
528 ERR("pims_ipc_data_put fail");
531 if (ret == CONTACTS_ERROR_NONE) {
532 int transaction_ver = ctsvc_get_transaction_ver();
533 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
534 pims_ipc_data_destroy(*outdata);
536 ERR("ctsvc_ipc_marshal_int fail");
543 ERR("outdata is NULL");
548 void ctsvc_ipc_person_set_favorite_order(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
550 int ret = CONTACTS_ERROR_NONE;
552 int previous_person_id;
557 ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
558 if (ret != CONTACTS_ERROR_NONE)
560 ERR("ctsvc_ipc_unmarshal_int fail");
563 ret = ctsvc_ipc_unmarshal_int(indata, &previous_person_id);
564 if (ret != CONTACTS_ERROR_NONE)
566 ERR("ctsvc_ipc_unmarshal_int fail");
569 ret = ctsvc_ipc_unmarshal_int(indata, &next_person_id);
570 if (ret != CONTACTS_ERROR_NONE)
572 ERR("ctsvc_ipc_unmarshal_int fail");
578 ERR("ctsvc_ipc_person_link_person fail");
582 ret = contacts_person_set_favorite_order(person_id, previous_person_id, next_person_id );
588 *outdata = pims_ipc_data_create(0);
591 ERR("pims_ipc_data_create fail");
594 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
596 pims_ipc_data_destroy(*outdata);
598 ERR("pims_ipc_data_put fail");
601 if (ret == CONTACTS_ERROR_NONE) {
602 int transaction_ver = ctsvc_get_transaction_ver();
603 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
604 pims_ipc_data_destroy(*outdata);
606 ERR("ctsvc_ipc_marshal_int fail");
613 ERR("outdata is NULL");
619 void ctsvc_ipc_person_set_default_property(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
621 int ret = CONTACTS_ERROR_NONE;
624 contacts_person_property_e property;
628 ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
629 if (ret != CONTACTS_ERROR_NONE)
631 ERR("ctsvc_ipc_unmarshal_int fail");
634 ret = ctsvc_ipc_unmarshal_unsigned_int(indata, &property);
635 if (ret != CONTACTS_ERROR_NONE)
637 ERR("ctsvc_ipc_unmarshal_int fail");
640 ret = ctsvc_ipc_unmarshal_int(indata, &id);
641 if (ret != CONTACTS_ERROR_NONE)
643 ERR("ctsvc_ipc_unmarshal_int fail");
649 ERR("ctsvc_ipc_person_set_default_property fail");
653 ret = contacts_person_set_default_property(property, person_id, id );
659 *outdata = pims_ipc_data_create(0);
662 ERR("pims_ipc_data_create fail");
665 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
667 pims_ipc_data_destroy(*outdata);
669 ERR("pims_ipc_data_put fail");
672 if (ret == CONTACTS_ERROR_NONE) {
673 int transaction_ver = ctsvc_get_transaction_ver();
674 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
675 pims_ipc_data_destroy(*outdata);
677 ERR("ctsvc_ipc_marshal_int fail");
684 ERR("outdata is NULL");
690 void ctsvc_ipc_person_get_default_property(pims_ipc_h ipc, pims_ipc_data_h indata,
691 pims_ipc_data_h *outdata, void *userdata)
693 int ret = CONTACTS_ERROR_NONE;
696 contacts_person_property_e op;
699 ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
700 if (ret != CONTACTS_ERROR_NONE) {
701 ERR("ctsvc_ipc_unmarshal_int fail");
704 ret = ctsvc_ipc_unmarshal_unsigned_int(indata, &op);
705 if (ret != CONTACTS_ERROR_NONE) {
706 ERR("ctsvc_ipc_unmarshal_int fail");
711 ERR("ctsvc_ipc_person_get_default_property fail");
715 ret = contacts_person_get_default_property(op, person_id, &id );
720 *outdata = pims_ipc_data_create(0);
722 ERR("pims_ipc_data_create fail");
725 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
726 pims_ipc_data_destroy(*outdata);
728 ERR("pims_ipc_data_put fail (return value)");
731 if (pims_ipc_data_put(*outdata, (void*)&id, sizeof(int)) != 0) {
732 pims_ipc_data_destroy(*outdata);
734 ERR("pims_ipc_data_put fail (id)");
739 ERR("outdata is NULL");
745 void ctsvc_ipc_phone_log_reset_statistics(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
747 int ret = contacts_phone_log_reset_statistics();
751 *outdata = pims_ipc_data_create(0);
754 ERR("pims_ipc_data_create fail");
757 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
759 pims_ipc_data_destroy(*outdata);
761 ERR("pims_ipc_data_put fail");
764 if (ret == CONTACTS_ERROR_NONE) {
765 int transaction_ver = ctsvc_get_transaction_ver();
766 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
767 pims_ipc_data_destroy(*outdata);
769 ERR("ctsvc_ipc_marshal_int fail");
776 ERR("outdata is NULL");
782 void ctsvc_ipc_phone_log_delete(pims_ipc_h ipc, pims_ipc_data_h indata,
783 pims_ipc_data_h *outdata, void *userdata)
785 int ret= CONTACTS_ERROR_NONE;
788 contacts_phone_log_delete_e op;
791 ret = ctsvc_ipc_unmarshal_int(indata, (int*)&op);
792 if (ret != CONTACTS_ERROR_NONE) {
793 ERR("ctsvc_ipc_unmarshal_int fail");
798 case CONTACTS_PHONE_LOG_DELETE_BY_ADDRESS:
799 ret = ctsvc_ipc_unmarshal_string(indata, &number);
800 if (ret != CONTACTS_ERROR_NONE) {
801 ERR("ctsvc_ipc_unmarshal_string fail");
804 ret = contacts_phone_log_delete(op, number);
806 case CONTACTS_PHONE_LOG_DELETE_BY_MESSAGE_EXTRA_DATA1:
807 case CONTACTS_PHONE_LOG_DELETE_BY_EMAIL_EXTRA_DATA1:
808 ret = ctsvc_ipc_unmarshal_int(indata, &extra_data1);
809 if (ret != CONTACTS_ERROR_NONE) {
810 ERR("ctsvc_ipc_unmarshal_int fail");
813 ret = contacts_phone_log_delete(op, extra_data1);
816 ERR("Invalid parameter : the operation is not proper (op : %d)", op);
817 ret = CONTACTS_ERROR_INVALID_PARAMETER;
824 *outdata = pims_ipc_data_create(0);
826 ERR("pims_ipc_data_create fail");
829 if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
830 pims_ipc_data_destroy(*outdata);
832 ERR("pims_ipc_data_put fail");
835 if (ret == CONTACTS_ERROR_NONE) {
836 int transaction_ver = ctsvc_get_transaction_ver();
837 if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
838 pims_ipc_data_destroy(*outdata);
840 ERR("ctsvc_ipc_marshal_int fail");