Example #1
0
        public async void CreateProducerList_WithComplianceYear2015_SetsComplianceYear()
        {
            // Arrange
            var dataAccess = A.Fake <IProducerListFactoryDataAccess>();

            A.CallTo(() => dataAccess.FetchSchemeInfo(A <Guid> ._)).Returns(new List <SchemeInfo>
            {
                new SchemeInfo {
                    ApprovalNumber = "123", TradingName = "Test"
                }
            });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                ComplianceYear = 2015
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(2015, producerList.ComplianceYear);
        }
Example #2
0
        public async void CreateProducerList_WithSchemaVersion306_SetsSchemaVersion()
        {
            // Arrange
            var dataAccess = A.Fake <IProducerListFactoryDataAccess>();

            A.CallTo(() => dataAccess.FetchSchemeInfo(A <Guid> ._)).Returns(new List <SchemeInfo>
            {
                new SchemeInfo {
                    ApprovalNumber = "123", TradingName = "Test"
                }
            });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                SchemaVersion  = MemberRegistrationSchemaVersion.Version_3_06
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(MemberRegistrationSchemaVersion.Version_3_06, producerList.SchemaVersion);
        }
Example #3
0
        public XDocument GenerateXml(ProducerList producerList, ProducerListSettings settings)
        {
            Guard.ArgumentNotNull(() => producerList, producerList);
            Guard.ArgumentNotNull(() => settings, settings);

            XDocument xmlDoc = new XDocument();

            xmlDoc.Declaration = new XDeclaration("1.0", "utf-8", "yes");

            XElement xmlScheme = new XElement(XmlNamespace.MemberRegistration + "scheme");

            xmlDoc.Add(xmlScheme);

            // If we are creating an XML document that is deliberately invalid,
            // let's include a <foo/> element iXmlNamespace.MemberRegistrationide of the root element.
            if (settings.IncludeUnexpectedFooElement)
            {
                XElement xmlFoo = new XElement(XmlNamespace.MemberRegistration + "foo");
                xmlScheme.Add(xmlFoo);
            }

            PopulateScheme(producerList, xmlScheme);

            return(xmlDoc);
        }
Example #4
0
        public async void CreateProducerList_With1NewProducer_And1ExistingProducer_Creates2Producers()
        {
            // Arrange
            var dataAccess = A.Fake <IProducerListFactoryDataAccess>();

            A.CallTo(() => dataAccess.FetchSchemeInfo(A <Guid> ._)).Returns(new List <SchemeInfo>
            {
                new SchemeInfo {
                    ApprovalNumber = "123", TradingName = "Test"
                }
            });
            A.CallTo(() => dataAccess.GetRegistrationNumbers(A <Guid> ._, A <int> ._, A <int> ._)).Returns(
                new List <string>
            {
                "1"
            });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID            = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                NumberOfNewProducers      = 1,
                NumberOfExistingProducers = 1,
                ComplianceYear            = 2015
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(2, producerList.Producers.Count);
        }
