public HttpResponseMessage GetContacts(ReportViewModel viewmodel) { viewmodel.CustomStartDate = viewmodel.CustomStartDate != DateTime.MinValue ? ToUserUtcDateTime(viewmodel.CustomStartDate) : DateTime.MinValue; viewmodel.CustomEndDate = ToUserUtcDateTime(viewmodel.CustomEndDate); if (viewmodel.ReportType != Reports.FirstLeadSourceReport && viewmodel.ReportType != Reports.AllLeadSourceReport && viewmodel.ReportType != Reports.DatabaseLifeCycleReport) { viewmodel.CustomStartDatePrev = viewmodel.CustomStartDatePrev != DateTime.MinValue ? ToUserUtcDateTime(viewmodel.CustomStartDatePrev) : DateTime.MinValue; viewmodel.CustomEndDatePrev = viewmodel.CustomEndDatePrev != DateTime.MinValue ? ToUserUtcDateTime(viewmodel.CustomEndDatePrev) : DateTime.MaxValue; } ReportDataRequest request = new ReportDataRequest() { ReportViewModel = viewmodel, AccountId = this.AccountId, RequestedBy = this.UserId, RoleId = this.RoleId, IsSTAdmin = this.IsSTAdmin }; ReportDataResponse response = new ReportDataResponse(); if (viewmodel.Type == 'T') { response = reportService.GetTrafficByTypeContacts(request); } else if (viewmodel.Type == 'P') { response = reportService.GetOpportunityPipelineContacts(request); } else if (viewmodel.Type == 'S') { response = reportService.GetTrafficBySourceContacts(request); } else if (viewmodel.Type == 'L') { response = reportService.GetTrafficByLifeCycleContacts(request); } else if (viewmodel.Type == 'C') { response = reportService.GetTrafficByTypeAndLifeCycleContacts(request); } else if (viewmodel.Type == 'A' && (viewmodel.ActivityModule == "Contacts" || viewmodel.ActivityModule == "Tours" || viewmodel.ActivityModule == "Notes")) { request.ModuleId = viewmodel.ActivityModule == "Contacts" ? (byte)AppModules.Contacts : viewmodel.ActivityModule == "Tours" ? (byte)AppModules.ContactTours : (byte)AppModules.ContactNotes; response = reportService.GetActivityReportContacts(request); } else if (viewmodel.ReportType == Reports.FirstLeadSourceReport) { response = reportService.FirstLeadSourceReportContacts(request); } else if (viewmodel.ReportType == Reports.AllLeadSourceReport) { response = reportService.AllLeadSourceReportContacts(request); } else if (viewmodel.ReportType == Reports.DatabaseLifeCycleReport) { response = reportService.AllDatabaseReportContacts(request); } return(Request.BuildResponse(response)); }
private void ExpectReportDataRequest(ReportDataRequest request, HttpStatusCode responseCode, object response) { ExpectRequest(_reportDataPath, new { lineName = request.LineName, stationName = request.StationName, passResult = request.PassResult, processTimeSeconds = request.ProcessTimeSeconds, failReason = request.FailReason, failNotes = request.FailNotes, orgName = _orgName }, responseCode, response); }
public async Task ShouldReportDataWhenValidPassRequest() { var request = new ReportDataRequest { LineName = "line 1", StationName = "station 1", PassResult = "PASS", ProcessTimeSeconds = 100 }; ExpectReportDataRequest(request, HttpStatusCode.OK, new { }); await _andonClient.ReportDataAsync(request); }
public async Task ShouldThrowExceptionWhenUnknownFailResponse() { var request = new ReportDataRequest() { LineName = "line 1", StationName = "station 1", PassResult = "PASS", ProcessTimeSeconds = 100 }; ExpectReportDataRequest(request, HttpStatusCode.BadRequest, new {}); await _andonClient.ReportDataAsync(request); }
/// <summary> /// 客户上报用户数据功能,为了更好地为用户提供优质服务 /// </summary> /// <param name="req"><see cref="ReportDataRequest"/></param> /// <returns><see cref="ReportDataResponse"/></returns> public ReportDataResponse ReportDataSync(ReportDataRequest req) { JsonResponseModel <ReportDataResponse> rsp = null; try { var strResp = this.InternalRequestSync(req, "ReportData"); rsp = JsonConvert.DeserializeObject <JsonResponseModel <ReportDataResponse> >(strResp); } catch (JsonSerializationException e) { throw new TencentCloudSDKException(e.Message); } return(rsp.Response); }
/// <summary> /// Retrieves report data; /// given type should contain public properties marked /// with attributes [Dimension] or [Metric], /// those will be passed to service within request /// </summary> /// <typeparam name="T">Type containing desired dimensions and metrics</typeparam> /// <param name="filter">Data filter</param> public async Task <IEnumerable <T> > GetData <T>(ReportFilter filter) where T : new () { var parser = new ReportDataParser <T>(); var request = new ReportDataRequest { Filter = filter, Dimensions = parser.Dimensions, Metrics = parser.Metrics }; var raw = await GetRawData(request).ConfigureAwait(false); return(parser.Parse(raw)); }
public async Task ShouldThrowExceptionWhenReportDataMissingLineName() { var request = new ReportDataRequest() { StationName = "station 1", PassResult = "PASS", ProcessTimeSeconds = 100 }; ExpectReportDataRequest(request, HttpStatusCode.BadRequest, new AppError { ErrorType = "INVALID_REQUEST", ErrorMessage = "lineName may not be empty" }); await _andonClient.ReportDataAsync(request); }
public async Task ShouldReportDataWhenValidFailRequest() { var request = new ReportDataRequest() { LineName = "line 1", StationName = "station 1", PassResult = "FAIL", ProcessTimeSeconds = 200, FailReason = "Test Failure", FailNotes = "notes" }; ExpectReportDataRequest(request, HttpStatusCode.OK, new { }); await _andonClient.ReportDataAsync(request); }
public async Task ShouldThrowExceptionWhenInternalErrorResponse() { var request = new ReportDataRequest() { LineName = "line 1", StationName = "station 1", PassResult = "PASS", ProcessTimeSeconds = 100 }; ExpectReportDataRequest(request, HttpStatusCode.BadRequest, new AppError { ErrorType = "INTERNAL_ERROR", ErrorMessage = "something broke" }); await _andonClient.ReportDataAsync(request); }
public async Task ShouldThrowExceptionWhenReportDataInvalidPassResult() { var request = new ReportDataRequest() { LineName = "line 1", StationName = "station 1", PassResult = "PAS", ProcessTimeSeconds = 100 }; ExpectReportDataRequest(request, HttpStatusCode.BadRequest, new AppError { ErrorType = "INVALID_REQUEST", ErrorMessage = "'PAS' is not a valid pass result." }); await _andonClient.ReportDataAsync(request); }
public async Task ShouldThrowExceptionWhenReportDataStationNotFound() { var request = new ReportDataRequest() { LineName = "line 1", StationName = "station 2", PassResult = "PASS", ProcessTimeSeconds = 100 }; ExpectReportDataRequest(request, HttpStatusCode.BadRequest, new AppError { ErrorType = "RESOURCE_NOT_FOUND", ErrorMessage = "Station not found" }); await _andonClient.ReportDataAsync(request); }
public HttpResponseMessage GetReportData(ReportViewModel viewmodel) { viewmodel.CustomStartDate = viewmodel.CustomStartDate != DateTime.MinValue ? ToUserUtcDateTime(viewmodel.CustomStartDate) : DateTime.MinValue; viewmodel.CustomEndDate = ToUserUtcDateTime(viewmodel.CustomEndDate); viewmodel.CustomStartDatePrev = viewmodel.CustomStartDatePrev != DateTime.MinValue ? ToUserUtcDateTime(viewmodel.CustomStartDatePrev) : DateTime.MinValue; viewmodel.CustomEndDatePrev = viewmodel.CustomEndDatePrev != DateTime.MinValue ? ToUserUtcDateTime(viewmodel.CustomEndDatePrev) : DateTime.MinValue; ReportDataRequest request = new ReportDataRequest() { ReportViewModel = viewmodel, AccountId = this.AccountId, RequestedBy = this.UserId, RoleId = this.RoleId }; ReportDataResponse response = new ReportDataResponse(); if (viewmodel.Type == 'T') { response = reportService.GetTrafficByTypeData(request); } if (viewmodel.Type == 'P') { response = reportService.GetOpportunityPipeline(request); } if (viewmodel.Type == 'S') { response = reportService.GetTrafficBySourceData(request); } if (viewmodel.Type == 'L') { response = reportService.GetTrafficByLifeCycleData(request); } if (viewmodel.Type == 'A') { response = reportService.GetActivityData(request); } if (viewmodel.Type == 'C') { response = reportService.GetTrafficByTypeAndLifeCycleData(request); } // UpdateLastRunActivity(viewmodel.ReportId, viewmodel.ReportName); return(Request.BuildResponse(response)); }
private async Task <string> GetRawData(ReportDataRequest request) { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(credential.TokenType, credential.AccessToken); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var content = new StringContent(JsonConvert.SerializeObject(request)); content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var respond = await client .PostAsync(new Uri("https://api.adform.com/v1/reportingstats/publisher/reportdata"), content) .ConfigureAwait(false); return(await respond.Content .ReadAsStringAsync() .ConfigureAwait(false)); } }
public async Task ShouldThrowExceptionWhenSpring500Error() { var request = new ReportDataRequest() { LineName = "line 1", StationName = "station 1", PassResult = "PASS", ProcessTimeSeconds = 100 }; ExpectReportDataRequest(request, HttpStatusCode.InternalServerError, new AppError { Timestamp = "2018-03-07T16:15:19.033+0000", Status = 500, Error = "error", Message = "message", Path = "/public/api/v1/data/report" }); await _andonClient.ReportDataAsync(request); }
public async Task ShouldThrowExceptionWhenReportDataUnauthorized() { var request = new ReportDataRequest() { LineName = "line 1", StationName = "station 1", PassResult = "PASS", ProcessTimeSeconds = 100 }; ExpectReportDataRequest(request, HttpStatusCode.Unauthorized, new AppError { Timestamp = "2018-03-07T16:15:19.033+0000", Status = 401, Error = "Unauthorized", Message = "Unauthorized", Path = "/public/api/v1/data/report" }); await _andonClient.ReportDataAsync(request); }
/// <summary> /// Reports the outcome of a process at a station to Andon. /// </summary> /// <example> /// <code> /// andonClient.ReportDataAsync(new ReportDataRequest /// { /// LineName = "line 1", /// StationName = "station 1", /// PassResult = "FAIL", /// FailReason = "Test Failure", /// FailNotes = "notes", /// ProcessTimeSeconds = 120 /// }); /// </code> /// </example> /// <param name="request">The data to report</param> /// <exception cref="AndonApp.Exceptions.AndonAppException">If there is a general request failure</exception> /// <exception cref="AndonApp.Exceptions.AndonBadRequestException">If there is something wrong with the request</exception> /// <exception cref="AndonApp.Exceptions.AndonInternalErrorException">If there is a failure within Andon</exception> /// <exception cref="AndonApp.Exceptions.AndonInvalidRequestException">If there are invalid request arguments</exception> /// <exception cref="AndonApp.Exceptions.AndonResourceNotFoundException">If the referenced station cannot be found</exception> /// <exception cref="AndonApp.Exceptions.AndonUnauthorizedRequestException">If authorization fails</exception> public async Task ReportDataAsync(ReportDataRequest request) { await ExcecuteRequest(request, _reportDataPath).ConfigureAwait(false); }