Example #1
0
        public async Task FetchLatestProducers_WithProducerRegisteredTwiceIn2015_ReturnsOnlyLatestProducer()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                ModelHelper helper = new ModelHelper(database.Model);

                // Arrange
                Model.Scheme scheme = helper.CreateScheme();

                Model.MemberUpload memberUpload1 = helper.CreateMemberUpload(scheme);
                memberUpload1.ComplianceYear = 2015;
                memberUpload1.IsSubmitted    = true;

                Model.ProducerSubmission producer1 = helper.CreateProducerAsCompany(memberUpload1, "AAAAA");
                producer1.UpdatedDate = new DateTime(2015, 1, 1);

                Model.MemberUpload memberUpload2 = helper.CreateMemberUpload(scheme);
                memberUpload2.ComplianceYear = 2015;
                memberUpload2.IsSubmitted    = true;

                Model.ProducerSubmission producer2 = helper.CreateProducerAsCompany(memberUpload2, "AAAAA");
                producer2.UpdatedDate = new DateTime(2015, 1, 2);

                database.Model.SaveChanges();

                // Act
                FetchProducerSearchResultsForCacheDataAccess dataAccess = new FetchProducerSearchResultsForCacheDataAccess(database.WeeeContext);
                var results = await dataAccess.FetchLatestProducers();

                // Assert
                Assert.NotNull(results);
                Assert.Contains(results, p => p.RegistrationNumber == "AAAAA" && p.Name == producer2.Business.Company.Name);
                Assert.DoesNotContain(results, p => p.RegistrationNumber == "AAAAA" && p.Name == producer1.Business.Company.Name);
            }
        }
Example #2
0
        /// <summary>
        /// Creates a producer associated with the specified member upload.
        /// The producer's business will be populated with the details of a partnership.
        /// </summary>
        /// <param name="memberUpload"></param>
        /// <returns></returns>
        public ProducerSubmission CreateProducerAsPartnership(MemberUpload memberUpload, string registrationNumber, string obligationType)
        {
            ProducerSubmission producerSubmission = CreateProducerWithEmptyBusiness(memberUpload, registrationNumber, obligationType);
            Partnership        partnership        = CreatePartnership();

            producerSubmission.Business.Partnership   = partnership;
            producerSubmission.Business.PartnershipId = partnership.Id;

            return(producerSubmission);
        }
Example #3
0
        /// <summary>
        /// Creates a producer associated with the specified member upload.
        /// The producer's business will be populated with the details of a company.
        /// </summary>
        /// <param name="memberUpload"></param>
        /// <returns></returns>
        public ProducerSubmission CreateProducerAsCompany(MemberUpload memberUpload, string registrationNumber, string obligationType)
        {
            ProducerSubmission producerSubsmission = CreateProducerWithEmptyBusiness(memberUpload, registrationNumber, obligationType);
            Company            company             = CreateCompany();

            producerSubsmission.Business.Company   = company;
            producerSubsmission.Business.CompanyId = company.Id;

            return(producerSubsmission);
        }
Example #4
0
        public async Task FetchLatestProducers_WithThreeProducers_ReturnsProducersOrderedByRegistrationNumber()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                ModelHelper helper = new ModelHelper(database.Model);

                // Arrange
                Model.Scheme scheme = helper.CreateScheme();

                Model.MemberUpload memberUpload1 = helper.CreateMemberUpload(scheme);
                memberUpload1.ComplianceYear = 2015;
                memberUpload1.IsSubmitted    = true;

                Model.ProducerSubmission producer1 = helper.CreateProducerAsCompany(memberUpload1, "AAAAA");

                Model.MemberUpload memberUpload2 = helper.CreateMemberUpload(scheme);
                memberUpload2.ComplianceYear = 2015;
                memberUpload2.IsSubmitted    = true;

                Model.ProducerSubmission producer2 = helper.CreateProducerAsCompany(memberUpload2, "CCCCC");

                Model.MemberUpload memberUpload3 = helper.CreateMemberUpload(scheme);
                memberUpload3.ComplianceYear = 2015;
                memberUpload3.IsSubmitted    = true;

                Model.ProducerSubmission producer3 = helper.CreateProducerAsCompany(memberUpload3, "BBBBB");

                database.Model.SaveChanges();

                // Act
                FetchProducerSearchResultsForCacheDataAccess dataAccess = new FetchProducerSearchResultsForCacheDataAccess(database.WeeeContext);
                var results = await dataAccess.FetchLatestProducers();

                // Assert
                Assert.NotNull(results);

                var result1 = results.SingleOrDefault(r => r.RegistrationNumber == "AAAAA");
                var result2 = results.SingleOrDefault(r => r.RegistrationNumber == "BBBBB");
                var result3 = results.SingleOrDefault(r => r.RegistrationNumber == "CCCCC");

                Assert.NotNull(result1);
                Assert.NotNull(result2);
                Assert.NotNull(result3);

                int result1index = results.IndexOf(result1);
                int result2index = results.IndexOf(result2);
                int result3index = results.IndexOf(result3);

                Assert.True(result1index < result2index);
                Assert.True(result2index < result3index);
            }
        }
