Example #1
0
        public async Task <RuleResult> Evaluate(producerType producer)
        {
            var result = RuleResult.Pass();

            if (producer.status == statusType.A)
            {
                var existingProducerDetails =
                    producerQuerySet.GetLatestProducerForComplianceYearAndScheme(producer.registrationNo, complianceYear, organisationId);

                if (existingProducerDetails != null)
                {
                    var newObligationType = producer.obligationType.ToDomainObligationType();

                    if (existingProducerDetails.ObligationType != newObligationType)
                    {
                        var producerEeeData = await schemeEeeDataQuerySet.GetLatestProducerEeeData(producer.registrationNo);

                        if (producerEeeData != null &&
                            !producerEeeData.All(e => newObligationType.HasFlag(e.ObligationType)))
                        {
                            var eeeDataObligationTypes = producerEeeData
                                                         .Select(e => e.ObligationType)
                                                         .Distinct();

                            string eeeDataObligationTypeMessage = eeeDataObligationTypes.Count() == 1 ?
                                                                  string.Format("{0} EEE data has", eeeDataObligationTypes.Single())
                                : "both B2B and B2C EEE data have";

                            var errorMessage =
                                string.Format("You are attempting to change the obligation type of {0} {1} from {2} to {3}. You cannot make this change because {4} already been submitted for this producer.",
                                              producer.GetProducerName(),
                                              producer.registrationNo,
                                              existingProducerDetails.ObligationType,
                                              newObligationType,
                                              eeeDataObligationTypeMessage);

                            result = RuleResult.Fail(errorMessage, ErrorLevel.Error);
                        }
                        else
                        {
                            var warningMessage =
                                string.Format("You are changing the obligation type for {0} {1} from {2} to {3}.",
                                              producer.GetProducerName(),
                                              producer.registrationNo,
                                              existingProducerDetails.ObligationType,
                                              newObligationType);

                            result = RuleResult.Fail(warningMessage, ErrorLevel.Warning);
                        }
                    }
                }
            }

            return(result);
        }
        public async Task<RuleResult> Evaluate(producerType producer)
        {
            var result = RuleResult.Pass();

            if (producer.status == statusType.A)
            {
                var existingProducerDetails =
                    producerQuerySet.GetLatestProducerForComplianceYearAndScheme(producer.registrationNo, complianceYear, organisationId);

                if (existingProducerDetails != null)
                {
                    var newObligationType = producer.obligationType.ToDomainObligationType();

                    if (existingProducerDetails.ObligationType != newObligationType)
                    {
                        var producerEeeData = await schemeEeeDataQuerySet.GetLatestProducerEeeData(producer.registrationNo);

                        if (producerEeeData != null &&
                            !producerEeeData.All(e => newObligationType.HasFlag(e.ObligationType)))
                        {
                            var eeeDataObligationTypes = producerEeeData
                                .Select(e => e.ObligationType)
                                .Distinct();

                            string eeeDataObligationTypeMessage = eeeDataObligationTypes.Count() == 1 ?
                                string.Format("{0} EEE data has", eeeDataObligationTypes.Single())
                                : "both B2B and B2C EEE data have";

                            var errorMessage =
                                string.Format("You are attempting to change the obligation type of {0} {1} from {2} to {3}. You cannot make this change because {4} already been submitted for this producer.",
                                producer.GetProducerName(),
                                producer.registrationNo,
                                existingProducerDetails.ObligationType,
                                newObligationType,
                                eeeDataObligationTypeMessage);

                            result = RuleResult.Fail(errorMessage, ErrorLevel.Error);
                        }
                        else
                        {
                            var warningMessage =
                                string.Format("You are changing the obligation type for {0} {1} from {2} to {3}.",
                                producer.GetProducerName(),
                                producer.registrationNo,
                                existingProducerDetails.ObligationType,
                                newObligationType);

                            result = RuleResult.Fail(warningMessage, ErrorLevel.Warning);
                        }
                    }
                }
            }

            return result;
        }
Example #3
0
        public RuleResult Evaluate(schemeType scheme, producerType producer, Guid organisationId)
        {
            if (producer.status == statusType.A)
            {
                var existingProducer =
                    querySet.GetProducerForOtherSchemeAndObligationType(producer.registrationNo,
                                                                        scheme.complianceYear, organisationId, producer.obligationType.ToDomainObligationType());

                if (existingProducer != null)
                {
                    string schemeName = "another scheme";
                    if (existingProducer.RegisteredProducer.Scheme != null &&
                        !string.IsNullOrEmpty(existingProducer.RegisteredProducer.Scheme.SchemeName))
                    {
                        schemeName = existingProducer.RegisteredProducer.Scheme.SchemeName;
                    }

                    var errorMessage = string.Format(
                        "{0} {1} is already registered with {2} with obligation type: {3}. Review your file.",
                        producer.GetProducerName(),
                        producer.registrationNo,
                        schemeName,
                        (ObligationType)existingProducer.ObligationType);
                    return(RuleResult.Fail(errorMessage));
                }

                return(RuleResult.Pass());
            }

            return(RuleResult.Pass());
        }
Example #4
0
        public void GetProducerName_ProducerBusinessIsNull_ReturnsTradingName()
        {
            const string tradingName = "some trading name";

            var producer = new producerType
            {
                tradingName = tradingName
            };

            Assert.Equal(tradingName, producer.GetProducerName());
        }
        public void GetProducerName_ProducerBusinessIsNull_ReturnsTradingName()
        {
            const string tradingName = "some trading name";

            var producer = new producerType
            {
                tradingName = tradingName
            };

            Assert.Equal(tradingName, producer.GetProducerName());
        }
Example #6
0
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.status == statusType.I && !string.IsNullOrEmpty(producer.registrationNo))
            {
                return
                    (RuleResult.Fail(
                         string.Format(
                             "You cannot add a producer registration number (PRN) for {0} when registering the producer for the very first time. To register {0} as a brand new producer, remove the PRN - or if the producer has been registered previously, register them or amend their details using status 'A' not 'I'.",
                             producer.GetProducerName())));
            }

            return(RuleResult.Pass());
        }
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.status == statusType.A && string.IsNullOrEmpty(producer.registrationNo))
            {
                return
                    (RuleResult.Fail(
                         string.Format(
                             "You have not provided a producer registration number (PRN) for {0} when attempting to amend existing producer details. To amend this producer add the PRN or to add as a brand new producer use status 'I' in the XML.",
                             producer.GetProducerName())));
            }

            return(RuleResult.Pass());
        }
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.status == statusType.I && !string.IsNullOrEmpty(producer.registrationNo))
            {
                return
                    RuleResult.Fail(
                        string.Format(
                            "You cannot add a producer registration number (PRN) for {0} when adding the producer for the first time. To add {0} as a new producer, remove the PRN - or if the producer already exists, amend its details using status 'A' not 'I'.",
                            producer.GetProducerName()));
            }

            return RuleResult.Pass();
        }
        public RuleResult Evaluate(schemeType scheme, producerType producer, Guid organisationId)
        {
            if (producer.status == statusType.A)
            {
                string existingProducerName = string.Empty;

                var existingProducer =
                    producerQuerySet.GetLatestProducerForComplianceYearAndScheme(producer.registrationNo,
                        scheme.complianceYear, organisationId) ??
                    producerQuerySet.GetLatestProducerFromPreviousComplianceYears(producer.registrationNo);

                if (existingProducer != null)
                {
                    existingProducerName = existingProducer.OrganisationName;
                }
                else
                {
                    var existingMigratedProducer = migratedProducerQuerySet.GetMigratedProducer(producer.registrationNo);

                    if (existingMigratedProducer == null)
                    {
                        // Producer doesn't exist so no warning
                        return RuleResult.Pass();
                    }

                    existingProducerName = existingMigratedProducer.ProducerName;
                }

                if (existingProducerName != producer.GetProducerName())
                {
                    var errorMessage = string.Format("The producer name of {0} {1} will change from {0} to {2}.",
                        existingProducerName, producer.registrationNo, producer.GetProducerName());

                    return RuleResult.Fail(errorMessage, Core.Shared.ErrorLevel.Warning);
                }
            }

            return RuleResult.Pass();
        }
Example #10
0
        public void Amendment_RegistrationNumberIsNullOrEmpty_FailsValidation_AndIncludesProducerNameInMessage_AndErrorLevelIsError(string registrationNumber, string tradingName)
        {
            var producer = new producerType
            {
                tradingName    = tradingName,
                status         = statusType.A,
                registrationNo = registrationNumber
            };

            var result = Rule().Evaluate(producer);

            Assert.False(result.IsValid);
            Assert.Contains(producer.GetProducerName(), result.Message);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
        public void Amendment_RegistrationNumberIsNullOrEmpty_FailsValidation_AndIncludesProducerNameInMessage_AndErrorLevelIsError(string registrationNumber, string tradingName)
        {
            var producer = new producerType
            {
                tradingName = tradingName,
                status = statusType.A,
                registrationNo = registrationNumber
            };

            var result = Rule().Evaluate(producer);

            Assert.False(result.IsValid);
            Assert.Contains(producer.GetProducerName(), result.Message);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.authorisedRepresentative == null)
            {
                return(RuleResult.Pass());
            }

            if (producer.authorisedRepresentative.overseasProducer == null)
            {
                return(RuleResult.Pass());
            }

            var producerBusinessItem = producer.producerBusiness.Item;
            contactDetailsContainerType officeContactDetails;

            if (producerBusinessItem is companyType)
            {
                officeContactDetails = ((companyType)producerBusinessItem).registeredOffice;
            }
            else if (producerBusinessItem is partnershipType)
            {
                officeContactDetails =
                    ((partnershipType)producerBusinessItem).principalPlaceOfBusiness;
            }
            else
            {
                throw new ArgumentException(
                          string.Format("{0}: producerBusinessItem must be of type companyType or partnershipType",
                                        producer.tradingName));
            }

            // abusing law of demeter here, but schema requires all these fields to be present and correct
            if (!ukCountries.Contains(officeContactDetails.contactDetails.address.country))
            {
                return
                    (RuleResult.Fail(
                         string.Format(
                             "You have entered {0} {1} as an authorised representative with a non-UK address. Authorised representatives must be based in the UK. Review your file.",
                             producer.GetProducerName(), producer.registrationNo)));
            }
            else
            {
                return(RuleResult.Pass());
            }
        }
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.authorisedRepresentative == null)
            {
                return RuleResult.Pass();
            }

            if (producer.authorisedRepresentative.overseasProducer == null)
            {
                return RuleResult.Pass();
            }

            var producerBusinessItem = producer.producerBusiness.Item;
            contactDetailsContainerType officeContactDetails;

            if (producerBusinessItem is companyType)
            {
                officeContactDetails = ((companyType)producerBusinessItem).registeredOffice;
            }
            else if (producerBusinessItem is partnershipType)
            {
                officeContactDetails =
                    ((partnershipType)producerBusinessItem).principalPlaceOfBusiness;
            }
            else
            {
                throw new ArgumentException(
                    string.Format("{0}: producerBusinessItem must be of type companyType or partnershipType",
                        producer.tradingName));
            }

            // abusing law of demeter here, but schema requires all these fields to be present and correct
            if (!ukCountries.Contains(officeContactDetails.contactDetails.address.country))
            {
                return
                    RuleResult.Fail(
                        string.Format(
                            "You have entered {0} {1} as an authorised representative with a non-UK address. Authorised representatives must be based in the UK. Review your file.",
                            producer.GetProducerName(), producer.registrationNo));
            }
            else
            {
                return RuleResult.Pass();
            }
        }
        public void Insert_RegistrationNumberIsNotNullOrEmpty_FailsValidation_AndIncludesProducerNameInMessage_AndErrorLevelIsError()
        {
            const string validRegistrationNumber = "ABC12345";
            const string validTradingName        = "MyCompany";

            var producer = new producerType
            {
                tradingName    = validTradingName,
                status         = statusType.I,
                registrationNo = validRegistrationNumber
            };

            var result = Rule().Evaluate(producer);

            Assert.False(result.IsValid);
            Assert.Contains(producer.GetProducerName(), result.Message);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
        public void GetProducerName_ProducerIsCompanyTypeAndNameExists_ReturnsCompanyName()
        {
            const string companyName = "some company name";

            var producer = new producerType
            {
                tradingName = "some trading name",
                producerBusiness = new producerBusinessType
                {
                    Item = new companyType
                    {
                        companyName = companyName
                    }
                }
            };

            Assert.Equal(companyName, producer.GetProducerName());
        }
Example #16
0
        public void GetProducerName_ProducerIsCompanyTypeAndNameExists_ReturnsCompanyName()
        {
            const string companyName = "some company name";

            var producer = new producerType
            {
                tradingName      = "some trading name",
                producerBusiness = new producerBusinessType
                {
                    Item = new companyType
                    {
                        companyName = companyName
                    }
                }
            };

            Assert.Equal(companyName, producer.GetProducerName());
        }
Example #17
0
        public void GetProducerName_ProducerIsPartnershipTypeAndNameExists_ReturnsPartnershipName()
        {
            const string partnershipName = "some company name";

            var producer = new producerType
            {
                tradingName      = "some trading name",
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = partnershipName
                    }
                }
            };

            Assert.Equal(partnershipName, producer.GetProducerName());
        }
        public void GetProducerName_ProducerIsCompanyTypeButNameIsNull_ReturnsTradingName()
        {
            const string tradingName = "some trading name";

            var producer = new producerType
            {
                tradingName = tradingName,
                producerBusiness = new producerBusinessType
                {
                    Item = new companyType
                    {
                        companyName = null
                    }
                }
            };

            Assert.Equal(tradingName, producer.GetProducerName());
        }
        public void Insert_RegistrationNumberIsNotNullOrEmpty_FailsValidation_AndIncludesProducerNameInMessage_AndErrorLevelIsError()
        {
            const string validRegistrationNumber = "ABC12345";
            const string validTradingName = "MyCompany";

            var producer = new producerType
            {
                tradingName = validTradingName,
                status = statusType.I,
                registrationNo = validRegistrationNumber
            };

            var result = Rule().Evaluate(producer);

            Assert.False(result.IsValid);
            Assert.Contains(producer.GetProducerName(), result.Message);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
Example #20
0
        public void GetProducerName_ProducerIsPartnershipTypeButNameIsNull_ReturnsTradingName()
        {
            const string tradingName = "some trading name";

            var producer = new producerType
            {
                tradingName      = tradingName,
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = null
                    }
                }
            };

            Assert.Equal(tradingName, producer.GetProducerName());
        }
        public RuleResult Evaluate(producerType element)
        {
            var result = RuleResult.Pass();

            if (element.status == statusType.I &&
                element.producerBusiness != null)
            {
                var company = element.producerBusiness.Item as companyType;
                if (company != null)
                {
                    var companyNumber = CompanyRegistrationNumberFormatter
                        .FormatCompanyRegistrationNumber(company.companyNumber);

                    if (!string.IsNullOrEmpty(companyNumber) &&
                        (producerQuerySet.GetLatestCompanyProducers().Any(p =>
                            {
                                var existingCompanyRegistrationNumber = CompanyRegistrationNumberFormatter
                                .FormatCompanyRegistrationNumber(p.ProducerBusiness.CompanyDetails.CompanyNumber);

                                return !string.IsNullOrEmpty(existingCompanyRegistrationNumber) &&
                                    existingCompanyRegistrationNumber == companyNumber;
                            })
                         ||
                         migratedProducerQuerySet.GetAllMigratedProducers().Any(m =>
                             {
                                 var migratedProducerCompanyNumber = CompanyRegistrationNumberFormatter
                                 .FormatCompanyRegistrationNumber(m.CompanyNumber);

                                 return !string.IsNullOrEmpty(migratedProducerCompanyNumber) &&
                                     migratedProducerCompanyNumber == companyNumber;
                             })))
                    {
                        result = RuleResult.Fail(
                            string.Format(@"We have previously issued a producer registration number (PRN) to {0} with company registration number (CRN) {1}. To register this producer, provide its existing PRN and use the status 'A' in the XML file.",
                                element.GetProducerName(), company.companyNumber),
                            Core.Shared.ErrorLevel.Error);
                    }
                }
            }

            return result;
        }
