Ejemplo n.º 1
0
        public async Task CreateBusinessPartnerMobilePhone_ValidUser_ContactInfoRetrieved()
        {
            // Arrange
            var user          = TestHelper.PaDev1;
            var loginResponse = await AuthClient.GetJwtToken(user.Username, "Start@123");

            user.JwtEncodedString = loginResponse.Data.JwtAccessToken;
            user.JwtEncodedString.ShouldNotBeNullOrWhiteSpace();
            var phone   = user.Phones.First(p => p.Type == PhoneType.Cell);
            var request = new CreateAddressIndependantPhoneRequest
            {
                BusinessPartnerId = user.BPNumber,
                PhoneNumber       = phone.Number,
                Extension         = phone.Extension ?? "",
                IsHome            = true,
                IsStandard        = true,
                PhoneType         = AddressIndependantContactInfoEnum.AccountAddressIndependentMobilePhones
            };

            if (request.BusinessPartnerId == user.BPNumber)
            {
                Assert.Fail("Bypass by debugging in order to avoid posting excess rows on server");
            }

            var contactInfoResponse = McfClient.GetBusinessPartnerContactInfo(user.JwtEncodedString, user.BPNumber.ToString());

            contactInfoResponse.Result.ShouldNotBeNull();
            var phones = contactInfoResponse.Result.AccountAddressIndependentPhones.Results.ToList();

            // Act
            var response = McfClient.CreateBusinessPartnerMobilePhone(user.JwtEncodedString, request);

            // Assert
            response.Result.ShouldNotBeNull();
            response.Result.Metadata.Id.ShouldBe("https://10.41.53.54:8001/sap/opu/odata/sap/ZERP_UTILITIES_UMC_PSE_SRV/AccountAddressIndependentPhones(" +
                                                 $"AccountID=\'{user.BPNumber}\',SequenceNo=\'{phones.Count:D3}\')");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Saves the cell phone number at the BP level
        /// </summary>
        /// <param name="jwt">Java web token for authentication</param>
        /// <param name="phone">Customer's cell phone</param>
        /// <param name="bpId">Business partner ID</param>
        public async Task PutPhoneNumberAsync(string jwt, Phone phone, long bpId)
        {
            _logger.LogInformation($"PutEmailAddressAsync({nameof(phone)}: {phone.ToJson()}," +
                                   $"{nameof(bpId)}: {bpId})");

            // Call MCF to update SAP first.  If no error, then update Cassandra.
            McfResponse <GetPhoneResponse>            response        = null;
            McfResponse <GetAccountAddressesResponse> addressResponse = null;

            if (phone.Type == PhoneType.Cell)
            {
                // Prepare MCF request
                var mcfRequest = new CreateAddressIndependantPhoneRequest
                {
                    BusinessPartnerId = bpId,
                    PhoneNumber       = phone.Number,
                    Extension         = phone.Extension ?? "",
                    IsHome            = true,
                    IsStandard        = true,
                    PhoneType         = AddressIndependantContactInfoEnum.AccountAddressIndependentMobilePhones
                };

                // Save phone via MCF
                response = _mcfClient.CreateBusinessPartnerMobilePhone(jwt, mcfRequest);
            }
            else
            {
                addressResponse = _mcfClient.GetStandardMailingAddress(jwt, bpId);
                if (addressResponse.Error == null)
                {
                    // Prepare MCF request
                    var mcfDepRequest = new CreateAddressDependantPhoneRequest
                    {
                        BusinessPartnerId = bpId,
                        AddressID         = addressResponse.Result.AddressID.ToString(),
                        PhoneNumber       = phone.Number,
                        Extension         = phone.Extension ?? "",
                        IsHome            = true,
                        IsStandard        = true,
                        PhoneType         = "1"
                    };

                    // Save phone via MCF
                    response = _mcfClient.CreateAddressDependantPhone(jwt, mcfDepRequest);
                }
            }

            if (response?.Error != null)
            {
                _logger.LogError($"Failure saving phone number to SAP: {response.Error.ToJson()}");
                throw new Exception($"Failure saving phone number to SAP: {response.Error.Message.Value}");
            }

            if (addressResponse?.Error != null)
            {
                _logger.LogError($"Failure getting standard mail address: {addressResponse.Error.ToJson()}");
                throw new Exception($"Failure getting standard mail address: {addressResponse.Error.Message.Value}");
            }

            // This returns an empty set and the IsFullyFetched property is true.
            // There is apparently no way to determine if any rows were updated or not,
            // so unless an exception occurs, NoContent will always be returned.
            await _customerRepository.UpdateCustomerPhoneNumber(phone, bpId);

            _logger.LogInformation($"Success saving phone number to SAP: {response?.Result.ToJson()}");
        }