public static ProducerSubmission WithEEEPlacedOnMarketBandType(EEEPlacedOnMarketBandType eeePlacedOnMarketBandType) { var builder = new ProducerBuilder(); builder.eeePlacedOnMarketBandType = eeePlacedOnMarketBandType; return(builder.Build()); }
public ProducerSubmission( RegisteredProducer registeredProducer, MemberUpload memberUpload, ProducerBusiness producerBusiness, AuthorisedRepresentative authorisedRepresentative, DateTime updatedDate, decimal?annualTurnover, bool vatRegistered, DateTime?ceaseToExist, string tradingName, EEEPlacedOnMarketBandType eeePlacedOnMarketBandType, SellingTechniqueType sellingTechniqueType, ObligationType obligationType, AnnualTurnOverBandType annualTurnOverBandType, List <BrandName> brandnames, List <SICCode> codes, ChargeBandAmount chargeBandAmount, decimal chargeThisUpdate, StatusType status) { Guard.ArgumentNotNull(() => registeredProducer, registeredProducer); Guard.ArgumentNotNull(() => memberUpload, memberUpload); Guard.ArgumentNotNull(() => producerBusiness, producerBusiness); Guard.ArgumentNotNull(() => chargeBandAmount, chargeBandAmount); if (registeredProducer.Scheme.Id != memberUpload.Scheme.Id) { string errorMessage = "A producer submission can only be associated " + "with a registered producer in the same scheme."; throw new InvalidOperationException(errorMessage); } if (registeredProducer.ComplianceYear != memberUpload.ComplianceYear) { string errorMessage = "A producer submission can only be associated " + "with a registered producer in the same compliance year."; throw new InvalidOperationException(errorMessage); } RegisteredProducer = registeredProducer; ProducerBusiness = producerBusiness; AuthorisedRepresentative = authorisedRepresentative; UpdatedDate = updatedDate; AnnualTurnover = annualTurnover; VATRegistered = vatRegistered; CeaseToExist = ceaseToExist; TradingName = tradingName; EEEPlacedOnMarketBandType = eeePlacedOnMarketBandType.Value; SellingTechniqueType = sellingTechniqueType.Value; ObligationType = obligationType; AnnualTurnOverBandType = annualTurnOverBandType.Value; BrandNames = brandnames; SICCodes = codes; MemberUpload = memberUpload; ChargeBandAmount = chargeBandAmount; ChargeThisUpdate = chargeThisUpdate; StatusType = status.Value; }
public static ProducerSubmission WithEEEPlacedOnMarketBandType(EEEPlacedOnMarketBandType eeePlacedOnMarketBandType) { var builder = new ProducerBuilder(); builder.eeePlacedOnMarketBandType = eeePlacedOnMarketBandType; return builder.Build(); }
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); }