Example #1
0
        private async Task <Tuple <Guid, Guid> > CreateWeeeReusedSite(AatfSiteDataAccess dataAccess, AatfAddress aatfAddress, DatabaseWrapper database)
        {
            var organisation = ObligatedWeeeIntegrationCommon.CreateOrganisation();
            var scheme       = ObligatedWeeeIntegrationCommon.CreateScheme(organisation);
            var aatf         = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);
            var @return      = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, database.Model.AspNetUsers.First().Id);

            database.WeeeContext.Organisations.Add(organisation);
            database.WeeeContext.Schemes.Add(scheme);
            database.WeeeContext.Aatfs.Add(aatf);
            database.WeeeContext.Returns.Add(@return);

            await database.WeeeContext.SaveChangesAsync();

            var weeeReused = new WeeeReused(aatf.Id, @return.Id);

            database.WeeeContext.WeeeReused.Add(weeeReused);
            foreach (var category in Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>())
            {
                database.WeeeContext.WeeeReusedAmount.Add(new WeeeReusedAmount(weeeReused, (int)category, (int)category, (int)category + 1));
            }

            await database.WeeeContext.SaveChangesAsync();

            var weeeReusedSite = new WeeeReusedSite(weeeReused, aatfAddress);

            await dataAccess.Submit(weeeReusedSite);

            return(Tuple.Create(@return.Id, aatf.Id));
        }
        private async Task <Guid> CreateWeeeReceivedAmounts(ObligatedReceivedDataAccess dataAccess, DatabaseWrapper database)
        {
            var organisation = ObligatedWeeeIntegrationCommon.CreateOrganisation();
            var scheme       = ObligatedWeeeIntegrationCommon.CreateScheme(organisation);
            var aatf         = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);
            var @return      = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, database.Model.AspNetUsers.First().Id);

            database.WeeeContext.Organisations.Add(organisation);
            database.WeeeContext.Schemes.Add(scheme);
            database.WeeeContext.Aatfs.Add(aatf);
            database.WeeeContext.Returns.Add(@return);

            await database.WeeeContext.SaveChangesAsync();

            var weeeReceived = new WeeeReceived(scheme, aatf, @return);

            var weeeReceivedAmount = new List <WeeeReceivedAmount>();

            foreach (var category in Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>())
            {
                weeeReceivedAmount.Add(new WeeeReceivedAmount(weeeReceived, (int)category, (int)category, (int)category + 1));
            }

            await dataAccess.Submit(weeeReceivedAmount);

            return(@return.Id);
        }
Example #3
0
        public async Task Execute_GivenNonSubmittedReturn_ReturnShouldNotBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return      = ObligatedWeeeIntegrationCommon.CreateReturn(null, db.Model.AspNetUsers.First().Id, FacilityType.Aatf);
                var aatf         = ObligatedWeeeIntegrationCommon.CreateAatf(db, @return.Organisation);
                var scheme       = ObligatedWeeeIntegrationCommon.CreateScheme(@return.Organisation);
                var weeeReceived = new EA.Weee.Domain.AatfReturn.WeeeReceived(scheme, aatf, @return);

                var weeeReceivedAmounts = new List <WeeeReceivedAmount>()
                {
                    new Domain.AatfReturn.WeeeReceivedAmount(weeeReceived, 1, 1, 2),
                };

                db.WeeeContext.Returns.Add(@return);
                db.WeeeContext.WeeeReceived.Add(weeeReceived);
                db.WeeeContext.WeeeReceivedAmount.AddRange(weeeReceivedAmounts);

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetAatfSubmissions(aatf.Id, aatf.ComplianceYear);

                results.Count.Should().Be(0);
            }
        }
        private static Return CreateSubmittedReturn(DatabaseWrapper db)
        {
            var @return = ObligatedWeeeIntegrationCommon.CreateReturn(null, db.Model.AspNetUsers.First().Id, FacilityType.Aatf);

            @return.UpdateSubmitted(db.Model.AspNetUsers.First().Id, false);
            return(@return);
        }
Example #5
0
        private Return CreateSubmittedReturn(DatabaseWrapper db, EA.Weee.Domain.Organisation.Organisation organisation)
        {
            var @return = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, db.Model.AspNetUsers.First().Id, FacilityType.Aatf);

            @return.UpdateSubmitted(db.Model.AspNetUsers.First().Id, false);
            return(@return);
        }