Example #22
0
        public RuleResult Evaluate(producerType element)
        {
            var result = RuleResult.Pass();

            if (element.status == statusType.I &&
                element.producerBusiness != null)
            {
                var company = element.producerBusiness.Item as companyType;
                if (company != null)
                {
                    var companyNumber = CompanyRegistrationNumberFormatter
                                        .FormatCompanyRegistrationNumber(company.companyNumber);

                    if (!string.IsNullOrEmpty(companyNumber) &&
                        (producerQuerySet.GetLatestCompanyProducers().Any(p =>
                    {
                        var existingCompanyRegistrationNumber = CompanyRegistrationNumberFormatter
                                                                .FormatCompanyRegistrationNumber(p.ProducerBusiness.CompanyDetails.CompanyNumber);

                        return(!string.IsNullOrEmpty(existingCompanyRegistrationNumber) &&
                               existingCompanyRegistrationNumber == companyNumber);
                    })
                         ||
                         migratedProducerQuerySet.GetAllMigratedProducers().Any(m =>
                    {
                        var migratedProducerCompanyNumber = CompanyRegistrationNumberFormatter
                                                            .FormatCompanyRegistrationNumber(m.CompanyNumber);

                        return(!string.IsNullOrEmpty(migratedProducerCompanyNumber) &&
                               migratedProducerCompanyNumber == companyNumber);
                    })))
                    {
                        result = RuleResult.Fail(
                            string.Format(@"We have previously issued a producer registration number (PRN) to {0} with company registration number (CRN) {1}. To register this producer, provide its existing PRN and use the status 'A' in the XML file.",
                                          element.GetProducerName(), company.companyNumber),
                            Core.Shared.ErrorLevel.Error);
                    }
                }
            }

            return(result);
        }
