示例#1
0
        private CreateBusinesspartnerMcfRequest GetBusinessPartnerMcfRequest(CreateBusinesspartnerRequest request, McfAddressinfo addressInfo)
        {
            var businessMcfRequest = new CreateBusinesspartnerMcfRequest()
            {
                Channel         = request.Channel,
                FirstName       = request.FirstName,
                MiddleName      = request.MiddleName,
                LastName        = request.LastName,
                EMail           = request.Email,
                OrgName         = request.OrgName,
                CorrLanguage    = coreLanguage,
                PartnerCategory = GetPartnerCategory(request.PartnerCategory),
                PartnerRole     = GetPartnerRole(request.PartnerCategory),
                Phone           = request?.Phone?.Number,
                PhoneType       = GetPhoneType(request?.Phone),
                Extension       = request?.Phone?.Extension,
                AddressType     = GetAddressTye(addressInfo.AddressType),
                CareOf          = addressInfo.COName,
                Street          = addressInfo.Street,
                HouseNum        = addressInfo.HouseNo,
                City            = addressInfo.City,
                PostalCode      = addressInfo.PostalCode,
                PoBox           = addressInfo.POBox,
                State           = addressInfo.Region,
                Country         = addressInfo.CountryID
            };

            return(businessMcfRequest);
        }
示例#2
0
        /// <summary>
        /// Calls Addres APi to get MCf address and then calls MCF to create Business partner
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <CreateBusinesspartnerResponse> CreateBusinessPartner(CreateBusinesspartnerRequest request)
        {
            _logger.LogInformation($"Creating Business Partner: CreateBusinessPartner({nameof(request)} : {request})");

            try
            {
                var address         = request.Address;
                var addressResponse = await _addressApi.ToMcfMailingAddressAsync(address);

                var createBpresponse = ValidateAddress(addressResponse);

                if (createBpresponse != null)
                {
                    return(createBpresponse);
                }

                var addressInfo = addressResponse?.Data;
                var businessPartnerMcfrequest = GetBusinessPartnerMcfRequest(request, addressInfo);
                var mcfResp = await _mcfClient.CreateBusinessPartner(businessPartnerMcfrequest);

                var resp = new CreateBusinesspartnerResponse()
                {
                    BpId = mcfResp.PartnerId
                };

                return(resp);
            }

            catch (Exception ex)
            {
                _logger.LogError(ex, "Failed to create Buiness Partner");
                throw;
            }
        }
示例#3
0
        public async Task <IActionResult> CreateBusinesspartner([FromBody] CreateBusinesspartnerRequest createBusinesspartnerRequest)
        {
            IActionResult result;

            _logger.LogInformation($"CreateBusinesspartner({nameof(CreateBusinesspartnerRequest)}: {createBusinesspartnerRequest.ToJson()})");

            try
            {
                var resp = await _moveInLogic.CreateBusinessPartner(createBusinesspartnerRequest);

                if (resp.HttpStatusCode == System.Net.HttpStatusCode.BadRequest)
                {
                    return(BadRequest());
                }
                var createBp = new BusinessPartnerResponse()
                {
                    BpId = resp.BpId
                };
                result = Ok(createBp);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Unable to create BP for a customer", ex.Message);

                result = ex.ToActionResult();
            }

            return(result);
        }
示例#4
0
 private bool UpdateCustomerDetailsInCassandra(CreateBusinesspartnerRequest createBusinessPartnerData, long bpID, bool update)
 {
     try
     {
         _customerRespository.UpdateCassandraCustomerInformation(bpID, createBusinessPartnerData);
         return(true);
     }
     catch (Exception ex)
     {
         _logger.LogError($"Cassandra update was not successful for bp id :{bpID.ToString()} {ex.Message}");
         return(false);
     }
 }
示例#5
0
        private BpSearchRequest MapToBpSearchrequest(CreateBusinesspartnerRequest authorizedContactRequest)
        {
            var bpSearch = new BpSearchRequest()
            {
                Email      = authorizedContactRequest.Email,
                FirstName  = authorizedContactRequest.FirstName,
                MiddleName = authorizedContactRequest.MiddleName,
                LastName   = authorizedContactRequest.LastName,
                ServiceZip = authorizedContactRequest.Address.PostalCode,
                Phone      = authorizedContactRequest.Phone?.Number
            };

            return(bpSearch);
        }
