[Contact] - Reset usage count
authorAndrzej Popowski <a.popowski@samsung.com>
Thu, 10 Mar 2016 07:18:01 +0000 (08:18 +0100)
committerHyunjin Park <hj.na.park@samsung.com>
Fri, 29 Apr 2016 06:45:36 +0000 (15:45 +0900)
Change-Id: Icea3f60a102f6210770e40997d5098f72ccd8130
Signed-off-by: Andrzej Popowski <a.popowski@samsung.com>
src/contact/contact_instance.cc
src/contact/contact_instance.h
src/contact/contact_manager.cc
src/contact/contact_search_engine.h
src/contact/js/person.js
src/contact/person.cc
src/contact/person.h

index fa43fce04457d6e4ef348a51d76f63b240b0d88e..51fec47d107285755f27c31267a348c91a3624ce 100755 (executable)
@@ -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<JsonObject>(args));
+  if (status.IsSuccess()) {
+    ReportSuccess(out);
+  } else {
+    LogAndReportError(status, &out);
+  }
+}
+
 }  // namespace contact
 }  // namespace extension
index a79c0f850c86363e0488c4a4e3651a1b00fa4ace..b9a0125ed8b91d4fd748755de8633a42f725a407 100755 (executable)
@@ -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_;
index 252aaa36eb501b4332a0c492ac1329539b6ed2f9..de355d0d14e9a56078732dd016e4693405591e4b 100755 (executable)
@@ -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);
 }
 }
index 6dcfbc8bc9d8b1c44311515b1fdc89387f474571..3aec34f2ce5286f6483ae1baf4325335e440d4ab 100644 (file)
@@ -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<long> LongVector;
index 025a4d6b970dad8c448f282de440e0af9f505259..e0609f5d9e5d66e555d1f4a65ad5386d2534511b 100755 (executable)
@@ -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);
+};
index e76d880beaac7b6ea83b183d48a211f58119da71..e6ee98149f945a1a5f10b949b0633f77c78e95c2 100755 (executable)
 
 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<contacts_usage_type_e>(i)) {
+      ret = contacts_person_reset_usage(person_id, static_cast<contacts_usage_type_e>(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<JsonString>(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<JsonString>(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;
   }
index 1b1bf7ee892e310ccc68df57870cf8b8becc1fac..2aba7aecaa0bf1966befc0b360bc5bd98c6cbf07 100644 (file)
@@ -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