Example #5
0
        public async Task <ProducerList> CreateAsync(ProducerListSettings listSettings)
        {
            Guard.ArgumentNotNull(() => listSettings, listSettings);

            ProducerList producerList = new ProducerList();

            SchemeInfo schemeInfo = await FetchSchemeInfo(listSettings.OrganisationID);

            string approvalNumber = SanitizeApprovalNumber(schemeInfo.ApprovalNumber);
            string tradingName    = SanitizeTradingName(schemeInfo.TradingName);

            producerList.SchemaVersion  = listSettings.SchemaVersion;
            producerList.ApprovalNumber = approvalNumber;
            producerList.ComplianceYear = listSettings.ComplianceYear;
            producerList.TradingName    = tradingName;
            producerList.SchemeBusiness = SchemeBusiness.Create(listSettings);

            for (int index = 0; index < listSettings.NumberOfNewProducers; ++index)
            {
                ProducerSettings producerSettings = new ProducerSettings();

                producerSettings.SchemaVersion = listSettings.SchemaVersion;
                producerSettings.IsNew         = true;
                producerSettings.IgnoreStringLengthConditions = listSettings.IgnoreStringLengthConditions;

                Producer producer = Producer.Create(producerSettings, listSettings.NoCompaniesForNewProducers);

                producerList.Producers.Add(producer);
            }

            int numberOfExistingProducersToInclude = listSettings.NumberOfExistingProducers;

            List <string> registrationNumbers = await
                                                dataAccess.GetRegistrationNumbers(listSettings.OrganisationID, listSettings.ComplianceYear, numberOfExistingProducersToInclude);

            int numberOfExistingProducers = registrationNumbers.Count;

            if (numberOfExistingProducersToInclude > numberOfExistingProducers)
            {
                numberOfExistingProducersToInclude = numberOfExistingProducers;
            }

            for (int index = 0; index < numberOfExistingProducersToInclude; ++index)
            {
                ProducerSettings producerSettings = new ProducerSettings();

                producerSettings.SchemaVersion                = listSettings.SchemaVersion;
                producerSettings.IsNew                        = false;
                producerSettings.RegistrationNumber           = registrationNumbers[index];
                producerSettings.IgnoreStringLengthConditions = listSettings.IgnoreStringLengthConditions;

                Producer producer = Producer.Create(producerSettings, listSettings.NoCompaniesForNewProducers);

                producerList.Producers.Add(producer);
            }

            return(producerList);
        }
        public async Task<ProducerList> CreateAsync(ProducerListSettings listSettings)
        {
            Guard.ArgumentNotNull(() => listSettings, listSettings);

            ProducerList producerList = new ProducerList();

            SchemeInfo schemeInfo = await FetchSchemeInfo(listSettings.OrganisationID);

            string approvalNumber = SanitizeApprovalNumber(schemeInfo.ApprovalNumber);
            string tradingName = SanitizeTradingName(schemeInfo.TradingName);

            producerList.SchemaVersion = listSettings.SchemaVersion;
            producerList.ApprovalNumber = approvalNumber;
            producerList.ComplianceYear = listSettings.ComplianceYear;
            producerList.TradingName = tradingName;
            producerList.SchemeBusiness = SchemeBusiness.Create(listSettings);

            for (int index = 0; index < listSettings.NumberOfNewProducers; ++index)
            {
                ProducerSettings producerSettings = new ProducerSettings();

                producerSettings.SchemaVersion = listSettings.SchemaVersion;
                producerSettings.IsNew = true;
                producerSettings.IgnoreStringLengthConditions = listSettings.IgnoreStringLengthConditions;

                Producer producer = Producer.Create(producerSettings, listSettings.NoCompaniesForNewProducers);

                producerList.Producers.Add(producer);
            }

            int numberOfExistingProducersToInclude = listSettings.NumberOfExistingProducers;

            List<string> registrationNumbers = await 
                dataAccess.GetRegistrationNumbers(listSettings.OrganisationID, listSettings.ComplianceYear, numberOfExistingProducersToInclude);

            int numberOfExistingProducers = registrationNumbers.Count;

            if (numberOfExistingProducersToInclude > numberOfExistingProducers)
            {
                numberOfExistingProducersToInclude = numberOfExistingProducers;
            }

            for (int index = 0; index < numberOfExistingProducersToInclude; ++index)
            {
                ProducerSettings producerSettings = new ProducerSettings();

                producerSettings.SchemaVersion = listSettings.SchemaVersion;
                producerSettings.IsNew = false;
                producerSettings.RegistrationNumber = registrationNumbers[index];
                producerSettings.IgnoreStringLengthConditions = listSettings.IgnoreStringLengthConditions;

                Producer producer = Producer.Create(producerSettings, listSettings.NoCompaniesForNewProducers);

                producerList.Producers.Add(producer);
            }

            return producerList;
        }
Example #7
0
 private void PopulateProducerList(ProducerList producerList, XElement xmlProducerList)
 {
     foreach (Producer producer in producerList.Producers)
     {
         XElement xmlProducer = new XElement(XmlNamespace.MemberRegistration + "producer");
         xmlProducerList.Add(xmlProducer);
         PopulateProducer(producer, xmlProducer);
     }
 }
        private void InitViewModels()
        {
            var producerList = controller.GetAllProducers();

            ProducerList.Clear();
            foreach (var producer in producerList)
            {
                ProducerList.Add(new ProducerViewModel(producer));
            }
        }
