public async Task Execute_GivenComplianceAndFacilityTypeAndLocalAreaAndPanArea_ReturnsData(bool hasArea, bool hasPan)
        {
            using (var db = new DatabaseWrapper())
            {
                var org   = OrgWithAddress(db);
                var aatf  = ObligatedWeeeIntegrationCommon.CreateAatf(db, org, 2019, hasArea, hasPan, fixture.Create <string>());
                var aatfs = new List <Aatf>()
                {
                    aatf
                };

                db.WeeeContext.Organisations.Add(org);
                db.WeeeContext.Aatfs.Add(aatf);
                await db.WeeeContext.SaveChangesAsync();

                Guid?areaId = null;
                if (hasArea)
                {
                    areaId = aatf.LocalAreaId;
                }

                Guid?panId = null;
                if (hasPan)
                {
                    panId = aatf.PanAreaId;
                }

                var results = await db.StoredProcedures.GetAatfAeDetailsCsvData(2019, 1, aatf.CompetentAuthority.Id, areaId, panId);

                VerifyResult(results, aatfs);
            }
        }
Example #2
0
        private Aatf SetupAatfWithApprovalDate(DatabaseWrapper db, DateTime date, string name)
        {
            var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(db, organisation);

            aatf.UpdateDetails(name, aatf.CompetentAuthority, aatf.ApprovalNumber, aatf.AatfStatus, aatf.Organisation, aatf.Size, date, aatf.LocalArea, aatf.PanArea);
            return(aatf);
        }
        public async Task Execute_GivenWeeeReusedData_ReturnsWeeeReusedAatfSitesShouldBeCorrect()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = CreateSubmittedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, @return.Organisation);

                await CreateWeeReusedData(db, aatf, @return);

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

                var filteredData = results.Where(x => x.ApprovalNumber == aatf.ApprovalNumber);

                filteredData.Count().Should().Be(2);

                filteredData.ElementAt(0).ComplianceYear.Should().Be(@return.Quarter.Year);
                filteredData.ElementAt(0).Quarter.Should().Be(@return.Quarter.Q.ToString());
                filteredData.ElementAt(0).SubmittedDate.Date.Should().Be(@return.SubmittedDate.Value.Date);
                filteredData.ElementAt(0).SubmittedBy.Should().Be(db.Model.AspNetUsers.First().FirstName + " " + db.Model.AspNetUsers.First().Surname);
                filteredData.ElementAt(0).Name.Should().Be(aatf.Name);
                filteredData.ElementAt(0).ApprovalNumber.Should().Be(aatf.ApprovalNumber);
                filteredData.ElementAt(0).OrgName.Should().Be(aatf.Organisation.Name);
                filteredData.ElementAt(0).Abbreviation.Should().Be(aatf.CompetentAuthority.Abbreviation);
                filteredData.ElementAt(0).PanName.Should().Be(aatf.PanArea.Name);
                filteredData.ElementAt(0).LaName.Should().Be(aatf.LocalArea.Name);
                filteredData.ElementAt(0).SiteName.Should().Contain("name");
                filteredData.ElementAt(0).SiteAddress.Should().Be(string.Concat("address, address2, town, county, postcode", ", ", db.WeeeContext.Countries.First().Name));
            }
        }
        public async Task Execute_GivenAllData_ReturnsData()
        {
            using (var db = new DatabaseWrapper())
            {
                await CreateScheme(db);

                var org   = OrgWithAddress(db);
                var ae    = ObligatedWeeeIntegrationCommon.CreateAe(db, org);
                var aatf  = ObligatedWeeeIntegrationCommon.CreateAatf(db, org, 2019, false, false, fixture.Create <string>());
                var aatfs = new List <Aatf>()
                {
                    ae, aatf
                };

                db.WeeeContext.Organisations.Add(org);
                db.WeeeContext.Aatfs.Add(ae);
                db.WeeeContext.Aatfs.Add(aatf);
                await db.WeeeContext.SaveChangesAsync();

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

                VerifyResult(results, aatfs);
                VerifyPCSRecord(results);
            }
        }
