Ejemplo n.º 1
0
        public EditResult <Project> Update(EditProject editModel)
        {
            var currentModel = _masterModelRepository.GetCurrent();
            var project      = currentModel.Projects.SingleOrDefault(x => x.Id.Equals(editModel.ProjectId.Value));

            if (project == null)
            {
                return(CouldNotLocateProject(editModel.ProjectId.Value));
            }

            var existingProjectWithThisName = currentModel.Projects.SingleOrDefault(x => x.Name.Equals(editModel.Name));

            if (existingProjectWithThisName != null && existingProjectWithThisName.Id != editModel.ProjectId)
            {
                return(EditResult.Fail <Project>(NameCollisionMessage(editModel.Name)));
            }

            project.Name = editModel.Name;
            if (editModel.CruiseProjects == null)
            {
                project.CruiseProjectAssociations = new CruiseProjectAssociation[0];
            }
            else
            {
                project.CruiseProjectAssociations = editModel.CruiseProjects
                                                    .Select(
                    cp => new CruiseProjectAssociation {
                    Name = cp.Project, ServerId = cp.Server
                })
                                                    .ToArray();
            }
            _masterModelRepository.Save(currentModel);

            return(EditResult.Success(project));
        }
Ejemplo n.º 2
0
        public EditResult <LightGroup> Update(Guid groupId, string name)
        {
            var masterModel = _masterModelRepository.GetCurrent();
            var allGroups   = masterModel.Projects.SelectMany(x => x.Groups).ToArray();

            if (allGroups.None(x => x.Id.Equals(groupId)))
            {
                return(EditResult.Fail <LightGroup>(BadId(groupId)));
            }

            var group = allGroups.Single(x => x.Id.Equals(groupId));

            if (group.Name.Equals(name))
            {
                return(EditResult.Success(group));
            }

            var parentProject = group.ParentProject;

            if (parentProject.Groups.Any(x => x.Name.Equals(name)))
            {
                return
                    (EditResult.Fail <LightGroup>(string.Format("There is already a group named '{0}' in project '{1}'",
                                                                name, parentProject.Name)));
            }

            group.Name = name;
            _masterModelRepository.Save(masterModel);

            return(EditResult.Success(group));
        }
Ejemplo n.º 3
0
        public EditResult <Project> Delete(Guid id)
        {
            var currentModel = _masterModelRepository.GetCurrent();

            if (!currentModel.ProjectExists(id))
            {
                return(CouldNotLocateProject(id));
            }

            currentModel.RemoveProject(id);
            _masterModelRepository.Save(currentModel);
            return(EditResult.Success <Project>(null));
        }
Ejemplo n.º 4
0
        public EditResult <LightGroup> Delete(Guid groupId)
        {
            var masterModel = _masterModelRepository.GetCurrent();
            var group       = masterModel.Projects
                              .SelectMany(x => x.Groups)
                              .SingleOrDefault(x => x.Id.Equals(groupId));

            if (group == null)
            {
                return(EditResult.Fail <LightGroup>(BadId(groupId)));
            }

            group.UnassignAllLights();

            var parent = group.ParentProject;

            parent.RemoveGroup(group);

            _masterModelRepository.Save(masterModel);
            return(EditResult.Success <LightGroup>(null));
        }