func (actor ServicePlanHandler) UpdatePlanAndOrgForService(serviceName, planName, orgName string, setPlanVisibility bool) (PlanAccess, error) { service, err := actor.serviceBuilder.GetServiceByName(serviceName) if err != nil { return PlanAccessError, err } org, err := actor.orgRepo.FindByName(orgName) if err != nil { return PlanAccessError, err } found := false var servicePlan models.ServicePlanFields for i, val := range service.Plans { if val.Name == planName { found = true servicePlan = service.Plans[i] } } if !found { return PlanAccessError, errors.New(fmt.Sprintf("Service plan %s not found", planName)) } if !servicePlan.Public && setPlanVisibility { if servicePlan.OrgHasVisibility(orgName) { return Limited, nil } // Enable service access err = actor.servicePlanVisibilityRepo.Create(servicePlan.Guid, org.Guid) if err != nil { return PlanAccessError, err } } else if !servicePlan.Public && !setPlanVisibility { // Disable service access if servicePlan.OrgHasVisibility(org.Name) { err = actor.deleteServicePlanVisibilities(map[string]string{"organization_guid": org.Guid, "service_plan_guid": servicePlan.Guid}) if err != nil { return PlanAccessError, err } } } access := actor.findPlanAccess(servicePlan) return access, nil }