Example #5
0
        public async Task Execute_GivenSubmittedReturnWithNoData_DefaultDataShouldBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = SetupSubmittedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, organisation);

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

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetReturnNonObligatedCsvData(@return.Id);

                results.Count.Should().Be(14);

                var values = CategoryValues();
                for (var countValue = 0; countValue < values.Count(); countValue++)
                {
                    var value = values.ElementAt(countValue);
                    results.ElementAt(countValue).Year.Should().Be(2019);
                    results.ElementAt(countValue).Quarter.Should().Be("Q1");
                    results.ElementAt(countValue).SubmittedBy.Should()
                    .Be($"{db.Model.AspNetUsers.First().FirstName} {db.Model.AspNetUsers.First().Surname}");
                    results.ElementAt(countValue).SubmittedDate.Should().Be(date);
                    results.ElementAt(countValue).OrganisationName.Should().Be(organisation.Name);
                    results.ElementAt(countValue).Category.Should().Be($"{countValue + 1}. {value.ToDisplayString()}");
                }
            }
        }
        public async Task Execute_GivenNullWeeeReceivedData_ReturnsWeeeReceivedAatfDataShouldBeNull()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return      = CreateSubmittedReturn(db);
                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, null, null),
                    new Domain.AatfReturn.WeeeReceivedAmount(weeeReceived, 2, null, null)
                };

                db.WeeeContext.Returns.Add(@return);
                db.WeeeContext.ReturnAatfs.Add(new ReturnAatf(aatf, @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(1);
                results.ElementAt(0).WeeeReceivedHouseHold.Should().BeNull();
                results.ElementAt(0).WeeeReceivedNonHouseHold.Should().BeNull();
                AssertFixedPropertiesForReturn(results, db, @return);
            }
        }
        public async Task Execute_GivenWeeeSentOnData_ReturnsWeeeSentOnAatfDataShouldBeCorrect()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return    = CreateSubmittedReturn(db);
                var aatf       = ObligatedWeeeIntegrationCommon.CreateAatf(db, @return.Organisation);
                var weeeSentOn = new EA.Weee.Domain.AatfReturn.WeeeSentOn(ObligatedWeeeIntegrationCommon.CreateAatfAddress(db), aatf, @return);

                var weeeSentOnAmounts = new List <WeeeSentOnAmount>()
                {
                    new Domain.AatfReturn.WeeeSentOnAmount(weeeSentOn, 1, 1, 2),
                    new Domain.AatfReturn.WeeeSentOnAmount(weeeSentOn, 2, 3, 4)
                };

                db.WeeeContext.Returns.Add(@return);
                db.WeeeContext.ReturnAatfs.Add(new ReturnAatf(aatf, @return));
                db.WeeeContext.WeeeSentOn.Add(weeeSentOn);
                db.WeeeContext.WeeeSentOnAmount.AddRange(weeeSentOnAmounts);

                await db.WeeeContext.SaveChangesAsync();

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

                results.Count.Should().Be(1);
                results.ElementAt(0).WeeeSentOnHouseHold.Should().Be(4);
                results.ElementAt(0).WeeeSentOnNonHouseHold.Should().Be(6);
                AssertFixedPropertiesForReturn(results, db, @return);
            }
        }
Example #8
0
        public async Task Execute_GivenAatfWithNoDataAndSubmittedReturn_DefaultDataShouldBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = SetupSubmittedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, organisation);

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

                await db.WeeeContext.SaveChangesAsync();

                db.WeeeContext.ReturnReportOns.Add(new Domain.AatfReturn.ReturnReportOn(@return.Id, 1));
                db.WeeeContext.ReturnReportOns.Add(new Domain.AatfReturn.ReturnReportOn(@return.Id, 2));
                db.WeeeContext.ReturnReportOns.Add(new Domain.AatfReturn.ReturnReportOn(@return.Id, 3));

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetReturnObligatedCsvData(@return.Id);

                results.Rows.Count.Should().Be(28);

                for (var countValue = 0; countValue < CategoryValues().Count(); countValue++)
                {
                    var value          = CategoryValues().ElementAt(countValue);
                    var categoryNumber = (value.CategoryId <= 9) ? "0" + Convert.ToString(value.CategoryId) : Convert.ToString(value.CategoryId);
                    AssertSubmittedRow(results, aatf, db, countValue, $"{categoryNumber}. {value.CategoryDisplay}", B2C);
                }

                results.Dispose();
            }
        }