Example #5
0
        public BrandName_ CreateBrandName(ProducerSubmission producerSubmission, string brandName)
        {
            var result = new BrandName_
            {
                Id   = IntegerToGuid(GetNextId()),
                Name = brandName,
                ProducerSubmissionId = producerSubmission.Id,
                ProducerSubmission   = producerSubmission
            };

            model.BrandName_Set.Add(result);

            return(result);
        }
Example #6
0
        private ProducerSubmission CreateProducerWithEmptyBusiness(MemberUpload memberUpload, string registrationNumber, string obligationType)
        {
            int      businessId = GetNextId();
            Business business   = new Business
            {
                Id = IntegerToGuid(businessId),
            };

            model.Businesses.Add(business);

            int producerSubmissionId = GetNextId();

            RegisteredProducer registeredProducer = GetOrCreateRegisteredProducer(memberUpload.Scheme, memberUpload.ComplianceYear.Value, registrationNumber);

            var chargeBandAmount = FetchChargeBandAmount(ChargeBand.A);
            ProducerSubmission producerSubmission = new ProducerSubmission
            {
                Id = IntegerToGuid(producerSubmissionId),
                RegisteredProducer         = registeredProducer,
                RegisteredProducerId       = registeredProducer.Id,
                MemberUpload               = memberUpload,
                MemberUploadId             = memberUpload.Id,
                TradingName                = string.Format("Producer {0} Trading Name", producerSubmissionId),
                UpdatedDate                = new DateTime(2015, 1, 1, 0, 0, 0),
                Business                   = business,
                ProducerBusinessId         = business.Id,
                AuthorisedRepresentativeId = null,
                ChargeBandAmountId         = chargeBandAmount.Id,
                ChargeThisUpdate           = 0,
                ObligationType             = obligationType,
                Invoiced                   = false
            };

            model.ProducerSubmissions.Add(producerSubmission);

            if (memberUpload.IsSubmitted)
            {
                registeredProducer.CurrentSubmissionId = IntegerToGuid(producerSubmissionId);
                registeredProducer.CurrentSubmission   = producerSubmission;
            }

            return(producerSubmission);
        }
        public BrandName_ CreateBrandName(ProducerSubmission producerSubmission, string brandName)
        {
            var result = new BrandName_
            {
                Id = IntegerToGuid(GetNextId()),
                Name = brandName,
                ProducerSubmissionId = producerSubmission.Id,
                ProducerSubmission = producerSubmission
            };

            model.BrandName_Set.Add(result);

            return result;
        }
        private ProducerSubmission CreateProducerWithEmptyBusiness(MemberUpload memberUpload, string registrationNumber, string obligationType)
        {
            int businessId = GetNextId();
            Business business = new Business
            {
                Id = IntegerToGuid(businessId),
            };
            model.Businesses.Add(business);

            int producerSubmissionId = GetNextId();

            RegisteredProducer registeredProducer = GetOrCreateRegisteredProducer(memberUpload.Scheme, memberUpload.ComplianceYear.Value, registrationNumber);

            var chargeBandAmount = FetchChargeBandAmount(ChargeBand.A);
            ProducerSubmission producerSubmission = new ProducerSubmission
            {
                Id = IntegerToGuid(producerSubmissionId),
                RegisteredProducer = registeredProducer,
                RegisteredProducerId = registeredProducer.Id,
                MemberUpload = memberUpload,
                MemberUploadId = memberUpload.Id,
                TradingName = string.Format("Producer {0} Trading Name", producerSubmissionId),
                UpdatedDate = new DateTime(2015, 1, 1, 0, 0, 0),
                Business = business,
                ProducerBusinessId = business.Id,
                AuthorisedRepresentativeId = null,
                ChargeBandAmountId = chargeBandAmount.Id,
                ChargeThisUpdate = 0,
                ObligationType = obligationType,
                Invoiced = false
            };
            model.ProducerSubmissions.Add(producerSubmission);

            if (memberUpload.IsSubmitted)
            {
                registeredProducer.CurrentSubmissionId = IntegerToGuid(producerSubmissionId);
                registeredProducer.CurrentSubmission = producerSubmission;
            }

            return producerSubmission;
        }