示例#6
0
        /// <summary>
        /// Updates the customer information at the BP level
        /// </summary>
        /// <param name="emailAddress">email address</param>
        /// <param name="bpId">bpID</param>
        public bool UpdateCassandraCustomerInformation(long bpId, CreateBusinesspartnerRequest createBusinessPartnerData)
        {
            try
            {
                _logger.LogInformation($"UpdateNewCustomerInformation({nameof(CreateBusinesspartnerRequest)}: {createBusinessPartnerData.ToJson()}," +
                                       $"{nameof(bpId)}: {bpId})");
                // populate customer data
                var session = _session.Session();

                var statement = session.Prepare(
                    "INSERT INTO customer(bp_id,employer_name,first_name, full_name, last_name, middle_name, refresh_time) " +
                    "VALUES(?,?,?,?,?,?,?);");
                string         fullName = createBusinessPartnerData.FirstName + " " + createBusinessPartnerData.MiddleName + " " + createBusinessPartnerData.LastName;
                DateTimeOffset dtoffset = DateTimeOffset.Now;
                session.ExecuteAsync(statement.Bind(bpId, createBusinessPartnerData.OrgName, createBusinessPartnerData.FirstName, fullName, createBusinessPartnerData.LastName, createBusinessPartnerData.MiddleName, dtoffset));

                // populate customer contact data
                Dictionary <string, PhoneDefinedType> Phones = new Dictionary <string, PhoneDefinedType>();
                Phones.Add(createBusinessPartnerData.Phone.Type.ToString(), new PhoneDefinedType()
                {
                    Number = createBusinessPartnerData.Phone.Number, Extension = createBusinessPartnerData.Phone.Extension
                });
                Phones.Add(createBusinessPartnerData.MobilePhone.Type.ToString(), new PhoneDefinedType()
                {
                    Number = createBusinessPartnerData.MobilePhone.Number, Extension = createBusinessPartnerData.MobilePhone.Extension
                });
                AddressDefinedType newCustomerStreetAddress = new AddressDefinedType()
                {
                    AddressLine1 = createBusinessPartnerData.Address.AddressLine1,
                    AddressLine2 = createBusinessPartnerData.Address.AddressLine2,
                    City         = createBusinessPartnerData.Address.City,
                    State        = createBusinessPartnerData.Address.State,
                    PostalCode   = createBusinessPartnerData.Address.PostalCode,
                    Country      = createBusinessPartnerData.Address.Country,
                    CareOf       = createBusinessPartnerData.Address.CareOf
                };
                statement = session.Prepare(
                    "INSERT INTO customer_contact(bp_id,email,mailing_address,phones) " +
                    "VALUES(?,?,?,?);");
                session.ExecuteAsync(statement.Bind(bpId, createBusinessPartnerData.Email, newCustomerStreetAddress, Phones));
                return(true);
            }
            catch (Exception ex)
            {
                _logger.LogError($"Database update was not successful for bp id : {bpId.ToString()} {ex.Message}");
                return(false);
            }
        }
示例#7
0
        /// <summary>
        /// Gets bp ID and acct status while validating acct ID and fullName.
        /// </summary>
        /// <param name="bpID">The business partner id to sync information for in the Cassandra database.</param>
        /// <returns></returns>
        public async Task <bool> SyncCustomerByBpId(long bpID)
        {
            // Get customer for this bp
            CustomerEntity customerEntity = await _customerRepository.GetCustomerByBusinessPartnerId(bpID);

            try
            {
                // getting the latest customer and customer contact detail information from SAP
                McfResponse <BusinessPartnerContactInfoResponse> businessPartnerContactInfo = _mcfClient.GetBusinessPartnerContactInfo(String.Empty, bpID.ToString());
                McfResponse <GetAccountAddressesResponse>        addressResponse            = _mcfClient.GetStandardMailingAddress(String.Empty, bpID);
                McfAddressinfo mcfAddressInfo = addressResponse.Result.AddressInfo;

                // populating object with customer and customer contact information to send to function to update Cassandra data
                CreateBusinesspartnerRequest newCassandraRecordData = new CreateBusinesspartnerRequest();
                newCassandraRecordData.Address     = new AddressDefinedTypeRequest();
                newCassandraRecordData.Phone       = new Phone();
                newCassandraRecordData.MobilePhone = new Phone();
                // populating name and address information
                if (mcfAddressInfo.POBox.Length > 0)
                {
                    newCassandraRecordData.Address.AddressLine1 = $"P. O. Box {mcfAddressInfo.POBox}";
                }
                else
                {
                    newCassandraRecordData.Address.AddressLine1 = $"{mcfAddressInfo.HouseNo}  {mcfAddressInfo.Street}";
                }
                newCassandraRecordData.FirstName = businessPartnerContactInfo.Result.FirstName;
                newCassandraRecordData.LastName  = businessPartnerContactInfo.Result.LastName;
                // populating phone contact information
                GetPhoneResponse phone = new GetPhoneResponse();
                if (businessPartnerContactInfo.Result.AccountAddressIndependentPhones.Results.Count() > 0)
                {
                    phone = businessPartnerContactInfo.Result.AccountAddressIndependentPhones.Results.Last();
                    newCassandraRecordData.Phone.Number    = phone.PhoneNo;
                    newCassandraRecordData.Phone.Type      = PhoneType.Work;
                    newCassandraRecordData.Phone.Extension = phone.Extension;
                }
                if (businessPartnerContactInfo.Result.AccountAddressIndependentMobilePhones.Results.Count() > 0)
                {
                    phone = businessPartnerContactInfo.Result.AccountAddressIndependentMobilePhones.Results.Last();
                    newCassandraRecordData.MobilePhone.Number    = phone.PhoneNo;
                    newCassandraRecordData.MobilePhone.Type      = PhoneType.Cell;
                    newCassandraRecordData.MobilePhone.Extension = phone.Extension;
                }
                // populating email information
                if (businessPartnerContactInfo.Result.AccountAddressIndependentEmails.Results.Count() > 0)
                {
                    GetEmailResponse email = businessPartnerContactInfo.Result.AccountAddressIndependentEmails.Results.Last();
                    newCassandraRecordData.Email = email.Email;
                }
                newCassandraRecordData.Address.City       = mcfAddressInfo.City;
                newCassandraRecordData.Address.Country    = mcfAddressInfo.CountryID;
                newCassandraRecordData.Address.PostalCode = mcfAddressInfo.PostalCode;
                // updating or inserting cassandra record with new data from SAP
                UpdateCustomerDetailsInCassandra(newCassandraRecordData, bpID);
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }