/// <summary> /// Prepares a performance sort field to be passed as a string parameter to a web API /// method /// </summary> /// <param name="data">A performance sort field to convert</param> /// <exception cref="ApiParameterMaskException"> /// Thrown when an unrecognized PerfSortField was encountered /// </exception> /// <returns> /// The name of a column to sort performances by, or an empty string if the value was /// null /// </returns> private static string Mask(PerfSortField? data) { // If the sort field is null, return String.Empty if (data == null) { return String.Empty; } // Otherwise attempt to discern a performance column name from the specified sort field switch (data) { case PerfSortField.PackageId: return "pkg_no"; case PerfSortField.Id: return "perf_no"; case PerfSortField.PackageCode: return "pkg_code"; case PerfSortField.Code: return "perf_code"; case PerfSortField.Date: return "perf_date"; case PerfSortField.GrossAvailability: return "gross_availbility"; case PerfSortField.AvailabilityByCustomer: return "availbility_by_customer"; case PerfSortField.VenueId: return "facility_no"; case PerfSortField.MetCriteria: return "met_criteria_in"; case PerfSortField.TimeSlotId: return "time_slot"; case PerfSortField.Name: return "description"; case PerfSortField.OnSale: return "on_sale_ind"; case PerfSortField.BusinessUnit: return "bu"; case PerfSortField.ProdSeasonId: return "prod_season_no"; case PerfSortField.NoName: return "no_name"; case PerfSortField.ZmapId: return "zmap_no"; case PerfSortField.StartDate: return "start_dt"; case PerfSortField.EndDate: return "end_dt"; case PerfSortField.FirstDate: return "first_dt"; case PerfSortField.LastDate: return "last_dt"; case PerfSortField.VenueName: return "facility_desc"; case PerfSortField.Weight: return "weight"; case PerfSortField.SuperPackage: return "super_pkg_ind"; case PerfSortField.FixedSeat: return "fixed_seat_ind"; case PerfSortField.Flex: return "flex_ind"; case PerfSortField.ProdTypeId: return "prod_type"; case PerfSortField.ProdTypeName: return "prod_type_desc"; case PerfSortField.SeasonId: return "season_no"; case PerfSortField.SeasonName: return "season_desc"; case PerfSortField.StatusId: return "perf_status"; case PerfSortField.StatusName: return "perf_status_desc"; case PerfSortField.Relevance: return "relevance"; case PerfSortField.PremiereId: return "premiere_id"; case PerfSortField.PremiereName: return "premiere_desc"; case PerfSortField.TimeSlotName: return "time_slot_desc"; } // Throw an exception if the sort field wasn't accounted for in the above list throw new ApiParameterMaskException(data.Value.ToString()); }
private static PerfCollection DoGetPerformances(string sessionKey, DateTime? startDateTime, DateTime? endDateTime, short? venueId, short? modeOfSaleId, int? businessUnit, PerfSortField? sortField, string[] keywords, bool? matchAllKeywords, string artistLastName, string artistFirstName, string artistMiddleName, string fullTextSearchCriteria, FullTextSearchSyntaxType? fullTextSearchSyntaxType, ContentTypeIdsParam contentTypeIds, int[] perfIds, int[] seasonIds, bool? computeSeatCounts) { string cKeywordAndOrStatementValue; if (matchAllKeywords.HasValue) { cKeywordAndOrStatementValue = matchAllKeywords.Value ? "2" : "1"; } else { cKeywordAndOrStatementValue = String.Empty; } string sArtistLastNameValue; if (artistLastName == null && artistFirstName == null && artistMiddleName == null) { sArtistLastNameValue = String.Empty; } else { sArtistLastNameValue = Mask(artistLastName) + "/" + Mask(artistFirstName) + "/" + Mask(artistMiddleName); } DataSet results = UnsecureTess.GetPerformancesEx4( sWebSessionId: Mask(sessionKey), sStartDate: startDateTime.HasValue ? startDateTime.ToString() : String.Empty, sEndDate: endDateTime.HasValue ? endDateTime.ToString() : String.Empty, iVenueID: venueId ?? -1, iModeOfSale: modeOfSaleId ?? Defaults.ModeOfSaleId, iBusinessUnit: businessUnit ?? -1, sSortString: Mask(sortField), sKeywords: keywords == null ? String.Empty : String.Join(",", keywords), cKeywordAndOrStatement: cKeywordAndOrStatementValue, sArtistLastName: sArtistLastNameValue, sFullText: fullTextSearchCriteria ?? String.Empty, sFullTextType: Mask(fullTextSearchSyntaxType), sContentType: contentTypeIds == null ? String.Empty : contentTypeIds.ToString(), sPerformanceIds: perfIds == null ? String.Empty : String.Join(",", perfIds), sSeasonIds: seasonIds == null ? String.Empty : String.Join(",", seasonIds), bIncludeSeatCounts: computeSeatCounts ?? false); if (results.Tables["Performance"].Rows.Count == 0) { return null; } return new PerfCollection(results.Tables["Performance"]); }