Example #9
0
        public async Task GetManyByExpression_GivenGetManyByExpressionSpecification_AatfsShouldBeReturned()
        {
            using (var database = new DatabaseWrapper())
            {
                var dataAccess = new GenericDataAccess(database.WeeeContext);

                var organisation = Organisation.CreateSoleTrader("Test Organisation");
                var aatf1        = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);
                var aatf2        = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);

                var organisation2 = Organisation.CreateSoleTrader("Test Organisation 2");
                var aatf3         = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation2);

                database.WeeeContext.Aatfs.Add(aatf1);
                database.WeeeContext.Aatfs.Add(aatf2);

                await database.WeeeContext.SaveChangesAsync();

                var aatfInfo = await dataAccess.GetManyByExpression(new AatfsByOrganisationSpecification(organisation.Id));

                aatfInfo.Count.Should().Be(2);
                aatfInfo.Where(a => Equals(aatf1)).Should().NotBeNull();
                aatfInfo.Where(a => Equals(aatf2)).Should().NotBeNull();
                aatfInfo.Where(a => Equals(aatf3)).Should().BeEmpty();
            }
        }
Example #10
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);
            }
        }
Example #11
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 #13
0
        public async Task GetAatfsDataAccess_ReturnsAatfsList()
        {
            using (var database = new DatabaseWrapper())
            {
                var helper                       = new ModelHelper(database.Model);
                var dataAccess                   = new GetAatfsDataAccess(database.WeeeContext);
                var genericDataAccess            = new GenericDataAccess(database.WeeeContext);
                var competentAuthorityDataAccess = new CommonDataAccess(database.WeeeContext);
                var competentAuthority           = await competentAuthorityDataAccess.FetchCompetentAuthority(CompetentAuthority.England);

                var country = await database.WeeeContext.Countries.SingleAsync(c => c.Name == "UK - England");

                var aatfContact  = new AatfContact("first", "last", "position", "address1", "address2", "town", "county", "postcode", country, "telephone", "email");
                var organisation = Organisation.CreatePartnership("Koalas");
                var aatfAddress  = AddressHelper.GetAatfAddress(database);
                var aatfSize     = AatfSize.Large;

                var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);

                await genericDataAccess.Add <Aatf>(aatf);

                var aatfList = await dataAccess.GetAatfs();

                aatfList.Should().Contain(aatf);
            }
        }
Example #14
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 #15
0
        public async Task Execute_GivenComplianceYearWithNoData_DefaultDataShouldBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(db, organisation);

                db.WeeeContext.NonObligatedWeee.RemoveRange(db.WeeeContext.NonObligatedWeee);

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetUkNonObligatedWeeeReceivedByComplianceYear(2019);

                results.Count.Should().Be(70);

                var values = CategoryValues();
                var index  = 0;
                foreach (var quarter in Quarters())
                {
                    for (var countValue = 0; countValue < values.Count(); countValue++)
                    {
                        var value          = values.ElementAt(countValue);
                        var categoryNumber = ((int)value <= 9) ? "0" + Convert.ToString((int)value) : Convert.ToString((int)value);
                        results.ElementAt(index).Quarter.Should().Be(quarter <= 4 ? $"Q{quarter}" : "2019");
                        results.ElementAt(index).Category.Should().Be($"{categoryNumber}. {value.ToDisplayString()}");
                        results.ElementAt(index).TotalNonObligatedWeeeReceived.Should().BeNull();
                        results.ElementAt(index).TotalNonObligatedWeeeReceivedFromDcf.Should().BeNull();
                        index++;
                    }
                }
            }
        }
        public async Task Execute_GivenCreatedReturnWithNoData_DefaultDataShouldBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = SetupCreatedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, organisation);

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

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetReturnNonObligatedCsvData(@return.Id);

                results.Count.Should().Be(14);

                var values = CategoryValues();
                for (var countValue = 0; countValue < values.Count(); countValue++)
                {
                    var value          = values.ElementAt(countValue);
                    var categoryNumber = ((int)value <= 9) ? "0" + Convert.ToString((int)value) : Convert.ToString((int)value);
                    results.ElementAt(countValue).Year.Should().Be(2019);
                    results.ElementAt(countValue).Quarter.Should().Be("Q1");
                    results.ElementAt(countValue).SubmittedBy.Should().BeNullOrWhiteSpace();
                    results.ElementAt(countValue).SubmittedDate.Should().BeNull();
                    results.ElementAt(countValue).OrganisationName.Should().Be(organisation.Name);
                    results.ElementAt(countValue).Category.Should().Be($"{categoryNumber}. {value.ToDisplayString()}");
                }
            }
        }
        public async Task Execute_GivenReturnWithZeroData_NullDataShouldBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = SetupSubmittedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, organisation);
                var values  = CategoryValues();

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

                foreach (var weeeCategory in values)
                {
                    db.WeeeContext.NonObligatedWeee.Add(new NonObligatedWeee(@return, (int)weeeCategory, false, 0));
                    db.WeeeContext.NonObligatedWeee.Add(new NonObligatedWeee(@return, (int)weeeCategory, true, 0));
                }

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetReturnNonObligatedCsvData(@return.Id);

                results.Count.Should().Be(14);

                for (var countValue = 0; countValue < values.Count(); countValue++)
                {
                    results.ElementAt(countValue).TotalNonObligatedWeeeReceived.Should().BeNull();
                    results.ElementAt(countValue).TotalNonObligatedWeeeReceivedFromDcf.Should().BeNull();
                }
            }
        }