Example #9
0
        public void XmlGenerator_WithValidEmptyProducerList_ReturnsCorrectXml()
        {
            // Arrange
            ProducerListSettings settings = A.Fake <ProducerListSettings>();

            ProducerList producerList = new ProducerList();

            producerList.ApprovalNumber                       = "Approval Number";
            producerList.ComplianceYear                       = 2015;
            producerList.SchemaVersion                        = MemberRegistrationSchemaVersion.Version_3_06;
            producerList.SchemeBusiness.Company               = new SchemeCompany();
            producerList.SchemeBusiness.Company.CompanyName   = "Company Name";
            producerList.SchemeBusiness.Company.CompanyNumber = "Company Number";
            producerList.TradingName = "Trading Name";

            XmlGenerator xmlGenerator = new XmlGenerator();

            // Act
            XDocument xmlDocument = xmlGenerator.GenerateXml(producerList, settings);

            string actual;

            using (MemoryStream stream = new MemoryStream())
            {
                xmlDocument.Save(stream);
                stream.Position = 0;
                using (TextReader tr = new StreamReader(stream))
                {
                    actual = tr.ReadToEnd();
                }
            }

            // Assert
            string expected =
                @"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>
<scheme xmlns=""http://www.environment-agency.gov.uk/WEEE/XMLSchema"">
  <XSDVersion>3.06</XSDVersion>
  <approvalNo>Approval Number</approvalNo>
  <complianceYear>2015</complianceYear>
  <tradingName>Trading Name</tradingName>
  <schemeBusiness>
    <company>
      <companyName>Company Name</companyName>
      <companyNumber>Company Number</companyNumber>
    </company>
  </schemeBusiness>
  <producerList />
</scheme>";

            Xunit.Assert.Equal(expected, actual);
        }
        public void XmlGenerator_WithValidEmptyProducerList_ReturnsCorrectXml()
        {
            // Arrange
            ProducerListSettings settings = A.Fake<ProducerListSettings>();

            ProducerList producerList = new ProducerList();
            producerList.ApprovalNumber = "Approval Number";
            producerList.ComplianceYear = 2015;
            producerList.SchemaVersion = MemberRegistrationSchemaVersion.Version_3_06;
            producerList.SchemeBusiness.Company = new SchemeCompany();
            producerList.SchemeBusiness.Company.CompanyName = "Company Name";
            producerList.SchemeBusiness.Company.CompanyNumber = "Company Number";
            producerList.TradingName = "Trading Name";

            XmlGenerator xmlGenerator = new XmlGenerator();

            // Act
            XDocument xmlDocument = xmlGenerator.GenerateXml(producerList, settings);

            string actual;
            using (MemoryStream stream = new MemoryStream())
            {
                xmlDocument.Save(stream);
                stream.Position = 0;
                using (TextReader tr = new StreamReader(stream))
                {
                    actual = tr.ReadToEnd();
                }
            }

            // Assert
            string expected =
@"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>
<scheme xmlns=""http://www.environment-agency.gov.uk/WEEE/XMLSchema"">
  <XSDVersion>3.06</XSDVersion>
  <approvalNo>Approval Number</approvalNo>
  <complianceYear>2015</complianceYear>
  <tradingName>Trading Name</tradingName>
  <schemeBusiness>
    <company>
      <companyName>Company Name</companyName>
      <companyNumber>Company Number</companyNumber>
    </company>
  </schemeBusiness>
  <producerList />
</scheme>";

            Xunit.Assert.Equal(expected, actual);
        }
Example #11
0
        public async Task <PcsXmlFile> HandleAsync(GeneratePcsXmlFile message)
        {
            ProducerList producerList = await producerListFactory.CreateAsync(message.Settings);

            XDocument xml = xmlGenerator.GenerateXml(producerList, message.Settings);

            string fileName = string.Format("PCS Member Upload XML - {0:yyyy MM dd HH mm ss}.xml", SystemTime.UtcNow);

            byte[] data;

            if (message.Settings.IncludeMalformedSchema)
            {
                string badXml;
                using (StringWriter stringWriter = new StringWriter())
                {
                    using (BrokenXmlWriter xmlWriter = new BrokenXmlWriter(stringWriter, "scheme"))
                    {
                        xml.Save(xmlWriter);
                    }
                    badXml = stringWriter.ToString();
                }
                data = Encoding.UTF8.GetBytes(badXml);
            }
            else
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    xml.Save(stream);
                    data = stream.ToArray();
                }
            }

            PcsXmlFile file = new PcsXmlFile(fileName, data);

            return(file);
        }
        public XDocument GenerateXml(ProducerList producerList, ProducerListSettings settings)
        {
            Guard.ArgumentNotNull(() => producerList, producerList);
            Guard.ArgumentNotNull(() => settings, settings);

            XDocument xmlDoc = new XDocument();

            xmlDoc.Declaration = new XDeclaration("1.0", "utf-8", "yes");

            XElement xmlScheme = new XElement(XmlNamespace.MemberRegistration + "scheme");
            xmlDoc.Add(xmlScheme);

            // If we are creating an XML document that is deliberately invalid,
            // let's include a <foo/> element iXmlNamespace.MemberRegistrationide of the root element.
            if (settings.IncludeUnexpectedFooElement)
            {
                XElement xmlFoo = new XElement(XmlNamespace.MemberRegistration + "foo");
                xmlScheme.Add(xmlFoo);
            }

            PopulateScheme(producerList, xmlScheme);

            return xmlDoc;
        }