Example #23
0
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.status == statusType.A && !string.IsNullOrEmpty(producer.registrationNo))
            {
                var validRegistrationNumbers = producerQuerySet.GetAllRegistrationNumbers()
                                               .Union(migratedProducerQuerySet.GetAllRegistrationNumbers())
                                               .Select(prn => prn.ToLowerInvariant());

                if (!validRegistrationNumbers.Contains(producer.registrationNo.ToLowerInvariant()))
                {
                    return
                        (RuleResult.Fail(
                             string.Format(
                                 "We cannot recognise the producer registration number (PRN) you have entered for {0} {1}. Enter the correct PRN for this producer.",
                                 producer.GetProducerName(), producer.registrationNo)));
                }
            }

            return(RuleResult.Pass());
        }
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.status == statusType.A && !string.IsNullOrEmpty(producer.registrationNo))
            {
                var validRegistrationNumbers = producerQuerySet.GetAllRegistrationNumbers()
                    .Union(migratedProducerQuerySet.GetAllRegistrationNumbers())
                    .Select(prn => prn.ToLowerInvariant());

                if (!validRegistrationNumbers.Contains(producer.registrationNo.ToLowerInvariant()))
                {
                    return
                        RuleResult.Fail(
                            string.Format(
                                "We cannot recognise the producer registration number (PRN) you have entered for {0} {1}. Enter the correct PRN for this producer.",
                                producer.GetProducerName(), producer.registrationNo));
                }
            }

            return RuleResult.Pass();
        }
        public void ProducerHasPrnNumberThatDoesNotExistAndProducerIsCompany_ReturnsProducerNameInErrorMessage()
        {
            const string prn         = "ABC12345";
            const string companyName = "Company Name";
            var          producer    = new producerType
            {
                registrationNo   = prn,
                status           = statusType.A,
                producerBusiness = new producerBusinessType
                {
                    Item = new companyType
                    {
                        companyName = companyName
                    }
                },
            };

            var result = Rule().Evaluate(producer);

            Assert.Contains(producer.GetProducerName(), result.Message);
        }
        public void AuthorisedRepresentativeOfficeCountryIsNotInUnitedKingdom_FailsValidation_AndIncludesProducerNameInMessage_AndErrorLevelIsError()
        {
            const string validTradingName = "MyCompany";

            const countryType someNonUkCountry = countryType.TURKEY;

            var producer = new producerType
            {
                tradingName = validTradingName,
                authorisedRepresentative = new authorisedRepresentativeType
                {
                    overseasProducer = new overseasProducerType()
                },
                producerBusiness = MakeProducerBusinessTypeInCountry(someNonUkCountry)
            };

            var result = Rule().Evaluate(producer);

            Assert.False(result.IsValid);
            Assert.Contains(producer.GetProducerName(), result.Message);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
        public void AuthorisedRepresentativeOfficeCountryIsNotInUnitedKingdom_FailsValidation_AndIncludesProducerNameInMessage_AndErrorLevelIsError()
        {
            const string validTradingName = "MyCompany";

            const countryType someNonUkCountry = countryType.TURKEY;

            var producer = new producerType
            {
                tradingName = validTradingName,
                authorisedRepresentative = new authorisedRepresentativeType
                {
                    overseasProducer = new overseasProducerType()
                },
                producerBusiness = MakeProducerBusinessTypeInCountry(someNonUkCountry)
            };

            var result = Rule().Evaluate(producer);

            Assert.False(result.IsValid);
            Assert.Contains(producer.GetProducerName(), result.Message);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
Example #28
0
        public RuleResult Evaluate(schemeType scheme, producerType producer, Guid organisationId)
        {
            if (producer.status == statusType.A)
            {
                string existingProducerName = string.Empty;

                var existingProducer =
                    producerQuerySet.GetLatestProducerForComplianceYearAndScheme(producer.registrationNo,
                                                                                 scheme.complianceYear, organisationId) ??
                    producerQuerySet.GetLatestProducerFromPreviousComplianceYears(producer.registrationNo);

                if (existingProducer != null)
                {
                    existingProducerName = existingProducer.OrganisationName;
                }
                else
                {
                    var existingMigratedProducer = migratedProducerQuerySet.GetMigratedProducer(producer.registrationNo);

                    if (existingMigratedProducer == null)
                    {
                        // Producer doesn't exist so no warning
                        return(RuleResult.Pass());
                    }

                    existingProducerName = existingMigratedProducer.ProducerName;
                }

                if (existingProducerName != producer.GetProducerName())
                {
                    var errorMessage = string.Format("The producer name of {0} {1} will change from {0} to {2}.",
                                                     existingProducerName, producer.registrationNo, producer.GetProducerName());

                    return(RuleResult.Fail(errorMessage, Core.Shared.ErrorLevel.Warning));
                }
            }

            return(RuleResult.Pass());
        }
        public RuleResult Evaluate(producerType producer)
        {
            var higherBandThanExpected = producer.annualTurnoverBand ==
                                         annualTurnoverBandType.Greaterthanonemillionpounds &&
                                         producer.annualTurnover.HasValue &&
                                         producer.annualTurnover.Value <= 1000000;

            var lowerBandThanExpected = producer.annualTurnoverBand ==
                                         annualTurnoverBandType.Lessthanorequaltoonemillionpounds &&
                                         producer.annualTurnover.HasValue &&
                                         producer.annualTurnover.Value > 1000000;

            if (higherBandThanExpected || lowerBandThanExpected)
            {
                return
                    RuleResult.Fail(
                        string.Format(
                            "The annualTurnover amount and annualTurnoverBand for {0} are not compatible. Review your file.",
                            producer.GetProducerName()), ErrorLevel.Warning);
            }

            return RuleResult.Pass();
        }
Example #30
0
        public RuleResult Evaluate(producerType producer)
        {
            var higherBandThanExpected = producer.annualTurnoverBand ==
                                         annualTurnoverBandType.Greaterthanonemillionpounds &&
                                         producer.annualTurnover.HasValue &&
                                         producer.annualTurnover.Value <= 1000000;

            var lowerBandThanExpected = producer.annualTurnoverBand ==
                                        annualTurnoverBandType.Lessthanorequaltoonemillionpounds &&
                                        producer.annualTurnover.HasValue &&
                                        producer.annualTurnover.Value > 1000000;

            if (higherBandThanExpected || lowerBandThanExpected)
            {
                return
                    (RuleResult.Fail(
                         string.Format(
                             "The annualTurnover amount and annualTurnoverBand for {0} are not compatible. Review your return XML.",
                             producer.GetProducerName()), ErrorLevel.Warning));
            }

            return(RuleResult.Pass());
        }
Example #31
0
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.authorisedRepresentative == null)
            {
                return(RuleResult.Pass());
            }

            if (producer.authorisedRepresentative.overseasProducer == null)
            {
                return(RuleResult.Pass());
            }

            if (producer.authorisedRepresentative.overseasProducer.overseasContact == null)
            {
                return(RuleResult.Pass());
            }

            contactDetailsType contact = producer.authorisedRepresentative.overseasProducer.overseasContact;

            switch (contact.address.country)
            {
            case countryType.UKENGLAND:
            case countryType.UKNORTHERNIRELAND:
            case countryType.UKSCOTLAND:
            case countryType.UKWALES:

                string errorMessage = string.Format(
                    "You have entered {0} {1} as an authorised representative of an organisation with a UK address. Authorised representatives cannot represent producers based in the UK. Review your file.",
                    producer.GetProducerName(), producer.registrationNo);

                return(RuleResult.Fail(errorMessage, Core.Shared.ErrorLevel.Error));

            default:
                return(RuleResult.Pass());
            }
        }
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.authorisedRepresentative == null)
            {
                return RuleResult.Pass();
            }

            if (producer.authorisedRepresentative.overseasProducer == null)
            {
                return RuleResult.Pass();
            }

            if (producer.authorisedRepresentative.overseasProducer.overseasContact == null)
            {
                return RuleResult.Pass();
            }

            contactDetailsType contact = producer.authorisedRepresentative.overseasProducer.overseasContact;

            switch (contact.address.country)
            {
                case countryType.UKENGLAND:
                case countryType.UKNORTHERNIRELAND:
                case countryType.UKSCOTLAND:
                case countryType.UKWALES:

                    string errorMessage = string.Format(
                        "You have entered {0} {1} as an authorised representative of an organisation with a UK address. Authorised representatives cannot represent producers based in the UK. Review your file.",
                        producer.GetProducerName(), producer.registrationNo);

                    return RuleResult.Fail(errorMessage, Core.Shared.ErrorLevel.Error);

                default:
                    return RuleResult.Pass();
            }
        }
        public void ProducerHasPrnNumberThatDoesNotExistAndProducerIsCompany_ReturnsProducerNameInErrorMessage()
        {
            const string prn = "ABC12345";
            const string companyName = "Company Name";
            var producer = new producerType
            {
                registrationNo = prn,
                status = statusType.A,
                producerBusiness = new producerBusinessType
                {
                    Item = new companyType
                    {
                        companyName = companyName
                    }
                },
            };

            var result = Rule().Evaluate(producer);

            Assert.Contains(producer.GetProducerName(), result.Message);
        }
        public void GetProducerName_ProducerIsPartnershipTypeAndNameExists_ReturnsPartnershipName()
        {
            const string partnershipName = "some company name";

            var producer = new producerType
            {
                tradingName = "some trading name",
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = partnershipName
                    }
                }
            };

            Assert.Equal(partnershipName, producer.GetProducerName());
        }