Пример #1
0
        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
            }));
        }
Пример #2
0
        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
                }));
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }