public async Task Save(SubmissionSummaryModel submissionSummary, CancellationToken cancellationToken) { var transaction = await Database.BeginTransactionAsync(cancellationToken).ConfigureAwait(false); try { await Database.ExecuteSqlCommandAsync($@" Delete From [Metrics].[SubmissionSummary] Where Ukprn = {submissionSummary.Ukprn} And AcademicYear = {submissionSummary.AcademicYear} And CollectionPeriod = {submissionSummary.CollectionPeriod} " , cancellationToken); await SubmissionSummaries.AddAsync(submissionSummary, cancellationToken); await SaveChangesAsync(cancellationToken).ConfigureAwait(false); transaction.Commit(); } catch { transaction.Rollback(); throw; } }
public void CreateSubmissionSummaryModel(byte collectionPeriod, short academicYear) { submissionSummaryModel = new SubmissionSummaryModel { Percentage = 0, CollectionPeriod = collectionPeriod, AcademicYear = academicYear, JobId = 123, TotalDataLockedEarnings = 123, AlreadyPaidDataLockedEarnings = 123, AdjustedDataLockedEarnings = 123, Ukprn = 123, SubmissionMetrics = new ContractTypeAmountsVerbose(), DcEarnings = new ContractTypeAmounts(), DasEarnings = new ContractTypeAmountsVerbose(), HeldBackCompletionPayments = new ContractTypeAmounts(), RequiredPayments = new ContractTypeAmounts(), YearToDatePayments = new ContractTypeAmounts(), }; }
public virtual SubmissionSummaryModel GetMetrics() { var result = new SubmissionSummaryModel { CollectionPeriod = CollectionPeriod, AcademicYear = AcademicYear, JobId = JobId, Ukprn = Ukprn, DcEarnings = GetDcEarnings(), AlreadyPaidDataLockedEarnings = alreadyPaidDataLocked, TotalDataLockedEarnings = actualTotalDataLocked, AdjustedDataLockedEarnings = actualTotalDataLocked - alreadyPaidDataLocked, DataLockMetrics = new List <DataLockCountsModel> { new DataLockCountsModel { Amounts = dataLocked } }, HeldBackCompletionPayments = heldBackCompletionPayments, YearToDatePayments = yearToDatePayments, RequiredPayments = GetRequiredPayments(), RequiredPaymentsMetrics = GetRequiredPaymentsMetrics(), }; result.DasEarnings = GetDasEarnings(result.DcEarnings.ContractType1, result.DcEarnings.ContractType2); result.EarningsMetrics = new List <EarningsModel>(); result.EarningsMetrics.AddRange(dcEarnings.Select(earning => new EarningsModel { EarningsType = EarningsType.Dc, Amounts = earning })); result.EarningsMetrics.AddRange(dasEarnings.Select(earning => new EarningsModel { EarningsType = EarningsType.Das, Amounts = earning })); result.SubmissionMetrics = GetSubmissionMetrics(result); result.Percentage = result.SubmissionMetrics.Percentage; return(result); }
private ContractTypeAmountsVerbose GetSubmissionMetrics(SubmissionSummaryModel submissionSummary) { var submissionMetrics = new ContractTypeAmountsVerbose { ContractType1 = submissionSummary.YearToDatePayments.ContractType1 + submissionSummary.RequiredPayments.ContractType1 + submissionSummary.AdjustedDataLockedEarnings + submissionSummary.HeldBackCompletionPayments.ContractType1, ContractType2 = submissionSummary.YearToDatePayments.ContractType2 + submissionSummary.RequiredPayments.ContractType2 + submissionSummary.HeldBackCompletionPayments.ContractType2 }; submissionMetrics.DifferenceContractType1 = submissionMetrics.ContractType1 - submissionSummary.DcEarnings.ContractType1; submissionMetrics.DifferenceContractType2 = submissionMetrics.ContractType2 - submissionSummary.DcEarnings.ContractType2; submissionMetrics.PercentageContractType1 = Helpers.GetPercentage(submissionMetrics.ContractType1, submissionSummary.DcEarnings.ContractType1); submissionMetrics.PercentageContractType2 = Helpers.GetPercentage(submissionMetrics.ContractType2, submissionSummary.DcEarnings.ContractType2); submissionMetrics.Percentage = Helpers.GetPercentage(submissionMetrics.Total, submissionSummary.DcEarnings.Total); return(submissionMetrics); }
public async Task SaveSubmissionMetrics(SubmissionSummaryModel submissionSummary, CancellationToken cancellationToken) { await persistenceDataContext.Save(submissionSummary, cancellationToken).ConfigureAwait(false); }
private void SendMetricsTelemetry(SubmissionSummaryModel metrics, long reportGenerationDuration) { var properties = new Dictionary <string, string> { { TelemetryKeys.JobId, metrics.JobId.ToString() }, { TelemetryKeys.Ukprn, metrics.Ukprn.ToString() }, { TelemetryKeys.CollectionPeriod, metrics.CollectionPeriod.ToString() }, { TelemetryKeys.AcademicYear, metrics.AcademicYear.ToString() }, }; var submissionMetrics = metrics.SubmissionMetrics; var dasEarnings = metrics.DasEarnings; var dcEarnings = metrics.DcEarnings; // ReSharper disable InconsistentNaming this is to make variable name easy to read var das_earningsMetrics = metrics.EarningsMetrics.Where(x => x.EarningsType == EarningsType.Das).ToList(); var dc_earningsMetrics = metrics.EarningsMetrics.Where(x => x.EarningsType == EarningsType.Dc).ToList(); var dataLockMetrics = metrics.DataLockMetrics; var requiredPayments_Act1_Metrics = metrics.RequiredPaymentsMetrics.Where(x => x.Amounts.ContractType == ContractType.Act1).ToList(); var requiredPayments_Act2_Metrics = metrics.RequiredPaymentsMetrics.Where(x => x.Amounts.ContractType == ContractType.Act2).ToList(); var stats = new Dictionary <string, double> { { "ReportGenerationDuration", reportGenerationDuration }, { "Percentage", (double)submissionMetrics.Percentage }, { "ContractType1Percentage", (double)submissionMetrics.PercentageContractType1 }, { "ContractType2Percentage", (double)submissionMetrics.PercentageContractType2 }, { "DifferenceTotal", (double)submissionMetrics.DifferenceTotal }, { "DifferenceContractType1", (double)submissionMetrics.DifferenceContractType1 }, { "DifferenceContractType2", (double)submissionMetrics.DifferenceContractType2 }, { "EarningsPercentage", (double)dasEarnings.Percentage }, { "EarningsPercentageContractType1", (double)dasEarnings.PercentageContractType1 }, { "EarningsPercentageContractType2", (double)dasEarnings.PercentageContractType2 }, { "EarningsDifferenceTotal", (double)dasEarnings.DifferenceTotal }, { "EarningsDifferenceContractType1", (double)dasEarnings.DifferenceContractType1 }, { "EarningsDifferenceContractType2", (double)dasEarnings.DifferenceContractType2 }, { "DasEarningsTotal", (double)dasEarnings.Total }, { "DasEarningsContractType1Total", (double)dasEarnings.ContractType1 }, { "DasEarningsContractType2Total", (double)dasEarnings.ContractType2 }, { "DcEarningsTotal", (double)dcEarnings.Total }, { "DcEarningsContractType1Total", (double)dcEarnings.ContractType1 }, { "DcEarningsContractType2Total", (double)dcEarnings.ContractType2 }, { "DataLockedEarningsAmount", (double)metrics.AdjustedDataLockedEarnings }, { "DataLockedEarningsTotal", (double)metrics.TotalDataLockedEarnings }, { "DataLockAmountAlreadyPaid", (double)metrics.AlreadyPaidDataLockedEarnings }, { "HeldBackCompletionPayments", (double)metrics.HeldBackCompletionPayments.Total }, { "HeldBackCompletionPaymentsContractType1", (double)metrics.HeldBackCompletionPayments.ContractType1 }, { "HeldBackCompletionPaymentsContractType2", (double)metrics.HeldBackCompletionPayments.ContractType1 }, { "YearToDatePaymentsTotal", (double)metrics.YearToDatePayments.Total }, { "YearToDatePaymentsContractType1Total", (double)metrics.YearToDatePayments.ContractType1 }, { "YearToDatePaymentsContractType2Total", (double)metrics.YearToDatePayments.ContractType2 }, { "DasEarningsTransactionType1", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType1) }, { "DasEarningsTransactionType2", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType2) }, { "DasEarningsTransactionType3", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType3) }, { "DasEarningsTransactionType4", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType4) }, { "DasEarningsTransactionType5", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType5) }, { "DasEarningsTransactionType6", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType6) }, { "DasEarningsTransactionType7", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType7) }, { "DasEarningsTransactionType8", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType8) }, { "DasEarningsTransactionType9", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType9) }, { "DasEarningsTransactionType10", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType10) }, { "DasEarningsTransactionType11", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType11) }, { "DasEarningsTransactionType12", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType12) }, { "DasEarningsTransactionType13", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType13) }, { "DasEarningsTransactionType14", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType14) }, { "DasEarningsTransactionType15", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType15) }, { "DasEarningsTransactionType16", (double)das_earningsMetrics.Sum(x => x.Amounts.TransactionType16) }, { "DcEarningsTransactionType1", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType1) }, { "DcEarningsTransactionType2", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType2) }, { "DcEarningsTransactionType3", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType3) }, { "DcEarningsTransactionType4", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType4) }, { "DcEarningsTransactionType5", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType5) }, { "DcEarningsTransactionType6", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType6) }, { "DcEarningsTransactionType7", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType7) }, { "DcEarningsTransactionType8", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType8) }, { "DcEarningsTransactionType9", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType9) }, { "DcEarningsTransactionType10", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType10) }, { "DcEarningsTransactionType11", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType11) }, { "DcEarningsTransactionType12", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType12) }, { "DcEarningsTransactionType13", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType13) }, { "DcEarningsTransactionType14", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType14) }, { "DcEarningsTransactionType15", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType15) }, { "DcEarningsTransactionType16", (double)dc_earningsMetrics.Sum(x => x.Amounts.TransactionType16) }, { "DataLockedCountDLock1", dataLockMetrics.Amounts.DataLock1 }, { "DataLockedCountDLock2", dataLockMetrics.Amounts.DataLock2 }, { "DataLockedCountDLock3", dataLockMetrics.Amounts.DataLock3 }, { "DataLockedCountDLock4", dataLockMetrics.Amounts.DataLock4 }, { "DataLockedCountDLock5", dataLockMetrics.Amounts.DataLock5 }, { "DataLockedCountDLock6", dataLockMetrics.Amounts.DataLock6 }, { "DataLockedCountDLock7", dataLockMetrics.Amounts.DataLock7 }, { "DataLockedCountDLock8", dataLockMetrics.Amounts.DataLock8 }, { "DataLockedCountDLock9", dataLockMetrics.Amounts.DataLock9 }, { "DataLockedCountDLock10", dataLockMetrics.Amounts.DataLock10 }, { "DataLockedCountDLock11", dataLockMetrics.Amounts.DataLock11 }, { "DataLockedCountDLock12", dataLockMetrics.Amounts.DataLock12 }, { "RequiredPaymentsTotal", (double)metrics.RequiredPayments.Total }, { "RequiredPaymentsAct1Total", (double)metrics.RequiredPayments.ContractType1 }, { "RequiredPaymentsAc2Total", (double)metrics.RequiredPayments.ContractType2 }, { "RequiredPaymentsAct1TotalTransactionType1", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType1) }, { "RequiredPaymentsAct1TotalTransactionType2", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType2) }, { "RequiredPaymentsAct1TotalTransactionType3", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType3) }, { "RequiredPaymentsAct1TotalTransactionType4", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType4) }, { "RequiredPaymentsAct1TotalTransactionType5", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType5) }, { "RequiredPaymentsAct1TotalTransactionType6", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType6) }, { "RequiredPaymentsAct1TotalTransactionType7", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType7) }, { "RequiredPaymentsAct1TotalTransactionType8", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType8) }, { "RequiredPaymentsAct1TotalTransactionType9", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType9) }, { "RequiredPaymentsAct1TotalTransactionType10", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType10) }, { "RequiredPaymentsAct1TotalTransactionType11", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType11) }, { "RequiredPaymentsAct1TotalTransactionType12", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType12) }, { "RequiredPaymentsAct1TotalTransactionType13", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType13) }, { "RequiredPaymentsAct1TotalTransactionType14", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType14) }, { "RequiredPaymentsAct1TotalTransactionType15", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType15) }, { "RequiredPaymentsAct1TotalTransactionType16", (double)requiredPayments_Act1_Metrics.Sum(x => x.Amounts.TransactionType16) }, { "RequiredPaymentsAct2TotalTransactionType1", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType1) }, { "RequiredPaymentsAct2TotalTransactionType2", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType2) }, { "RequiredPaymentsAct2TotalTransactionType3", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType3) }, { "RequiredPaymentsAct2TotalTransactionType4", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType4) }, { "RequiredPaymentsAct2TotalTransactionType5", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType5) }, { "RequiredPaymentsAct2TotalTransactionType6", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType6) }, { "RequiredPaymentsAct2TotalTransactionType7", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType7) }, { "RequiredPaymentsAct2TotalTransactionType8", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType8) }, { "RequiredPaymentsAct2TotalTransactionType9", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType9) }, { "RequiredPaymentsAct2TotalTransactionType10", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType10) }, { "RequiredPaymentsAct2TotalTransactionType11", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType11) }, { "RequiredPaymentsAct2TotalTransactionType12", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType12) }, { "RequiredPaymentsAct2TotalTransactionType13", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType13) }, { "RequiredPaymentsAct2TotalTransactionType14", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType14) }, { "RequiredPaymentsAct2TotalTransactionType15", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType15) }, { "RequiredPaymentsAct2TotalTransactionType16", (double)requiredPayments_Act2_Metrics.Sum(x => x.Amounts.TransactionType16) }, { "RequiredPaymentsDasEarningsPercentageComparison", Math.Round(((double)(metrics.YearToDatePayments.Total + metrics.RequiredPayments.Total) / (double)metrics.DasEarnings.Total) * 100, 2) } }; telemetry.TrackEvent("Finished Generating Submission Metrics", properties, stats); }