public void ApprovePermission(ApprovePermissionRequest request, string childSwid, Action <GuestControllerResult <PermissionResponse> > callback)
        {
            QueueItem item = CreateQueueItem("/client/{client-id}/guest/activity-permission/" + childSwid, HttpMethod.PUT, request, GuestControllerAuthenticationType.AccessToken, callback);

            queue.Add(item);
            ExecuteNextCall();
        }
 public static void ApprovePermission(AbstractLogger logger, IGuestControllerClient guestControllerClient, string activityCode, string childSwid, ActivityApprovalStatus desiredStatus, Action <IPermissionResult> callback)
 {
     if (string.IsNullOrEmpty(childSwid) || string.IsNullOrEmpty(activityCode) || desiredStatus == ActivityApprovalStatus.Pending || desiredStatus == ActivityApprovalStatus.Unknown)
     {
         callback(new PermissionFailedInvalidResult());
         return;
     }
     try
     {
         ApprovePermissionRequest approvePermissionRequest = new ApprovePermissionRequest();
         approvePermissionRequest.activityCode   = activityCode;
         approvePermissionRequest.approvalStatus = ActivityApprovalStatusConverter.Convert(desiredStatus);
         approvePermissionRequest.swid           = childSwid;
         ApprovePermissionRequest request = approvePermissionRequest;
         guestControllerClient.ApprovePermission(request, childSwid, delegate(GuestControllerResult <PermissionResponse> r)
         {
             if (!r.Success)
             {
                 callback(MakeGenericFailure());
             }
             else
             {
                 PermissionResponse response = r.Response;
                 if (response.error != null || response.data == null)
                 {
                     callback(ParseError(response));
                 }
                 else
                 {
                     string activityCode2 = response.data.activityCode;
                     ActivityApprovalStatus activityApprovalStatus = ActivityApprovalStatusConverter.Convert(response.data.approvalStatus);
                     if (activityCode2 != activityCode || activityApprovalStatus != desiredStatus)
                     {
                         callback(new PermissionFailedInvalidResult());
                     }
                     else
                     {
                         callback(new PermissionResult(success: true, activityApprovalStatus));
                     }
                 }
             }
         });
     }
     catch (Exception ex)
     {
         logger.Critical("Unhandled exception: " + ex);
         callback(MakeGenericFailure());
     }
 }