public async static Task <Column> GetColumn(this ProjectContext db, string userEmail, GetColumnForm form) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(null); } var role = await db.Roles.AsNoTracking().FirstOrDefaultAsync(x => x.User == user && x.Project.Id == form.ProjectId); if (role == null) { _code = ControllerErrorCode.PermissionsDenied; return(null); } var column = await db.Columns.FirstOrDefaultAsync(x => x.Sprint.Id == form.SprintId); if (column == null) { _code = ControllerErrorCode.ColumnNotFound; return(null); } return(column); }
public async static Task <bool> RemoveColumn(this ProjectContext db, string userEmail, RemoveColumnForm form) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(false); } var column = await db.Columns.FirstOrDefaultAsync(x => x.Project.Id == form.ProjectId && x.Id == form.ColumnId); if (column == null) { _code = ControllerErrorCode.ColumnNotFound; return(false); } var role = await db.Roles.FirstOrDefaultAsync(x => x.Project.Id == form.ProjectId && x.User == user); if (role == null || role.Type != ProjectUserRole.ProjectManager) { _code = ControllerErrorCode.PermissionsDenied; return(false); } db.Columns.Remove(column); await db.SaveChangesAsync(); return(true); }
public async static Task <Sprint> AddSprintAsync(this ProjectContext db, string userEmail, AddSprintForm form) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(null); } var role = await db.Roles.Include(y => y.Project).FirstOrDefaultAsync(x => x.Project.Id == form.ProjectId && x.User == user); if (role == null || role.Type != ProjectUserRole.ProjectManager) { _code = ControllerErrorCode.PermissionsDenied; return(null); } var sprint = new Sprint { Name = form.SprintName, Project = role.Project, ExpireDate = form.ExprieDate }; await db.Sprints.AddAsync(sprint); await db.SaveChangesAsync(); return(sprint); }
public async static Task <bool> ChangeSprintName(this ProjectContext db, string userEmail, ChangeSprintNameForm form) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(false); } var sprint = await db.Sprints.Include(x => x.Project).FirstOrDefaultAsync(x => x.Project.Id == form.ProjectId && x.Id == form.SprintId); if (sprint == null) { _code = ControllerErrorCode.SprintNotFound; return(false); } var role = await db.Roles.FirstOrDefaultAsync(x => x.Project.Id == form.ProjectId && x.User == user); if (role == null || role.Type != ProjectUserRole.ProjectManager) { _code = ControllerErrorCode.PermissionsDenied; return(false); } sprint.Name = form.NewName; await db.SaveChangesAsync(); return(true); }
public static async Task <bool> DeleteProjectAsync(this ProjectContext db, string userEmail, int projectId) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(false); } var project = await db.Projects.FirstOrDefaultAsync(x => x.Id == projectId); if (project == null) { _code = ControllerErrorCode.ProjectNotFound; return(false); } var role = await db.Roles.AsNoTracking().FirstOrDefaultAsync(x => x.Project.Id == projectId && x.User.Id == user.Id); if (role == null || role.Type != ProjectUserRole.ProjectManager) { _code = ControllerErrorCode.PermissionsDenied; return(false); } db.Projects.Remove(project); await db.SaveChangesAsync(); return(true); }
public async static Task <IEnumerable <Sprint> > GetSprints(this ProjectContext db, string userEmail, GetSprintsForm form) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(null); } var role = await db.Roles.FirstOrDefaultAsync(x => x.Project.Id == form.ProjectId && x.User == user); if (role == null) { _code = ControllerErrorCode.PermissionsDenied; return(null); } var sprints = await db.Sprints.Where(x => x.Project.Id == form.ProjectId).ToListAsync(); if (sprints == null) { _code = ControllerErrorCode.SprintNotFound; return(null); } return(sprints); }
public static async Task <Project> CreateProject(this ProjectContext db, string userEmail, string projectName) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(null); } var project = new Project { Name = projectName, CreationDate = DateTime.UtcNow }; var role = new Role { Type = ProjectUserRole.ProjectManager, Project = project, User = user }; await db.Projects.AddAsync(project); await db.Roles.AddAsync(role); await db.SaveChangesAsync(); return(project); }
public async static Task <IEnumerable <Card> > GetCards(this ProjectContext db, string userEmail, GetCardsForm form) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(null); } var role = await db.Roles.AsNoTracking().FirstOrDefaultAsync(x => x.User == user && x.Project.Id == form.ProjectId); if (role == null) { _code = ControllerErrorCode.PermissionsDenied; return(null); } var cards = await db.Cards.Where(x => x.Column.Id == form.ColumnId).ToListAsync(); if (cards == null) { _code = ControllerErrorCode.CardNotFound; return(null); } return(cards); }
public static async Task <bool> AddUserToProjectAsync(this ProjectContext db, string fromEmail, AddUserToProjectForm form) { var fromUser = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(fromEmail, StringComparison.OrdinalIgnoreCase)); var toUser = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(form.UserEmail, StringComparison.OrdinalIgnoreCase)); if (fromUser == null || toUser == null) { _code = ControllerErrorCode.UserNotFound; return(false); } var project = await db.Projects.FirstOrDefaultAsync(x => x.Id == form.ProjectId); if (project == null) { _code = ControllerErrorCode.ProjectNotFound; return(false); } var fromUserRole = db.Roles.AsNoTracking().FirstOrDefault(x => x.User.Id == fromUser.Id && x.Project.Id == project.Id); var toUserRole = db.Roles.FirstOrDefault(x => x.Project.Id == form.ProjectId && x.User.Id == toUser.Id); if (fromUserRole == null || fromUserRole.Type != ProjectUserRole.ProjectManager) { _code = ControllerErrorCode.PermissionsDenied; return(false); } if (toUserRole != null) { db.Remove(toUserRole); } var newRole = new Role() { Project = project, User = toUser, Type = form.Role }; await db.Roles.AddAsync(newRole); await db.SaveChangesAsync(); return(true); }
public static async Task <IEnumerable <Project> > GetProjects(this ProjectContext db, string userEmail) { var user = await db.Users.AsNoTracking().FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(null); } var roles = await db.Roles.AsNoTracking().Include(x => x.Project).Where(x => x.User.Id == user.Id).ToListAsync(); if (roles == null) { _code = ControllerErrorCode.PermissionsDenied; return(null); } var projects = roles.Select(x => x.Project); return(projects); }
public async static Task <Card> AddCard(this ProjectContext db, string userEmail, AddCardForm form) { var user = await db.Users.FirstOrDefaultAsync(x => x.Email.Equals(userEmail, StringComparison.OrdinalIgnoreCase)); if (user == null) { _code = ControllerErrorCode.UserNotFound; return(null); } var role = await db.Roles.Include(y => y.Project).FirstOrDefaultAsync(x => x.Project.Id == form.ProjectId && x.User == user); if (role == null || role.Type != ProjectUserRole.ProjectManager) { _code = ControllerErrorCode.PermissionsDenied; return(null); } var column = await db.Columns.FirstOrDefaultAsync(x => x.Project.Id == form.ProjectId && x.Id == form.ColumnId); if (column == null) { _code = ControllerErrorCode.SprintNotFound; return(null); } var card = new Card { Column = column, Text = form.Name }; await db.Cards.AddAsync(card); await db.SaveChangesAsync(); return(card); }