public void Handle(UserUpdateCommand command)
        {
            Check.RequireNotNull(command, "command");

            var user = _documentSession.Load <User>(command.Id);

            user.UpdateDetails(
                command.Name,
                command.Description,
                string.IsNullOrWhiteSpace(command.AvatarId) ? _mediaResourceFactory.MakeDefaultAvatarImage(AvatarDefaultType.User) : _documentSession.Load <MediaResource>(command.AvatarId),
                command.DefaultLicence,
                command.Timezone);

            var userProject = _documentSession.Load <UserProject>(user.Memberships.Single(x => x.Group.GroupType == "userproject" && x.Group.CreatedBy == command.Id).Group.Id);

            userProject.UpdateDetails(
                user,
                command.Name,
                command.Description,
                command.Website,
                string.IsNullOrWhiteSpace(command.AvatarId) ? _mediaResourceFactory.MakeDefaultAvatarImage(AvatarDefaultType.User) : _documentSession.Load <MediaResource>(command.AvatarId),
                string.IsNullOrWhiteSpace(command.BackgroundId) ? _mediaResourceFactory.MakeDefaultBackgroundImage("userproject") : _documentSession.Load <MediaResource>(command.BackgroundId));

            _documentSession.Store(user);
            _documentSession.Store(userProject);
            _documentSession.SaveChanges();
        }
        public void Handle(ProjectCreateCommand command)
        {
            Check.RequireNotNull(command, "command");

            // Get parent group
            Group parentGroup = _documentSession.Load <AppRoot>(Constants.AppRootId);

            User user = _documentSession.Load <User>(command.UserId);

            // Make project
            var project = new Project(
                user,
                command.Name,
                command.Description,
                command.Website,
                string.IsNullOrWhiteSpace(command.AvatarId) ? _mediaResourceFactory.MakeDefaultAvatarImage(AvatarDefaultType.Project) : _documentSession.Load <MediaResource>(command.AvatarId),
                string.IsNullOrWhiteSpace(command.BackgroundId) ? _mediaResourceFactory.MakeDefaultBackgroundImage("project") : _documentSession.Load <MediaResource>(command.BackgroundId),
                command.Categories,
                DateTime.UtcNow,
                parentGroup);

            _documentSession.Store(project); // Store project, get a real Id

            // Add administrator membership to creating user
            user.UpdateMembership(
                user,
                project,
                _documentSession.Load <Role>(new[] { "roles/projectadministrator", "roles/projectmember" }));
            _documentSession.Store(user);

            _documentSession.SaveChanges();
        }
        public void Handle(OrganisationCreateCommand command)
        {
            Check.RequireNotNull(command, "command");

            // Get parent group
            Group parentGroup = null;

            parentGroup = _documentSession.Load <AppRoot>(Constants.AppRootId);

            // Make organisation
            var organisation = new Organisation(
                _documentSession.Load <User>(command.UserId),
                command.Name,
                command.Description,
                command.Website,
                string.IsNullOrWhiteSpace(command.AvatarId) ? _mediaResourceFactory.MakeDefaultAvatarImage(AvatarDefaultType.Organisation) : _documentSession.Load <MediaResource>(command.AvatarId),
                string.IsNullOrWhiteSpace(command.BackgroundId) ? _mediaResourceFactory.MakeDefaultBackgroundImage("organisation") : _documentSession.Load <MediaResource>(command.BackgroundId),
                command.Categories,
                DateTime.UtcNow,
                parentGroup);

            _documentSession.Store(organisation);

            // Add administrator membership to creating user
            var user = _documentSession.Load <User>(command.UserId);

            user.UpdateMembership(
                user,
                organisation,
                _documentSession.Load <Role>("roles/organisationadministrator", "roles/organisationmember"));

            _documentSession.Store(user);
            _documentSession.SaveChanges();
        }
Ejemplo n.º 4
0
 public object BuildCreateOrganisation()
 {
     return(new
     {
         Name = string.Empty,
         Description = string.Empty,
         Website = string.Empty,
         Avatar = _mediaResourceFactory.MakeDefaultAvatarImage(AvatarDefaultType.Organisation),
         Background = _mediaResourceFactory.MakeDefaultBackgroundImage("organisation"),
         AvatarId = string.Empty,
         BackgroundId = string.Empty,
         Categories = new string [] {}
     });
 }
