Esempio n. 1
0
        public async Task UpsertVacancyAnalyticSummaryAsync(VacancyAnalyticsSummary summary)
        {
            summary.Id          = QueryViewType.VacancyAnalyticsSummary.GetIdValue(summary.VacancyReference.ToString());
            summary.LastUpdated = _timeProvider.Now;

            await _queryStore.UpsertAsync(summary);
        }
        public async Task <VacancyAnalyticsSummary> GetVacancyAnalyticEventSummaryAsync(long vacancyReference)
        {
            try
            {
                using (var conn = new SqlConnection(_vacancyAnalyticEventsDbConnString))
                {
                    using (var command = new SqlCommand(GetVacancyAnalyticEventsSqlSproc, conn))
                    {
                        command.CommandType = CommandType.StoredProcedure;

                        var inputParam = command.CreateParameter();
                        inputParam.ParameterName = "@VacancyReference";
                        inputParam.DbType        = DbType.Int64;
                        inputParam.Value         = vacancyReference;
                        inputParam.Direction     = ParameterDirection.Input;

                        command.Parameters.Add(inputParam);

                        using (var reader = await RetryPolicy.ExecuteAsync(async context =>
                        {
                            await conn.OpenAsync();
                            return(await command.ExecuteReaderAsync());
                        }, new Context(nameof(GetVacancyAnalyticEventSummaryAsync))))
                        {
                            await reader.ReadAsync();

                            var summary = new VacancyAnalyticsSummary
                            {
                                VacancyReference                        = reader.GetInt64(VacancyReferenceColumnIndex),
                                NoOfApprenticeshipSearches              = reader.GetInt32(NoOfApprenticeshipSearchesColumnIndex),
                                NoOfApprenticeshipSavedSearchAlerts     = reader.GetInt32(NoOfApprenticeshipSavedSearchAlertsColumnIndex),
                                NoOfApprenticeshipSaved                 = reader.GetInt32(NoOfApprenticeshipSavedColumnIndex),
                                NoOfApprenticeshipDetailsViews          = reader.GetInt32(NoOfApprenticeshipDetailsViewsColumnIndex),
                                NoOfApprenticeshipApplicationsCreated   = reader.GetInt32(NoOfApprenticeshipApplicationsCreatedColumnIndex),
                                NoOfApprenticeshipApplicationsSubmitted = reader.GetInt32(NoOfApprenticeshipApplicationsSubmittedColumnIndex)
                            };

                            return(summary);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error retrieving vacancy events from the Vacancy Analytic Events DB.");
                throw;
            }
        }
        public static VacancyAnalyticsSummaryViewModel MapToVacancyAnalyticsSummaryViewModel(VacancyAnalyticsSummary vacancyAnalyticsSummary, DateTime liveDate)
        {
            var summaryViewModel = new VacancyAnalyticsSummaryViewModel
            {
                LiveDate        = liveDate,
                LastUpdatedDate = vacancyAnalyticsSummary.LastUpdated == DateTime.MinValue ? DateTime.UtcNow : vacancyAnalyticsSummary.LastUpdated,

                NoOfTimesAppearedInSearch = vacancyAnalyticsSummary.NoOfApprenticeshipSearches,
                NoOfTimesAppearedInSearchOverLastSevenDays = vacancyAnalyticsSummary.NoOfApprenticeshipSearchesSevenDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipSearchesSixDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipSearchesFiveDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipSearchesFourDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipSearchesThreeDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipSearchesTwoDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipSearchesOneDayAgo,
                NoOfApplicationsStarted = vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsCreated,
                NoOfApplicationsStartedOverLastSevenDays = vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsCreatedSevenDaysAgo
                                                           + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsCreatedSixDaysAgo
                                                           + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsCreatedFiveDaysAgo
                                                           + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsCreatedFourDaysAgo
                                                           + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsCreatedThreeDaysAgo
                                                           + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsCreatedTwoDaysAgo
                                                           + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsCreatedOneDayAgo,
                NoOfApplicationsSubmitted = vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsSubmitted,
                NoOfApplicationsSubmittedOverLastSevenDays = vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsSubmittedSevenDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsSubmittedSixDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsSubmittedFiveDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsSubmittedFourDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsSubmittedThreeDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsSubmittedTwoDaysAgo
                                                             + vacancyAnalyticsSummary.NoOfApprenticeshipApplicationsSubmittedOneDayAgo,
                NoOfTimesViewed = vacancyAnalyticsSummary.NoOfApprenticeshipDetailsViews,
                NoOfTimesViewedOverLastSevenDays = vacancyAnalyticsSummary.NoOfApprenticeshipDetailsViewsSevenDaysAgo
                                                   + vacancyAnalyticsSummary.NoOfApprenticeshipDetailsViewsSixDaysAgo
                                                   + vacancyAnalyticsSummary.NoOfApprenticeshipDetailsViewsFiveDaysAgo
                                                   + vacancyAnalyticsSummary.NoOfApprenticeshipDetailsViewsFourDaysAgo
                                                   + vacancyAnalyticsSummary.NoOfApprenticeshipDetailsViewsThreeDaysAgo
                                                   + vacancyAnalyticsSummary.NoOfApprenticeshipDetailsViewsTwoDaysAgo
                                                   + vacancyAnalyticsSummary.NoOfApprenticeshipDetailsViewsOneDayAgo,
            };

            return(summaryViewModel);
        }