Example #13
0
        private void PopulateScheme(ProducerList producerList, XElement xmlScheme)
        {
            XElement xmlXSDVersion = new XElement(XmlNamespace.MemberRegistration + "XSDVersion");

            xmlScheme.Add(xmlXSDVersion);
            switch (producerList.SchemaVersion)
            {
            case MemberRegistrationSchemaVersion.Version_3_04:
                xmlXSDVersion.Value = "3.04";
                break;

            case MemberRegistrationSchemaVersion.Version_3_06:
                xmlXSDVersion.Value = "3.06";
                break;

            case MemberRegistrationSchemaVersion.Version_3_07:
                xmlXSDVersion.Value = "3.07";
                break;

            default:
                throw new NotSupportedException();
            }

            XElement xmlApprovalNo = new XElement(XmlNamespace.MemberRegistration + "approvalNo");

            xmlScheme.Add(xmlApprovalNo);
            xmlApprovalNo.Value = producerList.ApprovalNumber ?? string.Empty;

            XElement xmlComplianceYear = new XElement(XmlNamespace.MemberRegistration + "complianceYear");

            xmlScheme.Add(xmlComplianceYear);
            xmlComplianceYear.Value = producerList.ComplianceYear.ToString();

            XElement xmlTradingName = new XElement(XmlNamespace.MemberRegistration + "tradingName");

            xmlScheme.Add(xmlTradingName);
            xmlTradingName.Value = producerList.TradingName ?? string.Empty;

            XElement xmlSchemeBusiness = new XElement(XmlNamespace.MemberRegistration + "schemeBusiness");

            xmlScheme.Add(xmlSchemeBusiness);

            if (producerList.SchemeBusiness.Company != null)
            {
                XElement xmlCompany = new XElement(XmlNamespace.MemberRegistration + "company");
                xmlSchemeBusiness.Add(xmlCompany);

                XElement xmlCompanyName = new XElement(XmlNamespace.MemberRegistration + "companyName");
                xmlCompany.Add(xmlCompanyName);
                xmlCompanyName.Value = producerList.SchemeBusiness.Company.CompanyName ?? string.Empty;

                XElement xmlCompanyNumber = new XElement(XmlNamespace.MemberRegistration + "companyNumber");
                xmlCompany.Add(xmlCompanyNumber);
                xmlCompanyNumber.Value = producerList.SchemeBusiness.Company.CompanyNumber ?? string.Empty;
            }

            if (producerList.SchemeBusiness.Partnership != null)
            {
                XElement xmlPartnership = new XElement(XmlNamespace.MemberRegistration + "partnership");
                xmlSchemeBusiness.Add(xmlPartnership);

                XElement xmlPartnershipName = new XElement(XmlNamespace.MemberRegistration + "partnershipName");
                xmlPartnership.Add(xmlPartnershipName);
                xmlPartnershipName.Value = producerList.SchemeBusiness.Partnership.PartnershipName ?? string.Empty;

                XElement xmlPartnershipList = new XElement(XmlNamespace.MemberRegistration + "partnershipList");
                xmlPartnership.Add(xmlPartnershipList);

                foreach (string partner in producerList.SchemeBusiness.Partnership.PartnershipList)
                {
                    XElement xmlPartner = new XElement(XmlNamespace.MemberRegistration + "partner");
                    xmlPartnershipList.Add(xmlPartner);
                    xmlPartner.Value = partner ?? string.Empty;
                }
            }

            XElement xmlProducerList = new XElement(XmlNamespace.MemberRegistration + "producerList");

            xmlScheme.Add(xmlProducerList);
            PopulateProducerList(producerList, xmlProducerList);
        }
        private void PopulateScheme(ProducerList producerList, XElement xmlScheme)
        {
            XElement xmlXSDVersion = new XElement(XmlNamespace.MemberRegistration + "XSDVersion");
            xmlScheme.Add(xmlXSDVersion);
            switch (producerList.SchemaVersion)
            {
                case MemberRegistrationSchemaVersion.Version_3_04:
                    xmlXSDVersion.Value = "3.04";
                    break;

                case MemberRegistrationSchemaVersion.Version_3_06:
                    xmlXSDVersion.Value = "3.06";
                    break;

                case MemberRegistrationSchemaVersion.Version_3_07:
                    xmlXSDVersion.Value = "3.07";
                    break;

                default:
                    throw new NotSupportedException();
            }
            
            XElement xmlApprovalNo = new XElement(XmlNamespace.MemberRegistration + "approvalNo");
            xmlScheme.Add(xmlApprovalNo);
            xmlApprovalNo.Value = producerList.ApprovalNumber ?? string.Empty;

            XElement xmlComplianceYear = new XElement(XmlNamespace.MemberRegistration + "complianceYear");
            xmlScheme.Add(xmlComplianceYear);
            xmlComplianceYear.Value = producerList.ComplianceYear.ToString();

            XElement xmlTradingName = new XElement(XmlNamespace.MemberRegistration + "tradingName");
            xmlScheme.Add(xmlTradingName);
            xmlTradingName.Value = producerList.TradingName ?? string.Empty;

            XElement xmlSchemeBusiness = new XElement(XmlNamespace.MemberRegistration + "schemeBusiness");
            xmlScheme.Add(xmlSchemeBusiness);

            if (producerList.SchemeBusiness.Company != null)
            {
                XElement xmlCompany = new XElement(XmlNamespace.MemberRegistration + "company");
                xmlSchemeBusiness.Add(xmlCompany);

                XElement xmlCompanyName = new XElement(XmlNamespace.MemberRegistration + "companyName");
                xmlCompany.Add(xmlCompanyName);
                xmlCompanyName.Value = producerList.SchemeBusiness.Company.CompanyName ?? string.Empty;

                XElement xmlCompanyNumber = new XElement(XmlNamespace.MemberRegistration + "companyNumber");
                xmlCompany.Add(xmlCompanyNumber);
                xmlCompanyNumber.Value = producerList.SchemeBusiness.Company.CompanyNumber ?? string.Empty;
            }

            if (producerList.SchemeBusiness.Partnership != null)
            {
                XElement xmlPartnership = new XElement(XmlNamespace.MemberRegistration + "partnership");
                xmlSchemeBusiness.Add(xmlPartnership);

                XElement xmlPartnershipName = new XElement(XmlNamespace.MemberRegistration + "partnershipName");
                xmlPartnership.Add(xmlPartnershipName);
                xmlPartnershipName.Value = producerList.SchemeBusiness.Partnership.PartnershipName ?? string.Empty;

                XElement xmlPartnershipList = new XElement(XmlNamespace.MemberRegistration + "partnershipList");
                xmlPartnership.Add(xmlPartnershipList);

                foreach (string partner in producerList.SchemeBusiness.Partnership.PartnershipList)
                {
                    XElement xmlPartner = new XElement(XmlNamespace.MemberRegistration + "partner");
                    xmlPartnershipList.Add(xmlPartner);
                    xmlPartner.Value = partner ?? string.Empty;
                }
            }

            XElement xmlProducerList = new XElement(XmlNamespace.MemberRegistration + "producerList");
            xmlScheme.Add(xmlProducerList);
            PopulateProducerList(producerList, xmlProducerList);
        }
 private void PopulateProducerList(ProducerList producerList, XElement xmlProducerList)
 {
     foreach (Producer producer in producerList.Producers)
     {
         XElement xmlProducer = new XElement(XmlNamespace.MemberRegistration + "producer");
         xmlProducerList.Add(xmlProducer);
         PopulateProducer(producer, xmlProducer);
     }
 }