コード例 #1
0
        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));
        }
コード例 #2
0
 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);
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
ファイル: ReportDataService.cs プロジェクト: MaksZ/AdformDemo
        /// <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));
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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));
        }
コード例 #13
0
ファイル: ReportDataService.cs プロジェクト: MaksZ/AdformDemo
        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));
            }
        }
コード例 #14
0
        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);
        }
コード例 #15
0
        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);
        }
コード例 #16
0
 /// <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);
 }