Example #18
0
        private async Task AddWeeeReceived(DateTime?approvalDate = null)
        {
            var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);

            aatf.UpdateDetails(aatf.Name, aatf.CompetentAuthority, aatf.ApprovalNumber, aatf.AatfStatus, aatf.Organisation, aatf.Size, approvalDate, aatf.LocalArea, aatf.PanArea);

            var weeReceived = new List <WeeeReceived>()
            {
                new WeeeReceived(new Scheme(organisation), aatf, @return),
                new WeeeReceived(new Scheme(organisation), aatf, @return)
            };

            var weeeReceivedAmounts = new List <WeeeReceivedAmount>()
            {
                new WeeeReceivedAmount(weeReceived.ElementAt(0), 1, 100, 200),
                new WeeeReceivedAmount(weeReceived.ElementAt(0), 2, 300, 400),
                new WeeeReceivedAmount(weeReceived.ElementAt(1), 3, 0, null),
                new WeeeReceivedAmount(weeReceived.ElementAt(1), 4, null, 0)
            };

            database.WeeeContext.WeeeReceivedAmount.AddRange(weeeReceivedAmounts);
            database.WeeeContext.WeeeReceived.AddRange(weeReceived);

            await database.WeeeContext.SaveChangesAsync();
        }
        public async Task Execute_GivenWeeeSentOnData_ReturnsWeeeSentOnAatfDataShouldBeCorrect()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = CreateSubmittedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, @return.Organisation);

                await CreateWeeSentOnData(db, aatf, @return);

                var results = await db.StoredProcedures.GetAllAatfSentOnDataCsv(2019, string.Empty, null, null);

                Assert.NotNull(results);
                var data = from x in results.Tables[0].AsEnumerable()
                           where x.Field <string>("Name of AATF") == aatf.Name
                           select x;
                data.AsQueryable().Count().Should().Be(28);

                var dataB2B = from x in results.Tables[0].AsEnumerable()
                              where x.Field <string>("Name of AATF") == aatf.Name && x.Field <string>("Obligation type") == "B2B"
                              select x;
                dataB2B.AsQueryable().Count().Should().Be(14);

                var dataB2C = from x in results.Tables[0].AsEnumerable()
                              where x.Field <string>("Name of AATF") == aatf.Name && x.Field <string>("Obligation type") == "B2C"
                              select x;
                dataB2C.AsQueryable().Count().Should().Be(14);
            }
        }
        public async Task FetchObligatedWeeeForReturn_ReturnedListShouldContainAllTonnagesFromRequest()
        {
            using (var database = new DatabaseWrapper())
            {
                var          companyName = "Test Name" + Guid.NewGuid();
                var          tradingName = "Test Trading Name" + Guid.NewGuid();
                const string companyRegistrationNumber = "ABC12345";

                var organisation = Organisation.CreateRegisteredCompany(companyName, companyRegistrationNumber, tradingName);
                var @return      = new Return(organisation, new Quarter(2019, QuarterType.Q1), database.Model.AspNetUsers.First().Id, FacilityType.Aatf);
                var aatf         = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);

                database.WeeeContext.Organisations.Add(organisation);
                database.WeeeContext.Aatfs.Add(aatf);
                database.WeeeContext.Returns.Add(@return);
                await database.WeeeContext.SaveChangesAsync();

                var addObligatedReusedDataAccess = new ObligatedReusedDataAccess(database.WeeeContext);

                var categoryValues = new List <ObligatedValue>();
                var weeeReused     = new WeeeReused(aatf.Id, @return.Id);

                foreach (var category in Enum.GetValues(typeof(WeeeCategory)).Cast <WeeeCategory>())
                {
                    categoryValues.Add(new ObligatedValue(Guid.NewGuid(), (int)category, (int)category, (int)category));
                }

                var obligatedReusedRequest = new AddObligatedReused()
                {
                    AatfId         = aatf.Id,
                    ReturnId       = @return.Id,
                    OrganisationId = organisation.Id,
                    CategoryValues = categoryValues
                };

                var weeeReusedAmount = new List <WeeeReusedAmount>();

                foreach (var categoryValue in obligatedReusedRequest.CategoryValues)
                {
                    weeeReusedAmount.Add(new WeeeReusedAmount(weeeReused, categoryValue.CategoryId, categoryValue.HouseholdTonnage, categoryValue.NonHouseholdTonnage));
                }

                var obligateReusedDataAccess = new ObligatedReusedDataAccess(database.WeeeContext);
                await obligateReusedDataAccess.Submit(weeeReusedAmount);

                var fetchDataAccess = new FetchObligatedWeeeForReturnDataAccess(database.WeeeContext);

                var reusedTonnageList = await fetchDataAccess.FetchObligatedWeeeReusedForReturn(@return.Id);

                var reusedNonHouseholdList = reusedTonnageList.Select(t => t.NonHouseholdTonnage);
                var reusedHouseholdList    = reusedTonnageList.Select(t => t.HouseholdTonnage);

                foreach (var category in weeeReusedAmount)
                {
                    reusedNonHouseholdList.Should().Contain(category.NonHouseholdTonnage);
                    reusedHouseholdList.Should().Contain(category.HouseholdTonnage);
                }
            }
        }
