public async Task <IActionResult> ChangeName([FromBody] DeleteSprintForm form) { if (!ModelState.IsValid) { return(BadRequest(ControllerErrorCode.WrongInputData)); } var email = User.Identity.Name; var isSuccess = await _db.RemoveSprint(email, form); if (!isSuccess) { return(BadRequest(_db.Sprints.GetError())); } return(Ok()); }
public async static Task <bool> RemoveSprint(this ProjectContext db, string userEmail, DeleteSprintForm 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); } db.Sprints.Remove(sprint); await db.SaveChangesAsync(); return(true); }