public void Create_LimitedCompanyWithNullOrEmptyNumber_Throws(string registrationNumber) { Assert.Throws <InvalidOperationException>( () => ProducerBusiness.CreateProducerBusiness(AnyString, BusinessType.LimitedCompany, registrationNumber, null)); }
public static TComplexType Create <TComplexType>(string name = AnyString) where TComplexType : class { var argumentType = typeof(TComplexType); if (argumentType == typeof(Address)) { return(new Address(AnyString, AnyString, AnyString, AnyString, AnyString, AnyString) as TComplexType); } if (argumentType == typeof(Business)) { return(Business.CreateBusiness(name, BusinessType.SoleTrader, AnyString, null) as TComplexType); } if (argumentType == typeof(Contact)) { return(new Contact(name, AnyString, AnyString, AnyString) as TComplexType); } if (argumentType == typeof(ProducerBusiness)) { return(ProducerBusiness.CreateProducerBusiness(name, BusinessType.SoleTrader, AnyString, null) as TComplexType); } return(null); }
public static Producer Create(Guid id, ProducerBusiness business = null, Address address = null, Contact contact = null) { var producer = ObjectInstantiator <Producer> .CreateNew(); EntityHelper.SetEntityId(producer, id); if (business == null) { business = ObjectFactory.CreateEmptyProducerBusiness(); } if (address == null) { address = ObjectFactory.CreateDefaultAddress(); } if (contact == null) { contact = ObjectFactory.CreateEmptyContact(); } ObjectInstantiator <Producer> .SetProperty(x => x.Business, business, producer); ObjectInstantiator <Producer> .SetProperty(x => x.Address, address, producer); ObjectInstantiator <Producer> .SetProperty(x => x.Contact, contact, producer); return(producer); }
public void Create_LimitedCompany_setsRegistrationNumber() { var number = "554636546"; var business = ProducerBusiness.CreateProducerBusiness(AnyString, BusinessType.LimitedCompany, number, null); Assert.Equal(number, business.RegistrationNumber); }
public static ProducerSubmission WithProducerBusiness(ProducerBusiness producerBusiness) { var builder = new ProducerBuilder(); builder.producerBusiness = producerBusiness; return(builder.Build()); }
public void Producer_SetProducerPartnershipCountry_Returns_RegOfficeOrPPoBCountry() { // Arrange Scheme scheme = new Scheme( A.Dummy <Guid>()); MemberUpload memberUpload = new MemberUpload( A.Dummy <Guid>(), A.Dummy <string>(), A.Dummy <List <MemberUploadError> >(), A.Dummy <decimal>(), 2019, scheme, A.Dummy <string>(), A.Dummy <string>()); RegisteredProducer registeredProducer = new RegisteredProducer( "WEE/AA1111AA", 2019, scheme); var producerAddress = new ProducerAddress("PrimaryName", "SecondaryName", "Street", "Town", "Locality", "AdministrativeArea", new Country(A.Dummy <Guid>(), "SPAIN"), "PostCode"); var producerContact = new ProducerContact( "Title", "Forename", "Surname", "123456", "1235467", "12345678", "[email protected]", producerAddress); var producerBusiness = new ProducerBusiness( partnership: new Partnership("TestPartnership", producerContact, new List <Partner> { })); var producer = new ProducerSubmission( registeredProducer, memberUpload, producerBusiness, null, new DateTime(2019, 3, 18), 0, false, null, "Trading Name 1", EEEPlacedOnMarketBandType.Lessthan5TEEEplacedonmarket, SellingTechniqueType.Both, Domain.Obligation.ObligationType.Both, AnnualTurnOverBandType.Greaterthanonemillionpounds, new List <Domain.Producer.BrandName>(), new List <Domain.Producer.SICCode>(), A.Dummy <ChargeBandAmount>(), 0, A.Dummy <StatusType>()); Assert.Equal("SPAIN", producer.RegOfficeOrPBoBCountry); }
public async Task <Guid> HandleAsync(AddProducerToNotification command) { var country = await countryRepository.GetById(command.Address.CountryId.Value); var address = ValueObjectInitializer.CreateAddress(command.Address, country.Name); var contact = ValueObjectInitializer.CreateContact(command.Contact); var business = ProducerBusiness.CreateProducerBusiness(command.Business.Name, command.Business.BusinessType, command.Business.RegistrationNumber, command.Business.OtherDescription); var producers = await repository.GetByNotificationId(command.NotificationId); var producer = producers.AddProducer(business, address, contact); await context.SaveChangesAsync(); return(producer.Id); }
public static ProducerBusiness Create(ISettings settings, bool noCompany) { ProducerBusiness producerBusiness = new ProducerBusiness(); producerBusiness.CorrespondentForNotices = CorrespondentForNotices.Create(settings); if (noCompany || RandomHelper.OneIn(2)) { producerBusiness.Partnership = Partnership.Create(settings); } else { producerBusiness.Company = Company.Create(settings); } return(producerBusiness); }
public static ProducerBusiness Create(ISettings settings, bool noCompany) { ProducerBusiness producerBusiness = new ProducerBusiness(); producerBusiness.CorrespondentForNotices = CorrespondentForNotices.Create(settings); if (noCompany || RandomHelper.OneIn(2)) { producerBusiness.Partnership = Partnership.Create(settings); } else { producerBusiness.Company = Company.Create(settings); } return producerBusiness; }
public static ProducerSubmission Create( ObligationType obligationType, string prn, Guid?schemeOrganisationId = null, int?complianceYear = null, ProducerBusiness producerBusiness = null, params string[] brandNames) { Scheme scheme = new Scheme( schemeOrganisationId ?? Guid.Empty); RegisteredProducer registeredProducer = new RegisteredProducer( prn, complianceYear ?? 2016, scheme); MemberUpload memberUpload = new MemberUpload( Guid.NewGuid(), "<xml>SomeData</xml>", new List <MemberUploadError>(), 0, complianceYear ?? 2016, scheme, "File name"); return(new ProducerSubmission( registeredProducer, memberUpload, producerBusiness ?? new ProducerBusiness(), new AuthorisedRepresentative("authrep"), DateTime.Now, 0, true, null, "trading name", EEEPlacedOnMarketBandType.Lessthan5TEEEplacedonmarket, SellingTechniqueType.Both, obligationType, AnnualTurnOverBandType.Greaterthanonemillionpounds, brandNames.Select(bn => new BrandName(bn)).ToList(), new List <SICCode>(), new ChargeBandAmount(Guid.NewGuid(), ChargeBand.A, 123), 999, A.Dummy <StatusType>())); }
public static ProducerSubmission Create( ObligationType obligationType, string prn, Guid? schemeOrganisationId = null, int? complianceYear = null, ProducerBusiness producerBusiness = null, params string[] brandNames) { Scheme scheme = new Scheme( schemeOrganisationId ?? Guid.Empty); RegisteredProducer registeredProducer = new RegisteredProducer( prn, complianceYear ?? 2016, scheme); MemberUpload memberUpload = new MemberUpload( Guid.NewGuid(), "<xml>SomeData</xml>", new List<MemberUploadError>(), 0, complianceYear ?? 2016, scheme, "File name"); return new ProducerSubmission( registeredProducer, memberUpload, producerBusiness ?? new ProducerBusiness(), new AuthorisedRepresentative("authrep"), DateTime.Now, 0, true, null, "trading name", EEEPlacedOnMarketBandType.Lessthan5TEEEplacedonmarket, SellingTechniqueType.Both, obligationType, AnnualTurnOverBandType.Greaterthanonemillionpounds, brandNames.Select(bn => new BrandName(bn)).ToList(), new List<SICCode>(), new ChargeBandAmount(Guid.NewGuid(), ChargeBand.A, 123), 999); }
public async Task <Guid> HandleAsync(UpdateProducerForNotification message) { var country = await countryRepository.GetById(message.Address.CountryId.Value); var producers = await repository.GetByNotificationId(message.NotificationId); var business = ProducerBusiness.CreateProducerBusiness(message.Business.Name, message.Business.BusinessType, message.Business.RegistrationNumber, message.Business.OtherDescription); var address = ValueObjectInitializer.CreateAddress(message.Address, country.Name); var contact = ValueObjectInitializer.CreateContact(message.Contact); var producer = producers.GetProducer(message.ProducerId); producer.Address = address; producer.Business = business; producer.Contact = contact; await context.SaveChangesAsync(); return(producer.Id); }
public void Create_OtherWithNullDescription_Throws() { Assert.Throws <ArgumentNullException>( () => ProducerBusiness.CreateProducerBusiness(AnyString, BusinessType.Other, null, null)); }
public async Task <IEnumerable <ProducerSubmission> > GenerateProducerData(schemeType scheme, MemberUpload memberUpload, Dictionary <string, ProducerCharge> producerCharges) { if (memberUpload.ComplianceYear == null) { string errorMessage = "Producers cannot be generated for a member upload " + "that does not have a compliance year."; throw new InvalidOperationException(errorMessage); } List <ProducerSubmission> producers = new List <ProducerSubmission>(); int numberOfPrnsNeeded = scheme.producerList.Count(p => p.status == statusType.I); Queue <string> generatedPrns = await dataAccess.ComputePrns(numberOfPrnsNeeded); foreach (producerType producerData in scheme.producerList) { var producerName = producerData.GetProducerName(); if (producerCharges == null) { throw new ApplicationException("No charges have been supplied"); } if (!producerCharges.ContainsKey(producerName)) { throw new ApplicationException(string.Format("No charges have been supplied for the {0}.", producerName)); } var chargeBandAmount = producerCharges[producerName].ChargeBandAmount; var chargeThisUpdate = producerCharges[producerName].Amount; List <BrandName> brandNames = producerData.producerBrandNames.Select(name => new BrandName(name)).ToList(); List <SICCode> codes = producerData.SICCodeList.Select(name => new SICCode(name)).ToList(); ProducerBusiness producerBusiness = await SetProducerBusiness(producerData.producerBusiness); AuthorisedRepresentative authorisedRepresentative = await SetAuthorisedRepresentative(producerData.authorisedRepresentative); EEEPlacedOnMarketBandType eeebandType = Enumeration.FromValue <EEEPlacedOnMarketBandType>((int)producerData.eeePlacedOnMarketBand); SellingTechniqueType sellingTechniqueType = Enumeration.FromValue <SellingTechniqueType>((int)producerData.sellingTechnique); ObligationType obligationType = producerData.obligationType.ToDomainObligationType(); AnnualTurnOverBandType annualturnoverType = Enumeration.FromValue <AnnualTurnOverBandType>((int)producerData.annualTurnoverBand); StatusType status = Enumeration.FromValue <StatusType>((int)producerData.status); DateTime?ceaseDate = null; if (producerData.ceaseToExistDateSpecified) { ceaseDate = producerData.ceaseToExistDate; } RegisteredProducer registeredProducer = null; string producerRegistrationNo; switch (producerData.status) { case statusType.I: producerRegistrationNo = generatedPrns.Dequeue(); break; case statusType.A: producerRegistrationNo = producerData.registrationNo; await EnsureProducerRegistrationNumberExists(producerRegistrationNo); registeredProducer = await dataAccess.FetchRegisteredProducerOrDefault( producerRegistrationNo, memberUpload.ComplianceYear.Value, memberUpload.Scheme.Id); break; default: throw new NotSupportedException(); } if (registeredProducer == null) { registeredProducer = new RegisteredProducer( producerRegistrationNo, memberUpload.ComplianceYear.Value, memberUpload.Scheme); } ProducerSubmission producer = new ProducerSubmission( registeredProducer, memberUpload, producerBusiness, authorisedRepresentative, SystemTime.UtcNow, producerData.annualTurnover, producerData.VATRegistered, ceaseDate, producerData.tradingName, eeebandType, sellingTechniqueType, obligationType, annualturnoverType, brandNames, codes, chargeBandAmount, chargeThisUpdate, status); // modify producer data switch (producerData.status) { case statusType.A: if (registeredProducer.CurrentSubmission == null) { producers.Add(producer); } else { if (!registeredProducer.CurrentSubmission.Equals(producer)) { producers.Add(producer); } else { /* * The producer's details are the same as the current submission for this * registration so we don't need to update them. */ } } break; case statusType.I: producers.Add(producer); break; } } return(producers); }
public override bool Equals(ProducerBusiness other) { return(false); }
public ProducerController(ProducerBusiness producerBusiness) { _producerBusiness = producerBusiness; }
private void PopulateProducerBusiness(ProducerBusiness producerBusiness, XElement xmlProducerBusiness) { XElement xmlCorrespondentForNotices = new XElement(XmlNamespace.MemberRegistration + "correspondentForNotices"); xmlProducerBusiness.Add(xmlCorrespondentForNotices); if (producerBusiness.CorrespondentForNotices.ContactDetails != null) { XElement xmlContactDetails = new XElement(XmlNamespace.MemberRegistration + "contactDetails"); xmlCorrespondentForNotices.Add(xmlContactDetails); PopulateContactDetails(producerBusiness.CorrespondentForNotices.ContactDetails, xmlContactDetails); } if (producerBusiness.Partnership != null) { XElement xmlParnership = new XElement(XmlNamespace.MemberRegistration + "partnership"); xmlProducerBusiness.Add(xmlParnership); XElement xmlPartnershipName = new XElement(XmlNamespace.MemberRegistration + "partnershipName"); xmlParnership.Add(xmlPartnershipName); xmlPartnershipName.Value = producerBusiness.Partnership.PartnershipName ?? string.Empty; XElement xmlPartnershipList = new XElement(XmlNamespace.MemberRegistration + "partnershipList"); xmlParnership.Add(xmlPartnershipList); foreach (string partner in producerBusiness.Partnership.PartnershipList) { XElement xmlPartner = new XElement(XmlNamespace.MemberRegistration + "partner"); xmlPartnershipList.Add(xmlPartner); xmlPartner.Value = partner ?? string.Empty; } XElement xmlPrincipalPlaceOfBusiness = new XElement(XmlNamespace.MemberRegistration + "principalPlaceOfBusiness"); xmlParnership.Add(xmlPrincipalPlaceOfBusiness); XElement xmlContactDetails = new XElement(XmlNamespace.MemberRegistration + "contactDetails"); xmlPrincipalPlaceOfBusiness.Add(xmlContactDetails); PopulateContactDetails(producerBusiness.Partnership.PrincipalPlaceOfBusiness, xmlContactDetails); } if (producerBusiness.Company != null) { XElement xmlCompany = new XElement(XmlNamespace.MemberRegistration + "company"); xmlProducerBusiness.Add(xmlCompany); XElement xmlCompanyName = new XElement(XmlNamespace.MemberRegistration + "companyName"); xmlCompany.Add(xmlCompanyName); xmlCompanyName.Value = producerBusiness.Company.CompanyName ?? string.Empty; XElement xmlCompanyNumber = new XElement(XmlNamespace.MemberRegistration + "companyNumber"); xmlCompany.Add(xmlCompanyNumber); xmlCompanyNumber.Value = producerBusiness.Company.CompanyNumber ?? string.Empty; XElement xmlRegisteredOffice = new XElement(XmlNamespace.MemberRegistration + "registeredOffice"); xmlCompany.Add(xmlRegisteredOffice); XElement xmlContactDetails = new XElement(XmlNamespace.MemberRegistration + "contactDetails"); xmlRegisteredOffice.Add(xmlContactDetails); PopulateContactDetails(producerBusiness.Company.RegisteredOffice, xmlContactDetails); } }
public override bool Equals(ProducerBusiness other) { return false; }
public static ProducerSubmission WithProducerBusiness(ProducerBusiness producerBusiness) { var builder = new ProducerBuilder(); builder.producerBusiness = producerBusiness; return builder.Build(); }
private Business CreateProducerBusiness(AddAddressBookEntry message) { return(ProducerBusiness.CreateProducerBusiness(message.Business.Name, message.Business.BusinessType, message.Business.RegistrationNumber, message.Business.OtherDescription)); }
public static ProducerBusiness CreateEmptyProducerBusiness() { return(ProducerBusiness.CreateProducerBusiness("test", BusinessType.SoleTrader, "test", null)); }
public async Task HandleAsync_ForPartnershipProducer_ReturnsPartnershipContactDetails_AndIsCompanyValueFalse() { // Arrange Scheme scheme = new Scheme(A.Dummy <Guid>()); MemberUpload memberUpload = new MemberUpload( A.Dummy <Guid>(), A.Dummy <string>(), A.Dummy <List <MemberUploadError> >(), A.Dummy <decimal>(), 2017, scheme, A.Dummy <string>(), A.Dummy <string>()); RegisteredProducer registeredProducer = new RegisteredProducer( "WEE/AA1111AA", 2017, scheme); var producerAddress = new ProducerAddress("PrimaryName", "SecondaryName", "Street", "Town", "Locality", "AdministrativeArea", new Country(A.Dummy <Guid>(), "TestCountry"), "PostCode"); var producerContact = new ProducerContact( "Title", "Forename", "Surname", "123456", "1235467", "12345678", "[email protected]", producerAddress); var producerBusiness = new ProducerBusiness( partnership: new Partnership("TestPartnership", producerContact, new List <Partner> { })); var producer = new ProducerSubmission( registeredProducer, memberUpload, producerBusiness, null, new DateTime(2015, 1, 1), 0, false, null, "Trading Name 1", EEEPlacedOnMarketBandType.Lessthan5TEEEplacedonmarket, SellingTechniqueType.Both, Domain.Obligation.ObligationType.Both, AnnualTurnOverBandType.Greaterthanonemillionpounds, new List <BrandName>(), new List <SICCode>(), A.Dummy <ChargeBandAmount>(), 0, A.Dummy <StatusType>()); IGetProducerDetailsDataAccess dataAccess = A.Fake <IGetProducerDetailsDataAccess>(); A.CallTo(() => dataAccess.Fetch(A <string> ._, A <int> ._)) .Returns(new List <ProducerSubmission> { producer }); IWeeeAuthorization authorization = A.Fake <IWeeeAuthorization>(); A.CallTo(() => authorization.CheckUserInRole(Roles.InternalAdmin)) .Returns(false); IMapper mapper = A.Fake <IMapper>(); GetProducerDetailsHandler handler = new GetProducerDetailsHandler(dataAccess, authorization, mapper); // Act var result = await handler.HandleAsync(A.Dummy <GetProducerDetails>()); // Assert Assert.NotNull(result); Assert.Single(result.Schemes); ProducerContactDetails businessContact = result.Schemes[0].ProducerBusinessContact; Assert.Equal("PrimaryName, SecondaryName, Street, Town, Locality, AdministrativeArea, PostCode, TestCountry", businessContact.Address); Assert.Equal("Title Forename Surname", businessContact.ContactName); Assert.Equal("123456", businessContact.Telephone); Assert.Equal("1235467", businessContact.Mobile); Assert.Equal("[email protected]", businessContact.Email); Assert.False(result.Schemes[0].IsCompany); }
public void Create_SoleTrader_NonNullRegistrationNumber_DoesNotSetToCustomValue() { var business = ProducerBusiness.CreateProducerBusiness(AnyString, BusinessType.SoleTrader, AnyString, null); Assert.Equal(NotApplicable, business.RegistrationNumber); }