public async Task <ActionResult> ConfirmRemoval(Guid registeredProducerId) { await SetBreadcrumb(); ProducerDetailsScheme producerDetailsScheme = await FetchProducerDetailsScheme(registeredProducerId); if (!producerDetailsScheme.CanRemoveProducer) { return(new HttpForbiddenResult()); } return(View(new ConfirmRemovalViewModel { Producer = producerDetailsScheme })); }
public async Task <ActionResult> ConfirmRemoval(Guid registeredProducerId, ConfirmRemovalViewModel model) { await SetBreadcrumb(); ProducerDetailsScheme producerDetailsScheme = await FetchProducerDetailsScheme(registeredProducerId); if (!ModelState.IsValid) { return(View(new ConfirmRemovalViewModel { Producer = producerDetailsScheme })); } if (model.SelectedValue == "Yes") { RemoveProducerResult result; using (IWeeeClient client = apiClient()) { result = await client.SendAsync(User.GetAccessToken(), new RemoveProducer(registeredProducerId)); } if (result.InvalidateProducerSearchCache) { await cache.InvalidateProducerSearch(); } return(RedirectToAction("Removed", new { producerDetailsScheme.RegistrationNumber, producerDetailsScheme.ComplianceYear, producerDetailsScheme.SchemeName })); } else { return(RedirectToAction("Details", new { producerDetailsScheme.RegistrationNumber })); } }
public async void GetConfirmRemoval_CallsApiForSpecifiedRegisteredProducer_AndPopulatesViewModel() { // Arrange Guid registeredProducerId = new Guid("9F253FE4-B644-4EA1-B58E-19C735512449"); ProducerDetailsScheme producerDetailsScheme = new ProducerDetailsScheme { CanRemoveProducer = true }; IWeeeClient weeeClient = A.Fake <IWeeeClient>(); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetProducerDetailsByRegisteredProducerId> ._)) .WhenArgumentsMatch(a => a.Get <GetProducerDetailsByRegisteredProducerId>("request").RegisteredProducerId == registeredProducerId) .Returns(producerDetailsScheme); ProducersController controller = new ProducersController( A.Dummy <BreadcrumbService>(), A.Dummy <ISearcher <ProducerSearchResult> >(), () => weeeClient, A.Dummy <IWeeeCache>(), configurationService); // Act ActionResult result = await controller.ConfirmRemoval(registeredProducerId); // Assert ViewResult viewResult = result as ViewResult; Assert.NotNull(viewResult); ConfirmRemovalViewModel viewModel = viewResult.Model as ConfirmRemovalViewModel; Assert.NotNull(viewModel); Assert.Equal(producerDetailsScheme, viewModel.Producer); }
public async Task <ProducerDetails> HandleAsync(Requests.Admin.GetProducerDetails request) { authorization.EnsureCanAccessInternalArea(); List <ProducerSubmission> producers = await dataAccess.Fetch(request.RegistrationNumber, request.ComplianceYear); if (producers.Count == 0) { string message = string.Format( "No producer has been registered with the registration number \"{0}\" in the {1} compliance year.", request.RegistrationNumber, request.ComplianceYear); throw new ArgumentException(message); } ProducerDetails producerDetails = new ProducerDetails(); producerDetails.CanRemoveProducer = authorization.CheckUserInRole(Roles.InternalAdmin); producerDetails.Schemes = new List <ProducerDetailsScheme>(); var schemeGroups = producers .GroupBy(p => new { p.MemberUpload.Scheme.Id, p.MemberUpload.Scheme.SchemeName }) .OrderBy(p => p.Key.SchemeName); foreach (var schemeGroup in schemeGroups) { DateTime registrationDate = schemeGroup .OrderBy(p => p.UpdatedDate) .First() .UpdatedDate; ProducerSubmission latestDetails = schemeGroup .OrderBy(p => p.UpdatedDate) .Last(); string companyNumber = null; if (latestDetails.ProducerBusiness.CompanyDetails != null) { companyNumber = latestDetails.ProducerBusiness.CompanyDetails.CompanyNumber; } var isAuthorisedRepresentative = "No"; if (latestDetails.AuthorisedRepresentativeId != null && latestDetails.AuthorisedRepresentative.OverseasContactId != null && latestDetails.AuthorisedRepresentative.OverseasContact != null && !string.IsNullOrEmpty(latestDetails.AuthorisedRepresentative.OverseasContact.Email)) { isAuthorisedRepresentative = "Yes"; } ProducerContact producerBusinessContact = null; bool isCompany = false; if (latestDetails.ProducerBusiness.CompanyDetails != null) { producerBusinessContact = latestDetails.ProducerBusiness.CompanyDetails.RegisteredOfficeContact; isCompany = true; } else if (latestDetails.ProducerBusiness.Partnership != null) { producerBusinessContact = latestDetails.ProducerBusiness.Partnership.PrincipalPlaceOfBusiness; } else { throw new MissingFieldException( string.Format("No producer business details could be found for producer:{0}", latestDetails.Id)); } ProducerContactDetails producerBusinessContactDetails = new ProducerContactDetails { ContactName = producerBusinessContact.ContactName, Email = producerBusinessContact.Email, Mobile = producerBusinessContact.Mobile, Telephone = producerBusinessContact.Telephone, Address = producerBusinessContact.Address.ToString() }; ProducerDetailsScheme producerSchemeDetails = new ProducerDetailsScheme() { RegisteredProducerId = latestDetails.RegisteredProducer.Id, SchemeName = schemeGroup.Key.SchemeName, ProducerName = latestDetails.OrganisationName, TradingName = latestDetails.TradingName, RegistrationDate = registrationDate, CompanyNumber = companyNumber, ObligationType = (ObligationType)latestDetails.ObligationType, ChargeBandType = (ChargeBandType)latestDetails.ChargeBandAmount.ChargeBand, CeasedToExist = latestDetails.CeaseToExist, IsAuthorisedRepresentative = isAuthorisedRepresentative, ProducerBusinessContact = producerBusinessContactDetails, IsCompany = isCompany, ProducerEeeDetails = mapper.Map <IEnumerable <ProducerEeeByQuarter>, ProducerEeeDetails>( (await dataAccess.EeeOutputBySchemeAndComplianceYear(request.RegistrationNumber, request.ComplianceYear, schemeGroup.Key.Id))) }; producerDetails.Schemes.Add(producerSchemeDetails); } return(producerDetails); }
public async Task HandleAsync_HappyPath_ReturnsProducerDetailsSchemeObjectWithPerfectValue() { // 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 producer = new ProducerSubmission( registeredProducer, memberUpload, new EA.Weee.Domain.Producer.ProducerBusiness( new Company("CompanyName", "RegisteredNo", new ProducerContact(A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), new ProducerAddress(A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>(), new Country(Guid.NewGuid(), A.Dummy <string>()), A.Dummy <string>())))), null, new DateTime(2015, 1, 1), 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>()); registeredProducer.SetCurrentSubmission(producer); registeredProducer.Scheme.UpdateScheme("SchemeName", "WEE/FA9999KE/SCH", "test", ObligationType.B2B, Guid.NewGuid()); IGetProducerDetailsByRegisteredProducerIdDataAccess dataAccess = A.Fake <IGetProducerDetailsByRegisteredProducerIdDataAccess>(); A.CallTo(() => dataAccess.Fetch(registeredProducer.Id)) .Returns(registeredProducer); IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights(); GetProducerDetailsByRegisteredProducerIdHandler handler = new GetProducerDetailsByRegisteredProducerIdHandler(dataAccess, authorization); Requests.Admin.GetProducerDetailsByRegisteredProducerId request = new Requests.Admin.GetProducerDetailsByRegisteredProducerId(registeredProducer.Id); // Act ProducerDetailsScheme result = await handler.HandleAsync(request); // Assert Assert.Equal(result.ComplianceYear, registeredProducer.ComplianceYear); Assert.Equal(result.ProducerName, registeredProducer.CurrentSubmission.OrganisationName); Assert.Equal(result.SchemeName, registeredProducer.Scheme.SchemeName); Assert.Equal(result.RegistrationNumber, registeredProducer.ProducerRegistrationNumber); }
public async Task HandleAsync_WithDataReturnWithNullEee_SetsHasSubmittedEEEToFalse() { // Arrange IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights(); Organisation organisation = Organisation.CreateSoleTrader("Trading Name"); Scheme scheme = new Scheme(organisation); RegisteredProducer registeredProducer = new RegisteredProducer("WEE/AA1111AA", 2016, scheme); Guid registeredProducerId = new Guid("75B6B4E7-BA92-477D-A6CA-C43C8C0E9823"); typeof(Entity).GetProperty("Id").SetValue(registeredProducer, registeredProducerId); MemberUpload memberUpload = new MemberUpload( A.Dummy <Guid>(), "data", new List <MemberUploadError>(), 0, 2016, scheme, "file.xml", "UserID"); ProducerSubmission producerSubmission = new ProducerSubmission( registeredProducer, memberUpload, A.Dummy <ProducerBusiness>(), A.Dummy <AuthorisedRepresentative>(), A.Dummy <DateTime>(), A.Dummy <decimal?>(), A.Dummy <bool>(), A.Dummy <DateTime?>(), A.Dummy <string>(), A.Dummy <EEEPlacedOnMarketBandType>(), A.Dummy <SellingTechniqueType>(), A.Dummy <ObligationType>(), A.Dummy <AnnualTurnOverBandType>(), A.Dummy <List <BrandName> >(), A.Dummy <List <SICCode> >(), A.Dummy <ChargeBandAmount>(), A.Dummy <decimal>(), A.Dummy <StatusType>()); registeredProducer.SetCurrentSubmission(producerSubmission); DataReturn dataReturn = new DataReturn(scheme, new Quarter(2016, QuarterType.Q4)); DataReturnVersion dataReturnVersion = new DataReturnVersion(dataReturn, new WeeeCollectedReturnVersion(), new WeeeDeliveredReturnVersion(), null); dataReturnVersion.Submit("UserID"); IGetProducerDetailsByRegisteredProducerIdDataAccess dataAccess = A.Fake <IGetProducerDetailsByRegisteredProducerIdDataAccess>(); A.CallTo(() => dataAccess.Fetch(registeredProducerId)).Returns(registeredProducer); A.CallTo(() => dataAccess.FetchDataReturns(scheme, 2016)).Returns(new List <DataReturn>() { dataReturn }); GetProducerDetailsByRegisteredProducerIdHandler handler = new GetProducerDetailsByRegisteredProducerIdHandler(dataAccess, authorization); // Act GetProducerDetailsByRegisteredProducerId request = new GetProducerDetailsByRegisteredProducerId(registeredProducerId); ProducerDetailsScheme result = await handler.HandleAsync(request); // Assert Assert.Equal(false, result.HasSubmittedEEE); }