Exemplo n.º 1
0
        public async Task IsAddedToAddressBook_AddedToAddressBook()
        {
            var testNotification = GetTestImportNotification(true);

            A.CallTo(() => draftImportNotificationRepository.Get(notificationId)).Returns(testNotification);

            handler = new AddImportAddressBookEntryHandler(context, userContext, addressBookRepository, draftImportNotificationRepository);

            var result = await handler.HandleAsync(message);

            Assert.True(result);
            A.CallTo(() => addressBookRepository.Update(addressBook)).MustHaveHappened();
        }
        public async Task <bool> HandleAsync(CompleteDraftImportNotification message)
        {
            var draft = await draftImportNotificationRepository.Get(message.ImportNotificationId);

            var assessment =
                await importNotificationAssessmentRepository.GetByNotification(message.ImportNotificationId);

            var result = await importNotificationValidator.ValidateAsync(draft);

            if (result.IsValid && assessment.Status == ImportNotificationStatus.NotificationReceived)
            {
                var notification =
                    await importNotificationRepository.Get(message.ImportNotificationId);

                var exporter           = mapper.Map <Exporter>(draft.Exporter);
                var facilityCollection = mapper.Map <FacilityCollection>(draft.Facilities, draft.Preconsented);
                var importer           = mapper.Map <Importer>(draft.Importer);
                var producer           = mapper.Map <Producer>(draft.Producer);
                var shipment           = mapper.Map <Shipment>(draft.Shipment, draft.Preconsented);

                var transportRoute = new Domain.ImportNotification.TransportRoute(message.ImportNotificationId,
                                                                                  mapper.Map <StateOfExport>(draft.StateOfExport),
                                                                                  mapper.Map <StateOfImport>(draft.StateOfImport));

                if (!draft.TransitStates.HasNoTransitStates)
                {
                    transportRoute.SetTransitStates(
                        new TransitStateList(draft.TransitStates.TransitStates.Select(t => mapper.Map <TransitState>(t))));
                }

                var wasteOperation = mapper.Map <WasteOperation>(draft.WasteOperation, notification);
                var wasteType      = mapper.Map <Domain.ImportNotification.WasteType>(draft.WasteType, draft.ChemicalComposition.Composition);

                exporterRepository.Add(exporter);
                facilityRepository.Add(facilityCollection);
                importerRepository.Add(importer);
                producerRepository.Add(producer);
                shipmentRepository.Add(shipment);
                transportRouteRepository.Add(transportRoute);
                wasteOperationRepository.Add(wasteOperation);
                wasteTypeRepository.Add(wasteType);

                assessment.Submit();

                await context.SaveChangesAsync();
            }

            return(result.IsValid);
        }
Exemplo n.º 3
0
        public async Task <bool> HandleAsync(AddImportAddressBookEntry message)
        {
            var draft = await draftImportNotificationRepository.Get(message.ImportNotificationId);

            int addressesToUpdate = AddressesToUpdate(draft);

            if (addressesToUpdate == 0)
            {
                return(false);
            }

            var types = Enum.GetValues(typeof(AddressRecordType)).Cast <AddressRecordType>();

            foreach (var type in types)
            {
                await AddToAddressBookForType(type, draft);
            }

            return(true);
        }
Exemplo n.º 4
0
        public async Task <IEnumerable <ValidationResults> > HandleAsync(ValidateImportNotification message)
        {
            var notificationDraft = await repository.Get(message.DraftImportNotificationId);

            var result = new List <ValidationResults>();

            result.Add(await validator.ValidateAsync(notificationDraft.Preconsented));
            result.Add(await validator.ValidateAsync(notificationDraft.Exporter));
            result.Add(await validator.ValidateAsync(notificationDraft.Importer));
            result.Add(await validator.ValidateAsync(notificationDraft.Producer));
            result.Add(await validator.ValidateAsync(notificationDraft.Facilities));
            result.Add(await validator.ValidateAsync(notificationDraft.Shipment));
            result.Add(await validator.ValidateAsync(notificationDraft.WasteOperation));
            result.Add(await validator.ValidateAsync(notificationDraft.ChemicalComposition));
            result.Add(await validator.ValidateAsync(notificationDraft.WasteType));
            result.Add(await validator.ValidateAsync(notificationDraft.StateOfExport));
            result.Add(await validator.ValidateAsync(notificationDraft.StateOfImport));
            result.Add(await validator.ValidateAsync(notificationDraft.TransitStates));

            return(result);
        }
        public async Task <ImportNotificationSummary> HandleAsync(GetSummary message)
        {
            var status = await assessmentRepository.GetStatusByNotification(message.Id);

            if (status == ImportNotificationStatus.NotificationReceived)
            {
                var data = await draftRepository.Get(message.Id);

                var notification = await importNotificationRepository.Get(message.Id);

                countries = (await countryRepository.GetAll()).ToArray();

                var transportRoute = await transportRouteSummary.GetTransportRoute(message.Id, countries);

                return(new ImportNotificationSummary
                {
                    Id = notification.Id,
                    Type = notification.NotificationType,
                    Number = notification.NotificationNumber,
                    Status = status,
                    Exporter = GetExporter(data),
                    Facilities = GetFacilities(data),
                    Importer = GetImporter(data),
                    Producer = GetProducer(data),
                    IntendedShipment = GetIntendedShipment(data),
                    StateOfExport = transportRoute.StateOfExport,
                    StateOfImport = transportRoute.StateOfImport,
                    TransitStates = transportRoute.TransitStates,
                    HasNoTransitStates = transportRoute.HasNoTransitStates,
                    WasteOperation = GetWasteOperation(data),
                    WasteType = await wasteTypeSummary.GetWasteType(message.Id),
                    AreFacilitiesPreconsented = GetFacilityPreconsent(data),
                    Composition = GetChemicalComposition(data)
                });
            }

            return(mapper.Map <ImportNotificationSummary>(await summaryRepository.Get(message.Id)));
        }