/// <summary> /// Creates the XML payload for the CopyCourseContent Course API Request /// </summary> /// <param name="request"><see cref="CopyCourseContentRequest">object</see></param> /// <returns><see cref="API.ContentCopyRequestEx"/>object</returns> private API.ContentCopyRequestEx SetCopyCourseContentRequest(CopyCourseContentRequest request) { // Initialize and Set the CopyCourseContentRequest API.ContentCopyRequestEx copyCourseContent = new API.ContentCopyRequestEx(); copyCourseContent.ClientString = request.ClientString; copyCourseContent.CopyContentOptions = CONTENT_COPY_OPTIONS; copyCourseContent.DestinationCourseIdentifiers = new API.CourseIdentifier[1]; copyCourseContent.DestinationCourseIdentifiers[0] = new API.CourseIdentifier(); copyCourseContent.DestinationCourseIdentifiers[0].ID = request.DestinationCourseCallNumber; copyCourseContent.DestinationCourseIdentifiers[0].MappingType = API.MappedIDType.CallNumber; copyCourseContent.SourceClientSortString = request.SourceClientSortString; copyCourseContent.SourceCourseIdentifier = new API.CourseIdentifier(); // Set the Source Coruse Identifier accordingly if (request.SourceCourseId != null) { copyCourseContent.SourceCourseIdentifier.ID = request.SourceCourseId; copyCourseContent.SourceCourseIdentifier.MappingType = API.MappedIDType.CourseID; } else { copyCourseContent.SourceCourseIdentifier.ID = request.SourceCourseCallNumber; copyCourseContent.SourceCourseIdentifier.MappingType = API.MappedIDType.CallNumber; } return copyCourseContent; }
/// <summary> /// Generates a CopyCourseContent Course API Request /// </summary> /// <param name="request"><see cref="CopyCourseContentRequest">object</see></param> /// <returns><see cref="Response"/>object</returns> public Response CopyCourseContent(CopyCourseContentRequest request) { API.ContentCopyRequestEx copyContent = null; Response response = null; try { // Validate the Request Object ValidateCopyCourseContentRequest(request); // Intialize and Set the CopyCourseContentRequest copyContent = SetCopyCourseContentRequest(request); // Build the Response object from the SOAP response response = ReadCopyCourseContentResponse(copyContent); } catch (Exception ex) { Logger.Error("Exception from CopyCourseContent: ", ex); throw; } finally { if (this.courseAPI != null) this.courseAPI.Close(); } return response; }
/// <summary> /// Performs validation and business logic checks on the CopyCourseContentRequest values /// </summary> /// <param name="request"><see cref="CopyCourseContentRequest">object</see></param> /// <exception cref="ArgumentNullException">Thrown when a required value is not set in the <see cref="CopyCourseContentRequest">object</see></exception> /// <exception cref="ArgumentException">Thrown when there is a conflict between the values in the <see cref="CopyCourseContentRequest">object</see></exception> private static void ValidateCopyCourseContentRequest(CopyCourseContentRequest request) { // Perform a Parameter Validation and Business Logice Check on the Request if (request.ClientString == null) throw new ArgumentNullException("The ClientString value is required. Please correct and try the reqeust again."); else if (request.DestinationCourseCallNumber == null) throw new ArgumentNullException("The DestinationCourseCallNumber value is required. Please correct and try the request again."); else if (request.SourceClientSortString == null) throw new ArgumentNullException("The SourceClientSortString value is required. Please correct and try the request again."); else if (request.SourceCourseCallNumber == null && request.SourceCourseId == null) throw new ArgumentNullException("Either a SourceCourseCallNumber or SourceCourseId value is required. Please correct and try the request again."); else if (request.SourceCourseCallNumber != null && request.SourceCourseId != null) throw new ArgumentException("The SourceCourseCallNumber and SourceCourseId values are mutually exclusive. Only set one of the values for a given Source Coruse. Please correct and try the request again."); }