/*
* Retrieves the data needed to create the ReportV11ParametersDto object that is being sent to generate the report
*/
// Retrieves the customer id from the ticket
var customerId = meridixClient.GetTicketCustomerId();
// Retrieves the modules names activated
var modules = meridixClient.ReportApiV11().GetAvailableModules();
// Retrieves the report name identifier
var reportNames = meridixClient.ReportApiV11().GetAvailableReports(modules["theModuleIWantReportsFrom"]);
// Optional
// Retrieves the different types of measurement objects
var measurementObjectTypes = meridixClient.ReportApiV11().GetAvailableMeasurementObjectTypes(modules["theModuleIWantReportsFrom"], reportNames["theNameOfTheReport"]);
// Retrieves the measurement objects that the report should be based on
// The argument is the key in the measurementObjectTypes
var listOfMeasurementObjects = meridixClient.ReportApiV11().GetAvailableMeasurementObjects(measurementObjectTypes.Keys.First());
// Optional
// Retrieves the groups the measurement objects might belong to
var listOfGroups = meridixClient.ReportApiV11().GetAvailableGroups();
// There are to types of groupings result and interval and they are both used indifferently of each other
// Result grouping groups the result based on measurement objects or the groups the measurement objects belong to
// Is a list containing [Total|Objects|Groups|GroupsObjects]
var resultGroupings = meridixClient.ReportApiV11().GetAvailableResultGroupings();
// Optional
// Interval grouping sets the time grouping [Time|Weekday|Month|Date|Week|YearMonth|Quarter|Year|Period]
var intervalGrouping = meridixClient.ReportApiV11().GetAvailableIntervalGroupings();
// Retrieves any custom parameters on the report if they exist
var customParameters = meridixClient.ReportApiV11()
.GetAvailableCustomParameters(modules["theModuleIWantReportsFrom"], reportNames["theNameOfTheReport"]);
/*
* Create the ReportV11ParametersDto object
*/
var parameters = new ReportV11ParametersDto()
{
CustomerId = customerId,
ModuleName = modules["theModuleIWantReportsFrom"],
ReportName = reportNames["theNameOfTheReport"],
FromDate = "20190415",
ToDate = "20190419",
Dates = null, // OPTIONAL: Used to create report for specific dates, is an array of date-strings
FromMinute = 420, // The time of day to start measure in minutes from 00:00 in the morning
ToMinute = 1019, // The time of day to stop measure in minutes from 00:00 in the morning
IntervalMinutes = 30,
TimeFormat = "hhmmss", // OPTIONAL
ResultGrouping = "GroupsObjects",
CollectionPointIdentifier = "CollectionPointIdentifier", // OPTIONAL: Can be excluded if there is only one and you are not using a system ticket. Can be found in the web portal Administration => Collection Points
MeasurementObjectType = measurementObjectTypes.Keys.First(), // OPTIONAL
MeasurementObjectIdentifiers = new List<string>() // Specifies the measurement object that the report is based on.
{
listOfMeasurementObjects[0].ObjectIdentifier,
listOfMeasurementObjects[1].ObjectIdentifier // And so on
},
MeasurementObjectGroupIdentifiers = new List<string>() // OPTIONAL: The group identifiers
{
listOfGroups[0].Name,
listOfGroups[1].Name
},
CustomParameters = { }, // OPTIONAL: Custom parameters are defined here if they exist
IgnoreNonExistingMeasurementObjectIdentifiers = false, // OPTIONAL: Specifies if the API should ignore any exceptions thrown if a measurement object is specified but does not exist or is accessible
IncludeColumns = new List<string>() // OPTIONAL: An array of strings with the column names that you would like to return in the result. Leave empty or skip to include all.
{
"Incoming",
"IncFromExternal",
"IncFromInternal",
"IncFromQueues",
"IncAnswered",
"IncAbandoned",
"Outgoing",
"OutToExternal",
"OutToInternal",
"OutAnswered",
"OutAbandoned",
},
IncludeGroupings = new List<string>() // OPTIONAL: An array of strings with the interval grouping that you would like to return in the result. Leave empty or skip to include all.
{
"Time",
"Weekday",
"Month",
"Date",
"Week",
"YearMonth",
"Quarter",
"Year",
"Period"
},
IncludeSpecificationLists = true // OPTIONAL: A boolean value specifying if a the call specification should be included (if possible). Note that there are a max limit of items configured on the system level that cannot be overridden through the API.
};
/*
* Generate the report using the ReportV11ParametersDto
*/
ReportV11ResultDto result = meridixClient.ReportApiV11().Generate(parameters, new CultureInfo("en-GB"));
/*
* Extract data from the report
*/
var totalPeriod = result.Presentations.Groupings["period"]; // Gets the data from the period grouping
var columns = result.PresentaiontsPresentations.Columns["incoming"]; // Gets metadata about the columns (name and description)
|