Example #6
0
        public async Task RemoveReturnScheme_GivenSchemeIdsAndReturn_EntitiesShouldBeRemoved()
        {
            using (var database = new DatabaseWrapper())
            {
                var helper       = new ModelHelper(database.Model);
                var domainHelper = new DomainHelper(database.WeeeContext);
                var dataAccess   = new ReturnSchemeDataAccess(database.WeeeContext);

                var @return             = ObligatedWeeeIntegrationCommon.CreateReturn(null, database.Model.AspNetUsers.First().Id, FacilityType.Aatf);
                var aatf                = ObligatedWeeeIntegrationCommon.CreateAatf(database, @return.Organisation);
                var scheme              = new EA.Weee.Domain.Scheme.Scheme(@return.Organisation);
                var weeeReceived        = new EA.Weee.Domain.AatfReturn.WeeeReceived(scheme, aatf, @return);
                var weeeReceivedAmounts = new Domain.AatfReturn.WeeeReceivedAmount(weeeReceived, 1, null, null);
                var returnScheme        = new Domain.AatfReturn.ReturnScheme(scheme, @return);

                database.WeeeContext.Returns.Add(@return);
                database.WeeeContext.Organisations.Add(@return.Organisation);
                database.WeeeContext.Aatfs.Add(aatf);
                database.WeeeContext.Schemes.Add(scheme);
                database.WeeeContext.WeeeReceived.Add(weeeReceived);
                database.WeeeContext.WeeeReceivedAmount.Add(weeeReceivedAmounts);
                database.WeeeContext.ReturnScheme.Add(returnScheme);

                await database.WeeeContext.SaveChangesAsync();

                await dataAccess.RemoveReturnScheme(new List <Guid>() { scheme.Id }, @return.Id);

                database.WeeeContext.ReturnScheme.Count(r => r.SchemeId == scheme.Id).Should().Be(0);
                database.WeeeContext.WeeeReceived.Count(r => r.SchemeId == scheme.Id).Should().Be(0);
                database.WeeeContext.WeeeReceivedAmount.Count(r => r.WeeeReceived.Id == weeeReceived.Id).Should().Be(0);

                database.WeeeContext.Schemes.Count(s => s.Id == scheme.Id).Should().Be(1);
                database.WeeeContext.Returns.Count(r => r.Id == @return.Id).Should().Be(1);
            }
        }
Example #7
0
        private Return SetupCreatedReturn(DatabaseWrapper db)
        {
            SystemTime.Freeze(date);
            var @return = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, db.Model.AspNetUsers.First().Id, FacilityType.Aatf);

            SystemTime.Unfreeze();
            return(@return);
        }