Example #21
0
        private static async Task <Aatf> CreateAatf(DatabaseWrapper database, Domain.AatfReturn.Return @return)
        {
            var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(database, @return.Organisation);

            database.WeeeContext.Aatfs.Add(aatf);

            await database.WeeeContext.SaveChangesAsync();

            return(aatf);
        }
Example #22
0
        public async Task HandleAsync_GivenAatfCanBeCopied_OriginalAatfShouldNotBeChanged()
        {
            using (var databaseWrapper = new DatabaseWrapper())
            {
                var organisation = EA.Weee.Domain.Organisation.Organisation.CreatePartnership("trading");

                var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(databaseWrapper, organisation);

                var competentAuthority = new Core.Shared.UKCompetentAuthorityData()
                {
                    Id           = databaseWrapper.WeeeContext.UKCompetentAuthorities.First().Id,
                    Abbreviation = databaseWrapper.WeeeContext.UKCompetentAuthorities.First().Abbreviation
                };

                var country = await databaseWrapper.WeeeContext.Countries.SingleAsync(c => c.Name == "France");

                var newContact = A.Dummy <AatfContactData>();
                var contact    = new AatfContact("FirstName1", "LastName1", "Position1", "Address11", "Address21", "Town1", "County1", "PO12ST341", country, "Telephone1", "Email1");

                var siteAddress = A.Dummy <AatfAddressData>();
                var aatfAddress = new AatfAddress("Site name", "Site address 1", "Site address 2", "Site town", "Site county", "GU22 7UY", country);

                var aatfdata = new AatfData(Guid.NewGuid(), aatf.Name, aatf.ApprovalNumber, 2020,
                                            competentAuthority,
                                            Core.AatfReturn.AatfStatus.Approved, siteAddress, Core.AatfReturn.AatfSize.Large, DateTime.Parse("01/01/2020"),
                                            null, null)
                {
                    FacilityType = Core.AatfReturn.FacilityType.Aatf
                };

                databaseWrapper.WeeeContext.Aatfs.Add(aatf);

                await databaseWrapper.WeeeContext.SaveChangesAsync();

                A.CallTo(() => addressMapper.Map(siteAddress)).Returns(aatfAddress);

                A.CallTo(() => contactMapper.Map(newContact)).Returns(contact);

                var message = new AddAatf()
                {
                    Aatf           = aatfdata,
                    OrganisationId = organisation.Id,
                    AatfId         = aatf.AatfId,
                    AatfContact    = newContact
                };

                await Handler(databaseWrapper).HandleAsync(message);

                databaseWrapper.WeeeContext.Aatfs.Where(a => a.Id == aatf.Id).Should().NotBeEmpty();
                databaseWrapper.WeeeContext.Aatfs.Where(a => a.AatfId == aatf.AatfId).Count().Should().Be(2);
                databaseWrapper.WeeeContext.Aatfs.Where(a => a.Id == aatf.Id && a.ComplianceYear == 2019).Should().NotBeEmpty();
                databaseWrapper.WeeeContext.Aatfs.Where(a => a.AatfId == aatf.AatfId && a.ComplianceYear == 2020).Count().Should().Be(1);
            }
        }
