diff --git a/juggl-server/api/addRecordTag.php b/juggl-server/api/addRecordTag.php new file mode 100644 index 0000000..a1192d9 --- /dev/null +++ b/juggl-server/api/addRecordTag.php @@ -0,0 +1,24 @@ +get("user_id"); + $tag_name = $params->get("tag_name"); + + addRecordTag($user_id, $tag_name); + } +} + +$branch = new AddRecordTagBranch(); +$branch->execute(); diff --git a/juggl-server/api/addTagToRecord.php b/juggl-server/api/addTagToRecord.php new file mode 100644 index 0000000..5b47db8 --- /dev/null +++ b/juggl-server/api/addTagToRecord.php @@ -0,0 +1,24 @@ +get("record_id"); + $tag_id = $params->get("tag_id"); + + addTagToRecord($tag_id, $record_id); + } +} + +$branch = new AddTagToRecordBranch(); +$branch->execute(); diff --git a/juggl-server/api/getRecordTags.php b/juggl-server/api/getRecordTags.php new file mode 100644 index 0000000..66695eb --- /dev/null +++ b/juggl-server/api/getRecordTags.php @@ -0,0 +1,29 @@ +get("user_id"); + + $tags = getRecordTags($user_id); + + $json = new JsonBuilder(); + $json->addRecordTags($tags); + + respondJson($json); + } +} + +$branch = new GetRecordTagsBranch(); +$branch->execute(); diff --git a/juggl-server/api/removeTagFromRecord.php b/juggl-server/api/removeTagFromRecord.php new file mode 100644 index 0000000..56c24ba --- /dev/null +++ b/juggl-server/api/removeTagFromRecord.php @@ -0,0 +1,24 @@ +get("record_id"); + $tag_id = $params->get("tag_id"); + + removeTagFromRecord($tag_id, $record_id); + } +} + +$branch = new RemoveTagFromRecordBranch(); +$branch->execute(); diff --git a/juggl-server/api/services/jsonBuilder.inc.php b/juggl-server/api/services/jsonBuilder.inc.php index 2c3ef10..4827fe8 100644 --- a/juggl-server/api/services/jsonBuilder.inc.php +++ b/juggl-server/api/services/jsonBuilder.inc.php @@ -57,6 +57,23 @@ class JsonBuilder return $this; } + function addRecordTags(array $record_tags) + { + if ($record_tags === null) return; + + $columns = array( + "record_tag_id" => "", + "name" => "", + "user_id" => "" + ); + + $this->jsonData['record_tags'] = array(); + foreach ($record_tags as $tag) { + $this->jsonData['record_tags'][] = $this->createJsonArray($tag, $columns); + } + return $this; + } + private function createJsonArray(array $data, array $columns) { $jsonArray = array(); diff --git a/juggl-server/api/services/jugglDbApi.inc.php b/juggl-server/api/services/jugglDbApi.inc.php index e16569c..e5333af 100644 --- a/juggl-server/api/services/jugglDbApi.inc.php +++ b/juggl-server/api/services/jugglDbApi.inc.php @@ -44,10 +44,7 @@ function getTimeRecord($user_id, $record_id) } $result = $result[0]; - // Is still running? - if ($result["end_time"] == null) { - $result["duration"] = calcDuration($result["start_time"]); - } + $result = getRecordExternalData($result); return $result; } @@ -114,10 +111,7 @@ function getProjectRecord($user_id, $project_id, $finished = null) } $result = $result[0]; - // Is still running? - if ($result["end_time"] == null) { - $result["duration"] = calcDuration($result["start_time"]); - } + $result = getRecordExternalData($result); return $result; } @@ -131,8 +125,8 @@ function getRunningRecords($user_id) $results = $db->execute(); // Is still running? - foreach ($results as $key => $value) { - $results[$key]["duration"] = calcDuration($results[$key]["start_time"]); + foreach ($results as $key => $record) { + $results[$key] = getRecordExternalData($record); } return $results; @@ -163,7 +157,6 @@ function updateTimeRecord($user_id, $params) { $data = []; - $anythingUpdated = false; if ($params->exists(["start_time"])) { $data["start_time"] = $params->get("start_time"); @@ -197,6 +190,32 @@ function updateTimeRecord($user_id, $params) $db->execute(); } +function getRecordExternalData($record) +{ + if ($record == null) { + return null; + } + + // Duration + if ($record["end_time"] == NULL) { + $record["duration"] = calcDuration($record["start_time"]); + } + + // Tags + $tags = array(); + foreach (getTagsOnRecord($record["record_id"]) as $key => $tag) { + $data = [ + "record_tag_id" => $tag["record_tag_id"], + "name" => $tag["name"], + "user_id" => $tag["user_id"] + ]; + $tags[] = $data; + } + $record["tags"] = $tags; + + return $record; +} + function isProjectValid($project_id, $user_id) { $db = new DbOperations(); @@ -221,3 +240,53 @@ function calcDuration($start_time, $end_time = "NOW") { return (int)(strtotime($end_time) - strtotime($start_time)); } + +function getRecordTags($user_id) +{ + $db = new DbOperations(); + $db->select("record_tags"); + $db->where("user_id", Comparison::EQUAL, $user_id); + return $db->execute(); +} + +function getTagsOnRecord($record_id) +{ + $db = new DbOperations(); + $db->select("tags_on_records"); + $db->innerJoin("record_tags", "record_tag_id"); + $db->where("record_id", Comparison::EQUAL, $record_id); + return $db->execute(); +} + +function addRecordTag($user_id, $tag_name) +{ + $data = [ + "user_id" => $user_id, + "name" => $tag_name + ]; + + $db = new DbOperations(); + $db->insert("record_tags", $data); + $db->execute(); +} + +function addTagToRecord($tag_id, $record_id) +{ + $data = [ + "record_tag_id" => $tag_id, + "record_id" => $record_id + ]; + + $db = new DbOperations(); + $db->insert("tags_on_records", $data); + $db->execute(); +} + +function removeTagFromRecord($tag_id, $record_id) +{ + $db = new DbOperations(); + $db->delete("tags_on_records"); + $db->where("record_tag_id", Comparison::EQUAL, $tag_id); + $db->where("record_id", Comparison::EQUAL, $record_id); + $db->execute(); +}