From: Andrzej Popowski Date: Thu, 10 Mar 2016 07:18:01 +0000 (+0100) Subject: [Contact] - Reset usage count X-Git-Tag: submit/tizen/20160502.015917^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c2fbc90d11a75b731e3113f5d09fbab1ae718c4f;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Contact] - Reset usage count Change-Id: Icea3f60a102f6210770e40997d5098f72ccd8130 Signed-off-by: Andrzej Popowski --- diff --git a/src/contact/contact_instance.cc b/src/contact/contact_instance.cc index fa43fce0..51fec47d 100755 --- a/src/contact/contact_instance.cc +++ b/src/contact/contact_instance.cc @@ -87,6 +87,7 @@ ContactInstance::ContactInstance() REGISTER_SYNC("Person_link", PersonLink); REGISTER_SYNC("Person_unlink", PersonUnlink); REGISTER_SYNC("Person_getUsageCount", PersonGetUsageCount); + REGISTER_SYNC("Person_resetUsageCount", PersonResetUsageCount); #undef REGISTER_SYNC #undef REGISTER_ASYNC @@ -637,5 +638,16 @@ void ContactInstance::PersonGetUsageCount(const JsonValue& args, JsonObject& out } } +void ContactInstance::PersonResetUsageCount(const JsonValue& args, JsonObject& out) { + CHECK_PRIVILEGE_ACCESS(kPrivilegeContactWrite, &out); + PlatformResult status = Person::PersonResetUsageCount( + common::JsonCast(args)); + if (status.IsSuccess()) { + ReportSuccess(out); + } else { + LogAndReportError(status, &out); + } +} + } // namespace contact } // namespace extension diff --git a/src/contact/contact_instance.h b/src/contact/contact_instance.h index a79c0f85..b9a0125e 100755 --- a/src/contact/contact_instance.h +++ b/src/contact/contact_instance.h @@ -230,6 +230,7 @@ class ContactInstance : public common::ParsedInstance { void PersonLink(const JsonValue& args, JsonObject& out); void PersonUnlink(const JsonValue& args, JsonObject& out); void PersonGetUsageCount(const JsonValue& args, JsonObject& out); + void PersonResetUsageCount(const JsonValue& args, JsonObject& out); int current_state_; bool is_listening_; diff --git a/src/contact/contact_manager.cc b/src/contact/contact_manager.cc index 252aaa36..de355d0d 100755 --- a/src/contact/contact_manager.cc +++ b/src/contact/contact_manager.cc @@ -188,6 +188,15 @@ PlatformResult ContactManagerGetInternal(int person_id, JsonObject* out) { return status; } + //get information from view _contacts_person_usage + status = ContactSearchEngine::GetPersonUsage(person_id, out); + if (CONTACTS_ERROR_NONE != contacts_record_destroy(contacts_record, true)) { + LoggerE("failed to destroy contacts_record_h"); + } + if (!status) { + return status; + } + return PlatformResult(ErrorCode::NO_ERROR); } } diff --git a/src/contact/contact_search_engine.h b/src/contact/contact_search_engine.h index 6dcfbc8b..3aec34f2 100644 --- a/src/contact/contact_search_engine.h +++ b/src/contact/contact_search_engine.h @@ -41,6 +41,7 @@ class ContactSearchEngine { common::PlatformResult SetSortMode(const picojson::value& sort_mode); common::PlatformResult Find(picojson::array* out); + static common::PlatformResult GetPersonUsage(int person_id, JsonObject* out_ptr); private: typedef std::vector LongVector; diff --git a/src/contact/js/person.js b/src/contact/js/person.js index 025a4d6b..e0609f5d 100755 --- a/src/contact/js/person.js +++ b/src/contact/js/person.js @@ -211,3 +211,20 @@ Person.prototype.getUsageCount = function() { var res = native_.getResultObject(result); return Number(res.usageCount); }; + +// Resets a person's usageCount from the contact DB synchronously. +Person.prototype.resetUsageCount = function() { +// validation + var args = validator_.validateArgs(arguments, [{ + name: 'usage_type', + type: types_.ENUM, + values: Object.keys(PersonUsageTypeEnum), + optional: true, + nullable: true + }]); + + var usage_type = (args.usage_type === undefined ? null : args.usage_type); + + var result = native_.callSync('Person_resetUsageCount', { personId: this.id, usage_type: usage_type }); + _checkError(result); +}; diff --git a/src/contact/person.cc b/src/contact/person.cc index e76d880b..e6ee9814 100755 --- a/src/contact/person.cc +++ b/src/contact/person.cc @@ -20,6 +20,18 @@ namespace extension { namespace contact { + +extern const std::string kUsageTypeOutgoingCall = "OUTGOING_CALL"; +extern const std::string kUsageTypeOutgoingMsg = "OUTGOING_MSG"; +extern const std::string kUsageTypeOutgoingEmail = "OUTGOING_EMAIL"; +extern const std::string kUsageTypeIncomingCall = "INCOMING_CALL"; +extern const std::string kUsageTypeIncomingMsg = "INCOMING_MSG"; +extern const std::string kUsageTypeIncomingEmail = "INCOMING_EMAIL"; +extern const std::string kUsageTypeMissedCall = "MISSED_CALL"; +extern const std::string kUsageTypeRejectedCall = "REJECTED_CALL"; +extern const std::string kUsageTypeBlockedCall = "BLOCKED_CALL"; +extern const std::string kUsageTypeBlockedMsg = "BLOCKED_MSG"; + namespace Person { using namespace common; @@ -251,6 +263,42 @@ PlatformResult GetUsageCount(const JsonObject& args, JsonObject& out) { return PlatformResult(ErrorCode::NO_ERROR); } +PlatformResult ResetUsageCount(const long& person_id, const std::string& type) { + contacts_usage_type_e type_enum = UsageTypeFromString(type); + int ret = CONTACTS_ERROR_NONE; + + for (int i = CONTACTS_USAGE_STAT_TYPE_OUTGOING_CALL; i <= CONTACTS_USAGE_STAT_TYPE_BLOCKED_MSG; i++) { + if (type == "" || type_enum == static_cast(i)) { + ret = contacts_person_reset_usage(person_id, static_cast(i)); + if (CONTACTS_ERROR_NONE != ret) { + return LogAndCreateResult(ErrorCode::NOT_FOUND_ERR, + "Error during reset usage count", + ("Error during reset usage count for %s: %d", type.c_str(), ret)); + } + } + } + + return PlatformResult(ErrorCode::NO_ERROR); +} + +PlatformResult PersonResetUsageCount(const JsonObject& args) { + LoggerD("Enter"); + PlatformResult status = ContactUtil::CheckDBConnection(); + if (status.IsError()) return status; + + long person_id = common::stol(FromJson(args, "personId")); + if (person_id < 0) { + return LogAndCreateResult(ErrorCode::INVALID_VALUES_ERR, "Negative person id"); + } + + if (IsNull(args, "usage_type")) { + return ResetUsageCount(person_id, std::string("")); + } else { + return ResetUsageCount(person_id, FromJson(args, "usage_type")); + } + +} + PlatformResult PersonPropertyFromString(const std::string& name, PersonProperty* person_prop) { LoggerD("Enter"); @@ -268,25 +316,25 @@ PlatformResult PersonPropertyFromString(const std::string& name, contacts_usage_type_e UsageTypeFromString(const std::string& type_str) { if (type_str == kUsageTypeOutgoingCall) { - return CONTACTS_USAGE_STAT_TYPE_OUTGOING_CALL; + return CONTACTS_USAGE_STAT_TYPE_OUTGOING_CALL; } else if (type_str == kUsageTypeOutgoingMsg) { - return CONTACTS_USAGE_STAT_TYPE_OUTGOING_MSG; + return CONTACTS_USAGE_STAT_TYPE_OUTGOING_MSG; } else if (type_str == kUsageTypeOutgoingEmail) { return CONTACTS_USAGE_STAT_TYPE_OUTGOING_EMAIL; } else if (type_str == kUsageTypeIncomingCall) { - return CONTACTS_USAGE_STAT_TYPE_INCOMING_CALL; + return CONTACTS_USAGE_STAT_TYPE_INCOMING_CALL; } else if (type_str == kUsageTypeIncomingMsg) { - return CONTACTS_USAGE_STAT_TYPE_INCOMING_MSG; + return CONTACTS_USAGE_STAT_TYPE_INCOMING_MSG; } else if (type_str == kUsageTypeIncomingEmail) { - return CONTACTS_USAGE_STAT_TYPE_INCOMING_EMAIL; + return CONTACTS_USAGE_STAT_TYPE_INCOMING_EMAIL; } else if (type_str == kUsageTypeMissedCall) { - return CONTACTS_USAGE_STAT_TYPE_MISSED_CALL; + return CONTACTS_USAGE_STAT_TYPE_MISSED_CALL; } else if (type_str == kUsageTypeRejectedCall) { - return CONTACTS_USAGE_STAT_TYPE_REJECTED_CALL; + return CONTACTS_USAGE_STAT_TYPE_REJECTED_CALL; } else if (type_str == kUsageTypeBlockedCall) { - return CONTACTS_USAGE_STAT_TYPE_BLOCKED_CALL; + return CONTACTS_USAGE_STAT_TYPE_BLOCKED_CALL; } else if (type_str == kUsageTypeBlockedMsg) { - return CONTACTS_USAGE_STAT_TYPE_BLOCKED_MSG; + return CONTACTS_USAGE_STAT_TYPE_BLOCKED_MSG; } else { return CONTACTS_USAGE_STAT_TYPE_NONE; } diff --git a/src/contact/person.h b/src/contact/person.h index 1b1bf7ee..2aba7aec 100644 --- a/src/contact/person.h +++ b/src/contact/person.h @@ -57,6 +57,8 @@ contacts_usage_type_e UsageTypeFromString(const std::string& type_str); common::PlatformResult PersonLink(const JsonObject& args, JsonObject&); common::PlatformResult PersonUnlink(const JsonObject& args, JsonObject&); common::PlatformResult GetUsageCount(const JsonObject& args, JsonObject&); +common::PlatformResult ResetUsageCount(const long& person_id, const std::string& type); +common::PlatformResult PersonResetUsageCount(const JsonObject& args); } // Person } // contact