Example #8
0
        public async Task Execute_GivenAatfWithApprovalDateExpectedToReportAndResubmissionCreatedAndResubmissionsRequested_RecordDataIsAsExpected()
        {
            using (var db = new DatabaseWrapper())
            {
                var date = new DateTime(2019, 1, 1, 11, 10, 1);
                SystemTime.Freeze(date);

                var organisation = Domain.Organisation.Organisation.CreateSoleTrader(fixture.Create <string>());

                var aatf = new Aatf(fixture.Create <string>(), GetAuthority(db), fixture.Create <string>().Substring(0, 10), AatfStatus.Approved, organisation, ObligatedWeeeIntegrationCommon.CreateAatfAddress(db), AatfSize.Large, Convert.ToDateTime("01/02/2019"), ObligatedWeeeIntegrationCommon.CreateDefaultContact(db.WeeeContext.Countries.First()), FacilityType.Aatf, 2019, db.WeeeContext.LocalAreas.First(), db.WeeeContext.PanAreas.First());

                var @return = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, db.Model.AspNetUsers.First().Id, FacilityType.Aatf, 2019,
                                                                          QuarterType.Q1);

                @return.UpdateSubmitted(db.Model.AspNetUsers.First().Id, false);

                SystemTime.Unfreeze();

                SystemTime.Freeze(date.Date.AddDays(1));
                var @return2 = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, db.Model.AspNetUsers.First().Id, FacilityType.Aatf, 2019,
                                                                           QuarterType.Q1);
                SystemTime.Unfreeze();

                db.WeeeContext.Aatfs.Add(aatf);
                db.WeeeContext.Returns.Add(@return);
                db.WeeeContext.Returns.Add(@return2);
                db.WeeeContext.ReturnAatfs.Add(new ReturnAatf(aatf, @return));

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetAatfAeReturnDataCsvData(2019, 1,
                                                                                   1, null, null, null, null, true);

                var initialSubmission = results.Where(x => x.AatfId == aatf.Id).ElementAt(0);

                initialSubmission.ApprovalNumber.Should().Be(aatf.ApprovalNumber);
                initialSubmission.CompetentAuthorityAbbr.Should().Be("EA");
                initialSubmission.Name.Should().Be(aatf.Name);
                initialSubmission.OrganisationName.Should().Be(organisation.OrganisationName);
                initialSubmission.CreatedDate.Should().Be(date);
                initialSubmission.ReturnStatus.Should().Be("Submitted");
                initialSubmission.SubmittedBy.Should().Be($"{db.Model.AspNetUsers.First().FirstName} {db.Model.AspNetUsers.First().Surname}");
                initialSubmission.SubmittedDate.Should().Be(date);
                initialSubmission.ReSubmission.Should().Be("First submission");

                var resubmission = results.Where(x => x.AatfId == aatf.Id).ElementAt(1);

                resubmission.ApprovalNumber.Should().Be(aatf.ApprovalNumber);
                resubmission.CompetentAuthorityAbbr.Should().Be("EA");
                resubmission.Name.Should().Be(aatf.Name);
                resubmission.OrganisationName.Should().Be(organisation.OrganisationName);
                resubmission.CreatedDate.Should().Be(date.Date.AddDays(1));
                resubmission.ReturnStatus.Should().Be("Started");
                resubmission.SubmittedBy.Should().BeNullOrWhiteSpace();
                resubmission.SubmittedDate.Should().BeNull();
                resubmission.ReSubmission.Should().Be("Resubmission");
            }
        }
Example #9
0
        private Return SetupSubmittedReturn(DatabaseWrapper db, QuarterType quarterType)
        {
            SystemTime.Freeze(date);
            var @return = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, db.Model.AspNetUsers.First().Id, FacilityType.Aatf, 2019, quarterType);

            @return.UpdateSubmitted(db.Model.AspNetUsers.First().Id, false);
            SystemTime.Unfreeze();
            return(@return);
        }
Example #10
0
        private static async Task <Return> CreateReturn(WeeeContext context, DatabaseWrapper database, Organisation organisation)
        {
            var @return = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, database.Model.AspNetUsers.First().Id);

            context.Organisations.Add(organisation);
            context.Returns.Add(@return);

            await context.SaveChangesAsync();

            return(@return);
        }
Example #11
0
        public async Task Execute_GivenNonSubmittedAeNilReturns_ResultsShouldBeZero()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = ObligatedWeeeIntegrationCommon.CreateReturn(null, db.Model.AspNetUsers.First().Id, FacilityType.Ae);
                var ae      = ObligatedWeeeIntegrationCommon.CreateAe(db, @return.Organisation);

                db.WeeeContext.Returns.Add(@return);

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetAeSubmissions(ae.Id, ae.ComplianceYear);

                results.Count.Should().Be(0);
            }
        }
        public async Task Execute_GivenNoData_NoResultsShouldBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = ObligatedWeeeIntegrationCommon.CreateReturn(null, db.Model.AspNetUsers.First().Id, FacilityType.Aatf);
                @return.UpdateSubmitted(db.Model.AspNetUsers.First().Id, false);
                var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(db, @return.Organisation);

                db.WeeeContext.Returns.Add(@return);

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetAllAatfReuseSitesCsvData(2018, null, null);

                results.Count.Should().Be(0);
            }
        }
        public async void HasReturns_GivenOrganisationDoesNotHaveReturnsForComplianceYear_FalseShouldBeReturned()
        {
            using (var databaseWrapper = new DatabaseWrapper())
            {
                var organisationDataAccess = new OrganisationDataAccess(databaseWrapper.WeeeContext);
                var organisation           = Domain.Organisation.Organisation.CreateSoleTrader(fixture.Create <string>());
                var @return = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, databaseWrapper.Model.AspNetUsers.First().Id,
                                                                          FacilityType.Aatf, 2020, QuarterType.Q1);

                databaseWrapper.WeeeContext.Returns.Add(@return);

                await databaseWrapper.WeeeContext.SaveChangesAsync();

                var result = await organisationDataAccess.HasReturns(organisation.Id, 2019);

                result.Should().BeFalse();
            }
        }
        public async Task GetReturnsByComplianceYear_GivenNonMatchingParameters_EmptyShouldBeReturned()
        {
            using (var databaseWrapper = new DatabaseWrapper())
            {
                var organisationDataAccess = new OrganisationDataAccess(databaseWrapper.WeeeContext);
                var organisation           = Domain.Organisation.Organisation.CreateSoleTrader(fixture.Create <string>());

                var @return = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, databaseWrapper.Model.AspNetUsers.First().Id);

                databaseWrapper.WeeeContext.Returns.Add(@return);

                await databaseWrapper.WeeeContext.SaveChangesAsync();

                var result = await organisationDataAccess.GetReturnsByComplianceYear(Guid.NewGuid(), 2020, FacilityType.Ae);

                result.Should().BeEmpty();
            }
        }
