Index: XmlRpcAPI/Actions.subproj/DirectAction+Appointment.m =================================================================== --- XmlRpcAPI/Actions.subproj/DirectAction+Appointment.m (revision 1803) +++ XmlRpcAPI/Actions.subproj/DirectAction+Appointment.m (working copy) @@ -646,6 +646,10 @@ -(id)appointment_setResourcesAction:(id)_app:(id)_resources { SkyAppointmentDocument *app; NSArray *resourceNames; + NSMutableArray *tmp; + EOGlobalID *resourceGID; + EOGenericRecord *resource; + int i; /* If _args is a number convert it to a string */ if ([_app isKindOfClass:[NSNumber class]]) @@ -665,8 +669,29 @@ resourceNames = [_resources componentsSeparatedByString:@","]; } else if ([_resources isKindOfClass:[NSArray class]]) { - resourceNames = _resources; - } + if([_resources isNotEmpty]) { + tmp = [[NSMutableArray alloc] initWithCapacity:[_resources count]]; + if([[_resources objectAtIndex:0] isKindOfClass:[NSNumber class]]) { + /// First object in array is a number + /// Convert these resource ids into resource names + for(i = 0; i < [_resources count]; i++) { + resourceGID = [[[self commandContext] + documentManager] + globalIDForURL:[_resources objectAtIndex:i]]; + if (resourceGID != nil) { + resource = [[self commandContext] + runCommand:@"appointmentresource::get-by-globalid", + @"gid", resourceGID, + nil]; + NSLog(@"%s: resource name: %@", + __PRETTY_FUNCTION__, [[resource valueForKey:@"name"] lastObject]); + [tmp addObject:[[resource valueForKey:@"name"] lastObject]]; + } /// End if resourceGID != nil + } /// End for + resourceNames = tmp; + } else resourceNames = _resources; + } else resourceNames = _resources; + } /// End [_resources isKindOfClass:[NSArray class]] else { return [self faultWithFaultCode:XMLRPC_FAULT_INVALID_PARAMETER reason:@"resource list invalid type"];