public async Task <List <int> > HandleAsync(Request message) { Domain.Scheme.Scheme scheme = await dataAccess.FetchSchemeByOrganisationIdAsync(message.PcsId); authorization.EnsureSchemeAccess(scheme.Id); return(await dataAccess.GetDataReturnComplianceYearsForScheme(scheme.Id)); }
public async Task <Guid> HandleAsync(SubmitDataReturnUpload message) { DataReturnUpload dataReturnsUpload = await fetchDataReturnForSubmissionDataAccess.FetchDataReturnUploadAsync(message.DataReturnUploadId); authorization.EnsureSchemeAccess(dataReturnsUpload.Scheme.Id); var dataReturnVersion = dataReturnsUpload.DataReturnVersion; await submitReturnVersionDataAccess.Submit(dataReturnVersion); return(dataReturnVersion.Id); }
public async Task <DataReturnUploadInfo> HandleAsync(GetUploadInfoByDataReturnUploadId message) { DataReturnUpload dataReturnUpload = await dataAccess.FetchDataReturnUploadByIdAsync(message.DataReturnUploadId); authorization.EnsureSchemeAccess(dataReturnUpload.Scheme.Id); var quarter = new DataReturnUploadInfo { Quarter = (QuarterType?)dataReturnUpload.Quarter, Year = dataReturnUpload.ComplianceYear }; return(quarter); }
public async Task <DataReturnForSubmission> HandleAsync(Request message) { DataReturnUpload dataReturnUpload = await dataAccess.FetchDataReturnUploadAsync(message.DataReturnUploadId); authorization.EnsureSchemeAccess(dataReturnUpload.Scheme.Id); if (dataReturnUpload.DataReturnVersion != null && dataReturnUpload.DataReturnVersion.IsSubmitted) { string errorMessage = string.Format( "The data return with ID \"{0}\" has already been submitted.", dataReturnUpload.Id); throw new InvalidOperationException(errorMessage); } List <DataReturnWarning> warnings = dataReturnUpload.Errors .Where(e => e.ErrorLevel == ErrorLevel.Warning) .Select(e => new DataReturnWarning(e.Description)) .ToList(); List <DataReturnError> errors = dataReturnUpload.Errors .Where(e => e.ErrorLevel == ErrorLevel.Error) .OrderBy(e => e.LineNumber) .Select(e => new DataReturnError(e.Description)) .ToList(); bool isResubmission; if (errors.Count == 0) { isResubmission = await dataAccess.CheckForExistingSubmissionAsync( dataReturnUpload.Scheme.Id, dataReturnUpload.ComplianceYear.Value, dataReturnUpload.Quarter.Value); } else { isResubmission = false; } return(new DataReturnForSubmission( dataReturnUpload.Id, dataReturnUpload.Scheme.OrganisationId, dataReturnUpload.ComplianceYear, (QuarterType?)dataReturnUpload.Quarter, warnings, errors, isResubmission)); }
public async Task <Guid> HandleAsync(ProcessDataReturnXmlFile message) { Scheme scheme = await dataAccess.FetchSchemeByOrganisationIdAsync(message.OrganisationId); authorization.EnsureSchemeAccess(scheme.Id); // record XML processing start time Stopwatch stopwatch = Stopwatch.StartNew(); var xmlGeneratorResult = xmlGenerator.GenerateDataReturns <SchemeReturn>(message); DataReturnUpload dataReturnUpload; if (xmlGeneratorResult.SchemaErrors.Any()) { dataReturnUpload = new DataReturnUpload(scheme, xmlGeneratorResult.XmlString, xmlGeneratorResult.SchemaErrors.Select(e => e.ToDataReturnsUploadError()).ToList(), message.FileName, null, null); } else { int complianceYear = int.Parse(xmlGeneratorResult.DeserialisedType.ComplianceYear); QuarterType quarter = xmlGeneratorResult.DeserialisedType.ReturnPeriod.ToDomainQuarterType(); var pcsReturnVersionBuilder = dataReturnVersionBuilderDelegate(scheme, new Quarter(complianceYear, quarter)); var dataReturnVersionFromXmlBuilder = dataReturnVersionFromXmlBuilderDelegate(pcsReturnVersionBuilder); var dataReturnVersionBuilderResult = await dataReturnVersionFromXmlBuilder.Build(xmlGeneratorResult.DeserialisedType); var allErrors = (dataReturnVersionBuilderResult.ErrorData .Select(e => new DataReturnUploadError(e.ErrorLevel.ToDomainErrorLevel(), Domain.Error.UploadErrorType.Business, e.Description))) .ToList(); dataReturnUpload = new DataReturnUpload(scheme, xmlGeneratorResult.XmlString, allErrors, message.FileName, complianceYear, Convert.ToInt32(quarter)); if (!dataReturnVersionBuilderResult.ErrorData.Any(e => e.ErrorLevel == ErrorLevel.Error)) { dataReturnUpload.SetDataReturnVersion(dataReturnVersionBuilderResult.DataReturnVersion); } } // Record XML processing end time stopwatch.Stop(); dataReturnUpload.SetProcessTime(stopwatch.Elapsed); await dataAccess.AddAndSaveAsync(dataReturnUpload); return(dataReturnUpload.Id); }
public async Task HandleAsync_NoAccessToScheme_ThrowsSecurityException() { Guid pcsId = new Guid("A7905BCD-8EE7-48E5-9E71-2B571F7BBC81"); Requests.DataReturns.FetchDataReturnComplianceYearsForScheme request = new Requests.DataReturns.FetchDataReturnComplianceYearsForScheme(pcsId); A.CallTo(() => dataAccess.FetchSchemeByOrganisationIdAsync(pcsId)).Returns(A.Dummy <Domain.Scheme.Scheme>()); A.CallTo(() => authorization.EnsureSchemeAccess(A <Guid> ._)) .Throws <SecurityException>(); await Assert.ThrowsAsync <SecurityException>( () => Handler().HandleAsync(request)); A.CallTo(() => dataAccess.GetDataReturnComplianceYearsForScheme(pcsId)) .MustNotHaveHappened(); }
public AuthorizationBuilder AllowSchemeAccess() { A.CallTo(() => fake.EnsureSchemeAccess(A.Dummy <Guid>())).WithAnyArguments().DoesNothing(); A.CallTo(() => fake.CheckSchemeAccess(A.Dummy <Guid>())).WithAnyArguments().Returns(true); return(this); }