class Trackington::Project
Attributes
description[R]
id[R]
public[R]
sprints[R]
title[R]
Public Class Methods
new(id, title, description, public)
click to toggle source
# File lib/trackington/app/projects.rb, line 55 def initialize(id, title, description, public) @id = id @title = title @description = description @public = public @sprints = SprintRepository.new(@id) end
Public Instance Methods
add_user(project_user, user_to_add, type = nil)
click to toggle source
# File lib/trackington/app/projects.rb, line 63 def add_user(project_user, user_to_add, type = nil) check_user_role(project_user, 'owner') type ||= 'contributor' existing = Models::ProjectRole.where(user_id: user_to_add, project_id: @id).first return unless existing.nil? new_role = Models::ProjectRole.new(user_id: user_to_add, project_id: @id, role_type: type) new_role.save end
backlog(project_user)
click to toggle source
# File lib/trackington/app/projects.rb, line 137 def backlog(project_user) check_user_role project_user @sprints.backlog end
complete_sprint(project_user)
click to toggle source
# File lib/trackington/app/projects.rb, line 131 def complete_sprint(project_user) check_user_role(project_user, 'owner') @sprints.complete_sprint end
create_sprint(project_user, data)
click to toggle source
# File lib/trackington/app/projects.rb, line 119 def create_sprint(project_user, data) check_user_role(project_user, 'owner') @sprints.create(data) end
current_sprint(project_user)
click to toggle source
# File lib/trackington/app/projects.rb, line 113 def current_sprint(project_user) check_user_role project_user @sprints.current end
remove_user(project_user, user_to_remove)
click to toggle source
# File lib/trackington/app/projects.rb, line 80 def remove_user(project_user, user_to_remove) check_user_role(project_user, 'owner') Models::ProjectRole.destroy_all(project_id: @id, user_id: user_to_remove) nil end
start_sprint(project_user)
click to toggle source
# File lib/trackington/app/projects.rb, line 125 def start_sprint(project_user) check_user_role(project_user, 'owner') @sprints.start_sprint end
update(project_user, data)
click to toggle source
# File lib/trackington/app/projects.rb, line 99 def update(project_user, data) check_user_role(project_user, 'owner') @title = data[:title] @description = data[:description] @public = data[:public] db_project = Models::Project.find(@id) db_project.title = @title db_project.description = @description db_project.public = @public db_project.save end
update_user(project_user, user, new_type)
click to toggle source
# File lib/trackington/app/projects.rb, line 89 def update_user(project_user, user, new_type) check_user_role(project_user, 'owner') role = Models::ProjectRole.where(project_id: @id, user_id: user).first role.role_type = new_type role.save end
user_is?(user_id, type)
click to toggle source
# File lib/trackington/app/projects.rb, line 143 def user_is?(user_id, type) role = Models::ProjectRole.where(project_id: @id, user_id: user_id).first return false if role.nil? return true if role.role_type == 'owner' role.role_type == type end
users()
click to toggle source
# File lib/trackington/app/projects.rb, line 153 def users Models::Project.find(@id).project_roles.map do |role| ProjectRole.new(role) end end
Private Instance Methods
check_user_role(user_id, type = 'spectator')
click to toggle source
# File lib/trackington/app/projects.rb, line 161 def check_user_role(user_id, type = 'spectator') fail 'User not in role.' unless user_is?(user_id, type) end