public Workspace SetUserSelectedWorkspace(int workspaceId, int userId) { var workspaceDA = _activityContext.Workspaces.Find(workspaceId); if (workspaceDA == null) { throw new Exception("Workspace not found"); } if (!_userWorkspaceService.IsWorkspaceInUserWorkspaces(workspaceId, userId)) { throw new Exception("Workspace doesn't belong to user"); } var currentSelectedWorkspaceDA = _activityContext.UserSelectedWorkspaces .FirstOrDefault(usw => usw.UserId == userId); if (currentSelectedWorkspaceDA != null) { _activityContext.UserSelectedWorkspaces .Remove(currentSelectedWorkspaceDA); } var selectedWorkspaceDA = new DataAccess.Models.UserSelectedWorkspace(); selectedWorkspaceDA.UserId = userId; selectedWorkspaceDA.WorkspaceId = workspaceId; _activityContext.UserSelectedWorkspaces.Add(selectedWorkspaceDA); _activityContext.SaveChanges(); var selectedWorkspace = _mapper.Map <Workspace>(workspaceDA); return(selectedWorkspace); }
public User Create(User user, string password) { if (string.IsNullOrWhiteSpace(password)) { throw new Exception("Password is required"); } if (_activityContext.Users.Any(x => x.Username == user.Username)) { throw new Exception($"Username '${user.Username}' is already taken"); } _passwordService.CreatePasswordHash(password, out byte[] passwordHash, out byte[] passwordSalt); var userDA = _mapper.Map <DataAccess.Models.User>(user); userDA.PasswordHash = passwordHash; userDA.PasswordSalt = passwordSalt; _activityContext.Users.Add(userDA); var defaultWorkspace = new DataAccess.Models.Workspace(); defaultWorkspace.Name = $"{user.Username} default workspace"; defaultWorkspace.DateTimeCreated = DateTime.Now; defaultWorkspace.User = userDA; _activityContext.Workspaces.Add(defaultWorkspace); var userSelectedWorkspace = new DataAccess.Models.UserSelectedWorkspace(); userSelectedWorkspace.User = userDA; userSelectedWorkspace.Workspace = defaultWorkspace; _activityContext.UserSelectedWorkspaces.Add(userSelectedWorkspace); _activityContext.SaveChanges(); var insertedUser = _mapper.Map <User>(userDA); return(insertedUser); }