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);
        }
Exemple #2
0
        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);
        }