public async Task AddIndividualCustomerEmailAddress(EditEmailAddressViewModel viewModel)
        {
            logger.LogInformation("AddIndividualCustomerEmailAddress called");

            logger.LogInformation("Getting customer for {AccountNumber}", viewModel.AccountNumber);
            var customer = await customerApiClient.GetCustomerAsync <ApiClients.CustomerApi.Models.GetCustomer.IndividualCustomer>(
                viewModel.AccountNumber
                );

            logger.LogInformation("Retrieved customer {@Customer}", customer);
            Guard.Against.Null(customer, nameof(customer));

            var customerToUpdate = mapper.Map <ApiClients.CustomerApi.Models.UpdateCustomer.IndividualCustomer>(customer);

            Guard.Against.Null(customerToUpdate, nameof(customerToUpdate));

            customerToUpdate.Person.EmailAddresses.Add(new ApiClients.CustomerApi.Models.UpdateCustomer.PersonEmailAddress
            {
                EmailAddress = viewModel.EmailAddress
            });

            logger.LogInformation("Updating customer {@Customer}", customer);
            await customerApiClient.UpdateCustomerAsync(viewModel.AccountNumber, customerToUpdate);

            logger.LogInformation("Customer updated successfully");
        }
        public async Task AddContactEmailAddress(EditEmailAddressViewModel viewModel)
        {
            logger.LogInformation("AddEmailAddress called");

            logger.LogInformation("Getting customer for {AccountNumber}", viewModel.AccountNumber);
            var customer = await customerApiClient.GetCustomerAsync <ApiClients.CustomerApi.Models.GetCustomer.StoreCustomer>(
                viewModel.AccountNumber
                );

            logger.LogInformation("Retrieved customer {@Customer}", customer);
            Guard.Against.Null(customer, nameof(customer));

            var customerToUpdate = mapper.Map <ApiClients.CustomerApi.Models.UpdateCustomer.StoreCustomer>(customer);

            Guard.Against.Null(customerToUpdate, nameof(customerToUpdate));

            var contact = customerToUpdate.Contacts.FirstOrDefault(c => c.ContactPerson.FullName() == viewModel.PersonName);

            Guard.Against.Null(contact, nameof(contact));

            contact.ContactPerson.EmailAddresses.Add(new ApiClients.CustomerApi.Models.UpdateCustomer.PersonEmailAddress
            {
                EmailAddress = viewModel.EmailAddress
            });

            logger.LogInformation("Updating customer {@Customer}", customer);
            await customerApiClient.UpdateCustomerAsync(viewModel.AccountNumber, customerToUpdate);

            logger.LogInformation("Customer updated successfully");
        }
Beispiel #3
0
            public void AddContactEmailAddressGet_ReturnsViewModel(
                [Frozen] Mock <ICustomerService> customerService,
                EditEmailAddressViewModel viewModel,
                [Greedy] CustomerController sut
                )
            {
                //Arrange
                customerService.Setup(x => x.AddEmailAddress(
                                          It.IsAny <string>(), It.IsAny <string>()
                                          ))
                .Returns(viewModel);

                //Act
                var actionResult = sut.AddContactEmailAddress(
                    viewModel.AccountNumber,
                    viewModel.PersonName
                    );

                //Assert
                var viewResult = actionResult.Should().BeAssignableTo <ViewResult>().Subject;

                viewResult.Model.Should().Be(viewModel);

                customerService.Verify(x => x.AddEmailAddress(
                                           It.IsAny <string>(), It.IsAny <string>())
                                       );
            }
        public async Task <IActionResult> AddContactEmailAddress(EditEmailAddressViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                await customerService.AddContactEmailAddress(viewModel);

                return(RedirectToAction("Detail", new { viewModel.AccountNumber }));
            }

            return(View(viewModel));
        }
        public EditEmailAddressViewModel AddEmailAddress(string accountNumber, string personName)
        {
            logger.LogInformation("AddEmailAddress called");

            var vm = new EditEmailAddressViewModel
            {
                IsNewEmailAddress = true,
                AccountNumber     = accountNumber,
                PersonName        = personName
            };

            return(vm);
        }
Beispiel #6
0
        public async Task AddContactEmailAddress_OK()
        {
            //Arrange
            var mockLogger           = new Mock <ILogger <CustomerService> >();
            var mockCustomerApi      = new Mock <customerApi.ICustomerApiClient>();
            var mockReferenceDataApi = new Mock <referenceDataApi.IReferenceDataApiClient>();
            var mockSalesPersonApi   = new Mock <salesPersonApi.ISalesPersonApiClient>();

            mockCustomerApi
            .Setup(x => x.GetCustomerAsync <customerApi.Models.GetCustomer.StoreCustomer>(It.IsAny <string>()))
            .ReturnsAsync(new StoreCustomerBuilder()
                          .WithTestValues()
                          .Build()
                          );

            var svc = new CustomerService(
                mockLogger.Object,
                Mapper.CreateMapper(),
                mockCustomerApi.Object,
                mockReferenceDataApi.Object,
                mockSalesPersonApi.Object
                );

            //Act
            var viewModel = new EditEmailAddressViewModel
            {
                IsNewEmailAddress = true,
                AccountNumber     = "AW00000001",
                PersonName        = "Orlando N. Gee",
                EmailAddress      = "*****@*****.**"
            };
            await svc.AddContactEmailAddress(viewModel);

            //Assert
            mockCustomerApi.Verify(x => x.UpdateCustomerAsync(
                                       It.IsAny <string>(),
                                       It.IsAny <customerApi.Models.UpdateCustomer.Customer>()
                                       ));
        }
Beispiel #7
0
            public async Task AddContactEmailAddressPost_InvalidModelState_ReturnsViewModel(
                [Frozen] Mock <ICustomerService> customerService,
                EditEmailAddressViewModel viewModel,
                [Greedy] CustomerController sut
                )
            {
                //Arrange
                customerService.Setup(x => x.AddEmailAddress(
                                          It.IsAny <string>(), It.IsAny <string>()
                                          ))
                .Returns(viewModel);

                sut.ModelState.AddModelError("AccountNumber", viewModel.AccountNumber);

                //Act
                var actionResult = await sut.AddContactEmailAddress(viewModel);

                //Assert
                var viewResult = actionResult.Should().BeAssignableTo <ViewResult>().Subject;

                viewResult.Model.Should().Be(viewModel);
            }