Example #23
0
        public async Task Execute_GivenAatfsWithReusedAndSubmittedReturn_DataShouldBeReturned()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = SetupSubmittedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, organisation);
                aatf.UpdateDetails("AAA", aatf.CompetentAuthority, aatf.ApprovalNumber, aatf.AatfStatus, aatf.Organisation, aatf.Size, aatf.ApprovalDate, aatf.LocalArea, aatf.PanArea);

                var aatf2 = ObligatedWeeeIntegrationCommon.CreateAatf(db, organisation);
                aatf2.UpdateDetails("AAB", aatf.CompetentAuthority, aatf.ApprovalNumber, aatf.AatfStatus, aatf.Organisation, aatf.Size, aatf.ApprovalDate, aatf.LocalArea, aatf.PanArea);

                var weeeReused1Aatf1 = new WeeeReused(aatf, @return);
                var weeeReused1Aatf2 = new WeeeReused(aatf2, @return);

                foreach (var categoryValue in CategoryValues())
                {
                    db.WeeeContext.WeeeReusedAmount.Add(new Domain.AatfReturn.WeeeReusedAmount(weeeReused1Aatf1, categoryValue.CategoryId, categoryValue.CategoryId, categoryValue.CategoryId + 1));
                    db.WeeeContext.WeeeReusedAmount.Add(new Domain.AatfReturn.WeeeReusedAmount(weeeReused1Aatf2, categoryValue.CategoryId, categoryValue.CategoryId, categoryValue.CategoryId + 1));
                }

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

                await db.WeeeContext.SaveChangesAsync();

                db.WeeeContext.ReturnReportOns.Add(new Domain.AatfReturn.ReturnReportOn(@return.Id, 3));

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetReturnObligatedCsvData(@return.Id);

                results.Rows.Count.Should().Be(56);

                foreach (var categoryValue in CategoryValues())
                {
                    var houseHoldResultAatf1    = results.Select($"AatfKey='{aatf.Id}' AND CategoryId={categoryValue.CategoryId} AND [Obligation Type]='{B2C}'");
                    var nonHouseHoldResultAatf1 = results.Select($"AatfKey='{aatf.Id}' AND CategoryId={categoryValue.CategoryId} AND [Obligation Type]='{B2B}'");

                    houseHoldResultAatf1[0][TotalReusedHeading].Should().Be(categoryValue.CategoryId);
                    nonHouseHoldResultAatf1[0][TotalReusedHeading].Should().Be((categoryValue.CategoryId + 1));

                    var houseHoldResultAatf2    = results.Select($"AatfKey='{aatf2.Id}' AND CategoryId={categoryValue.CategoryId} AND [Obligation Type]='{B2C}'");
                    var nonHouseHoldResultAatf2 = results.Select($"AatfKey='{aatf2.Id}' AND CategoryId={categoryValue.CategoryId} AND [Obligation Type]='{B2B}'");

                    houseHoldResultAatf2[0][TotalReusedHeading].Should().Be(categoryValue.CategoryId);
                    nonHouseHoldResultAatf2[0][TotalReusedHeading].Should().Be((categoryValue.CategoryId + 1));
                }

                results.Dispose();
            }
        }
Example #24
0
        public async Task Add_EntityShouldBeAdded()
        {
            using (var database = new DatabaseWrapper())
            {
                var dataAccess = new GenericDataAccess(database.WeeeContext);

                var organisation = ObligatedWeeeIntegrationCommon.CreateOrganisation();
                var aatf         = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);

                var result = await dataAccess.Add <Aatf>(aatf);

                result.Should().NotBeEmpty();
            }
        }
