def get_all_tasks_by_goal_id(self, goal_id):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     self._validate_goal_id(goal_id)
     self._validate_goal_access(goal_id, current_user)
     all_tasks = self.goal_repository.get_all_tasks_by_goal_id(goal_id)
     return all_tasks
示例#2
0
 def update_current_users_log(self, data):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     validate_required_fields(data, ["timestamp"])
     validate_iso8601_timestamp(data["timestamp"])
     log_entry = Log(timestamp=data["timestamp"], user_id=current_user.id)
     self.user_repository.save_log_entry(log_entry)
 def get_current_users_daily_goals(self):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     return [
         goal for goal in self.goal_repository.get_all_goals_by_user_id(
             current_user.id) if goal.date == self.get_current_date()
     ]
示例#4
0
 def unassign_user(self, data):
     validate_required_fields(data, ["user_id"])
     current_user = self.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     self._validate_user(data["user_id"])
     self.user_repository.unassign_user(data["user_id"], current_user.id)
示例#5
0
 def get_all_assigned_users(self):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     assigned_users = self.user_repository.get_all_assigned_users_by_admin_id(
         current_user.id)
     return assigned_users
 def delete_goal_by_id(self, goal_id):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     self._validate_goal_id(goal_id)
     goal = self.goal_repository.get_goal_by_id(goal_id)
     self._validate_user_assignment(goal.user_id, current_user.id)
     self.goal_repository.delete_goal_by_id(goal_id)
示例#7
0
 def register_user(self, data):
     validate_required_fields(data, ["id", "username", "name", "password"])
     current_user = self.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     new_user = User(data["id"], data["username"],
                     data["name"], hash_password(data["password"]), is_admin=False)
     self.user_repository.save_user(new_user)
示例#8
0
 def update_user_profile(self, id, data):
     validate_required_fields(data, ["username", "name", "password"])
     current_user = self.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     self._validate_user(id)
     user = User(id, data["username"],
                 data["name"], hash_password(data["password"]), is_admin=False)
     self.user_repository.save_user(user)
 def save_task(self, data):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     validate_required_fields(
         data, ["id", "title", "description", "hint", "goal_id"])
     self._validate_goal_id(data["goal_id"])
     self._validate_goal_access(data["goal_id"], current_user)
     task = Task(data["id"], data["title"], data["description"],
                 data["hint"], data["goal_id"])
     self.goal_repository.save_task(task)
 def save_goal(self, data):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     validate_required_fields(
         data, ["id", "date", "title", "category", "status", "user_id"])
     validate_date_format(data["date"])
     validate_required_range_of_values({"status": data["status"]}, [0, 1])
     self._validate_user(data["user_id"])
     self._validate_user_assignment(data["user_id"], current_user.id)
     goal = Goal(data["id"], data["date"], data["title"], data["category"],
                 data["status"], data["user_id"])
     self.goal_repository.save_goal(goal)
 def get_goals_by_date_and_assigned_user_id(self, date, user_id):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     validate_date_format(date)
     self._validate_user(user_id)
     self._validate_user_assignment(user_id, current_user.id)
     all_goals = self.goal_repository.get_all_goals_by_user_id(user_id)
     result = []
     for goal in all_goals:
         if goal.date == date:
             result.append(goal)
     return result
示例#12
0
 def get_current_users_points(self):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     all_goals = self.goal_repository.get_all_goals_by_user_id(
         current_user.id)
     completed_tasks = 0
     for goal in all_goals:
         if goal.status:
             all_tasks = self.goal_repository.get_all_tasks_by_goal_id(
                 goal.id)
             print(all_tasks)
             completed_tasks += len(all_tasks)
     return completed_tasks
示例#13
0
 def get_progress_by_user_id(self, user_id):
     current_user = self.get_current_user()
     validate_user_authentication(current_user)
     validate_admin_role(current_user)
     self._validate_user(user_id)
     self._validate_user_assignment(user_id, current_user.id)
     all_goals = self.goal_repository.get_all_goals_by_user_id(user_id)
     progress_by_category = {}
     for goal in all_goals:
         current_value = progress_by_category.get(
             goal.category, (0, 0))
         progress_by_category[goal.category] = (
             current_value[0] + goal.status, current_value[1] + 1)
     return {key: {"completed": value[0], "total": value[1]}
             for key, value in progress_by_category.items()}
示例#14
0
 def get_current_users_log(self):
     current_user = self.user_repository.get_current_user()
     validate_user_authentication(current_user)
     log = self.user_repository.get_log_by_user_id(current_user.id)
     return log