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); }
/// <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; } }
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); }
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); } }
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); }
/// <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); } }
/// <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); } }