Example #25
0
        private async Task <Guid> CreateContact(DatabaseWrapper database, AatfContact aatfAddress)
        {
            var organisation = ObligatedWeeeIntegrationCommon.CreateOrganisation();
            var scheme       = ObligatedWeeeIntegrationCommon.CreateScheme(organisation);

            var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);

            database.WeeeContext.Organisations.Add(organisation);
            database.WeeeContext.Schemes.Add(scheme);
            database.WeeeContext.AatfContacts.Add(aatfAddress);
            database.WeeeContext.Aatfs.Add(aatf);

            await database.WeeeContext.SaveChangesAsync();

            return(aatf.Id);
        }
        public async void HasMultipleFacility_GivenOrganisationDoesNotHaveMultipleFacilityOfAatf_FalseShouldBeReturned()
        {
            using (var databaseWrapper = new DatabaseWrapper())
            {
                var organisationDataAccess = new OrganisationDataAccess(databaseWrapper.WeeeContext);
                var organisation           = Domain.Organisation.Organisation.CreateSoleTrader(fixture.Create <string>());

                databaseWrapper.WeeeContext.Organisations.Add(organisation);
                databaseWrapper.WeeeContext.Aatfs.Add(ObligatedWeeeIntegrationCommon.CreateAatf(databaseWrapper, @organisation));

                await databaseWrapper.WeeeContext.SaveChangesAsync();

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

                result.Should().BeFalse();
            }
        }
        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 Task Execute_GivenWeeReusedData_AuthorityParameter_ReturnsDataShouldBeCorrect()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = CreateSubmittedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, @return.Organisation);

                await CreateWeeReusedData(db, aatf, @return);

                var filter = db.WeeeContext.UKCompetentAuthorities.First();

                var results = await db.StoredProcedures.GetAllAatfReuseSitesCsvData(2019, filter.Id, null);

                Assert.NotNull(results);

                results.Where(x => x.ApprovalNumber == aatf.ApprovalNumber && x.Abbreviation == filter.Abbreviation).Count().Should().Be(2);
            }
        }
Example #29
0
        public async Task Remove_GivenNullEntity_EntityStateShouldNotBeUpdated()
        {
            using (var database = new DatabaseWrapper())
            {
                var dataAccess = new GenericDataAccess(database.WeeeContext);
                var competentAuthorityDataAccess = new CommonDataAccess(database.WeeeContext);
                var organisation = Organisation.CreateSoleTrader("Test Organisation");
                var aatf         = ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation);

                database.WeeeContext.Aatfs.Add(ObligatedWeeeIntegrationCommon.CreateAatf(database, organisation));

                await database.WeeeContext.SaveChangesAsync();

                dataAccess.Remove <Aatf>(null);

                database.WeeeContext.ChangeTracker.Entries().Count(e => e.State == EntityState.Deleted).Should().Be(0);
            }
        }
        public async Task Execute_GivenWeeeReceivedData_ReturnsWeeeReceivedAatfDataShouldBeCorrect()
        {
            using (var db = new DatabaseWrapper())
            {
                var @return = CreateSubmittedReturn(db);
                var aatf    = ObligatedWeeeIntegrationCommon.CreateAatf(db, @return.Organisation);
                var scheme  = ObligatedWeeeIntegrationCommon.CreateScheme(@return.Organisation);
                scheme.UpdateScheme("TestScheme", "WEE/AB1234CD/SCH", string.Empty, null, aatf.CompetentAuthority);

                var weeeReceived = new EA.Weee.Domain.AatfReturn.WeeeReceived(scheme, aatf, @return);

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

                db.WeeeContext.Returns.Add(@return);
                db.WeeeContext.ReturnAatfs.Add(new ReturnAatf(aatf, @return));
                db.WeeeContext.WeeeReceived.Add(weeeReceived);
                db.WeeeContext.WeeeReceivedAmount.AddRange(weeeReceivedAmounts);

                await db.WeeeContext.SaveChangesAsync();

                var results = await db.StoredProcedures.GetAatfObligatedCsvData(@return.Id, 2019, 1, aatf.Id);

                Assert.NotNull(results);
                var data = from x in results.AsEnumerable()
                           where x.Field <string>("Name of AATF") == aatf.Name
                           select x;
                data.AsQueryable().Count().Should().Be(28);

                var dataB2B = from x in results.AsEnumerable()
                              where x.Field <string>("Name of AATF") == aatf.Name && x.Field <string>("Obligation type") == "B2B"
                              select x;
                dataB2B.AsQueryable().Count().Should().Be(14);

                var dataB2C = from x in results.AsEnumerable()
                              where x.Field <string>("Name of AATF") == aatf.Name && x.Field <string>("Obligation type") == "B2C"
                              select x;
                dataB2C.AsQueryable().Count().Should().Be(14);
            }
        }