Ejemplo n.º 5
0
        private void AddUser(AppRoot appRoot, string password, string email, string name, IDocumentSession documentSession, params string[] roleIds)
        {
            var defaultAvatarImage     = _mediaResourceFactory.MakeDefaultAvatarImage(AvatarDefaultType.User);
            var defaultBackgroundImage = _mediaResourceFactory.MakeDefaultBackgroundImage("user");

            var user = new User(password, email, name, defaultAvatarImage,
                                Constants.DefaultLicence, Constants.DefaultTimezone, DateTime.UtcNow);

            documentSession.Store(user);

            user.UpdateMembership(user,
                                  appRoot,
                                  Roles.Where(x => roleIds.Any(y => x.Id == "roles/" + y)));
            documentSession.Store(user);

            var userProject = new UserProject(user, name, string.Empty, string.Empty, defaultAvatarImage, defaultBackgroundImage, DateTime.UtcNow, appRoot);

            documentSession.Store(userProject);

            user.UpdateMembership(
                user,
                userProject,
                Roles.Where(x => x.Id == "roles/userprojectadministrator" || x.Id == "roles/userprojectmember"));
            documentSession.Store(user);

            var favourites = new Favourites(user, DateTime.UtcNow, appRoot);

            documentSession.Store(favourites);

            user.UpdateMembership(
                user,
                favourites,
                Roles.Where(x => x.Id == "roles/favouritesadministrator" || x.Id == "roles/favouritesmember"));
            documentSession.Store(user);

            Users.Add(user);

            //UserCreateCommand command = new UserCreateCommand()
            //{
            //    Name = name,
            //    Email = email,
            //    Password = password,
            //    Roles = new[] { "roles/globalmember", "roles/globaladministrator" }
            //};

            //_commandProcessor.Process<UserCreateCommand, User>(command, x => Users.Add(x));
        }
Ejemplo n.º 6
0
        public User HandleReturn(UserCreateCommand userCreateCommand)
        {
            Check.RequireNotNull(userCreateCommand, "userCreateCommand");

            var appRoot                = _documentSession.Load <AppRoot>(Constants.AppRootId);
            var defaultAvatarImage     = _mediaResourceFactory.MakeDefaultAvatarImage(AvatarDefaultType.User);
            var defaultBackgroundImage = _mediaResourceFactory.MakeDefaultBackgroundImage("user");

            // Make user
            var user = new User(
                userCreateCommand.Password,
                userCreateCommand.Email,
                userCreateCommand.Name,
                defaultAvatarImage,
                Constants.DefaultLicence,
                userCreateCommand.Timezone,
                DateTime.UtcNow);

            _documentSession.Store(user);

            // Make user's project group
            var userProject = new UserProject(
                user,
                userCreateCommand.Name,
                string.Empty,
                string.Empty,
                defaultAvatarImage,
                defaultBackgroundImage,
                DateTime.UtcNow,
                appRoot);

            _documentSession.Store(userProject);

            // Make user's favourites group
            var favourites = new Favourites(
                user,
                DateTime.UtcNow,
                appRoot);

            _documentSession.Store(favourites);

            // Add app root membership
            user.UpdateMembership(
                user,
                appRoot,
                _documentSession.Query <Role>().Where(x => x.Id.In(userCreateCommand.Roles)).ToList());

            // Add administrator membership to user project
            user.UpdateMembership(
                user,
                userProject,
                _documentSession.Query <Role>().Where(x => x.Id == "roles/userprojectadministrator" || x.Id == "roles/userprojectmember"));

            // Add administrator membership to favourites
            user.UpdateMembership(
                user,
                favourites,
                _documentSession.Query <Role>().Where(x => x.Id == "roles/favouritesadministrator" || x.Id == "roles/favouritesmember"));

            _documentSession.Store(user);
            _documentSession.SaveChanges();

            return(user);
        }