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)); }
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)); }
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)); }
private static EditResult <Project> CouldNotLocateProject(Guid id) { return(EditResult.Fail <Project>(string.Format("Could not locate a project with Id '{0}'", id))); }