Example #15
0
        private async Task <WeeeSentOn> CreateWeeeSentOnOperatorInContext(WeeeSentOnDataAccess dataAccess, AatfAddress operatorAddress, AatfAddress siteAddress, DatabaseWrapper database)
        {
            var organisation = ObligatedWeeeIntegrationCommon.CreateOrganisation();
            var scheme       = ObligatedWeeeIntegrationCommon.CreateScheme(organisation);
            var aatf         = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);
            var @return      = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, database.Model.AspNetUsers.First().Id);

            database.WeeeContext.Organisations.Add(organisation);
            database.WeeeContext.Schemes.Add(scheme);
            database.WeeeContext.Aatfs.Add(aatf);
            database.WeeeContext.Returns.Add(@return);

            await database.WeeeContext.SaveChangesAsync();

            var weeeSentOn = new WeeeSentOn(operatorAddress, siteAddress, aatf, @return);

            await dataAccess.Submit(weeeSentOn);

            return(weeeSentOn);
        }
        public async Task GetReturnsByComplianceYear_GivenNonMatchingFacilityType_CorrectReturnsShouldBeReturned()
        {
            using (var databaseWrapper = new DatabaseWrapper())
            {
                var organisationDataAccess = new OrganisationDataAccess(databaseWrapper.WeeeContext);
                var organisation           = Domain.Organisation.Organisation.CreateSoleTrader(fixture.Create <string>());

                var @return1 = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, databaseWrapper.Model.AspNetUsers.First().Id);
                var @return2 = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, databaseWrapper.Model.AspNetUsers.First().Id, FacilityType.Ae, 2019, QuarterType.Q1);

                databaseWrapper.WeeeContext.Returns.Add(@return1);
                databaseWrapper.WeeeContext.Returns.Add(@return2);

                await databaseWrapper.WeeeContext.SaveChangesAsync();

                var result = await organisationDataAccess.GetReturnsByComplianceYear(organisation.Id, 2019, FacilityType.Aatf);

                result.Should().Contain(@return1);
                result.Should().NotContain(@return2);
            }
        }
Example #17
0
        public async Task Execute_GivenMultipleReturnsForOrganisationInSameQuarterAndYear_OnlyMostRecentDataShouldBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var organisation = Organisation.CreateRegisteredCompany(fixture.Create <string>(), "1234567", null);
                var @return1     = CreateSubmittedReturn(db, organisation);

                SystemTime.Freeze(DateTime.Now.AddDays(1));
                var @return2 = ObligatedWeeeIntegrationCommon.CreateReturn(organisation, db.Model.AspNetUsers.First().Id, FacilityType.Aatf);
                @return2.UpdateSubmitted(db.Model.AspNetUsers.First().Id, false);
                SystemTime.Unfreeze();

                db.WeeeContext.Returns.Add(@return1);
                db.WeeeContext.Returns.Add(@return2);

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetNonObligatedWeeeReceivedAtAatf(2019, null);

                results.Count(r => r.ReturnId.Equals(@return1.Id)).Should().Be(0);
                results.Count(r => r.ReturnId.Equals(@return2.Id)).Should().Be(CategoryValues().Count);
            }
        }