private WebRioSsoConfig GetWebRioSsoConfiguration(RequestActionEventArgs args) { var configuration = new WebRioSsoConfig(); configuration.JSessionId = GetParamValue(args, UsdParameter.WebRioJSessionId); configuration.RequestType = GetRequestType(args); if (configuration.RequestType == RequestType.TravelPlanner) { configuration.TravelPlannerId = GetParamValue(args, UsdParameter.EntityId); if (!string.IsNullOrWhiteSpace(configuration.TravelPlannerId)) { CrmService.GetInitialsFrom(_client.CrmInterface, configuration); } } if (configuration.RequestType == RequestType.Booking) { GetBookingDetails(args, configuration); } else if (configuration.RequestType == RequestType.TravelPlanner) { GetTravelPlannerDetails(args, configuration); } CrmService.GetWebRioSsoConfiguration(_client.CrmInterface, configuration); configuration.Login = CrmService.GetSsoLoginDetails(_client.CrmInterface, _client.CrmInterface.GetMyCrmUserId()); configuration.PrivateKey = CrmService.GetWebRioPrivateKey(_client.CrmInterface); ValidateConfiguration(configuration); return(configuration); }
private WebRioJsonWebTokenPayload GetWebRioSsoTokenPayload(WebRioSsoConfig configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } var payload = new WebRioJsonWebTokenPayload { IssuedAtTime = _jtiService.GetIssuedAtTime().ToString(), NotBefore = _jtiService.GetNotBeforeTime(configuration.NotBeforeTime).ToString(), Expiry = _jtiService.GetExpiry(configuration.ExpirySeconds).ToString(), Jti = WebServiceExchangeHelper.GetJti().ToString(), BranchCode = configuration.Login.BranchCode, AbtaNumber = configuration.Login.AbtaNumber, EmployeeId = configuration.Login.EmployeeId, Initials = configuration.Login.Initials, Aud = EntityRecords.Configuration.WebRioAudWebRio }; if (configuration.RequestType == RequestType.TravelPlanner) { payload.TravelPlannerInitials = configuration.Initials; payload.IncludeInitials = true; } else { payload.IncludeInitials = false; } return(payload); }
public void GetTravelPlannerDetails(RequestActionEventArgs args, WebRioSsoConfig configuration) { if (configuration.RequestType != RequestType.TravelPlanner) { return; } configuration.ConsultationReference = GetParamValue(args, UsdParameter.WebRioConsultationNo); configuration.CustomerId = GetParamValue(args, UsdParameter.CustomerId); }
private WebRioResponse OpenNewConsultation(CrmServiceClient crmInterface, WebRioSsoConfig configuration, string token) { Customer cust = CrmService.GetCustomerDataForWebRioNewConsultation(_client.CrmInterface, configuration.CustomerId); configuration.Data = SerializeNewConsultationSsoRequestToJson(cust); var url = $"{configuration.ServiceUrl}/{configuration.NewConsultationApi}"; var response = SendRequest(url, token, configuration.JSessionId, configuration.Data); var content = GetResponseContent(response); return(GetWebRioSsoResponse(content)); }
private void SetRequestData(WebRioSsoConfig configuration) { if (configuration.RequestType == RequestType.Admin) { configuration.Data = string.Empty; } else if (configuration.RequestType == RequestType.Booking || configuration.RequestType == RequestType.TravelPlanner) { configuration.Data = WebServiceExchangeHelper.SerializeOpenConsultationSsoRequestToJson(new WebRioSsoRequest { Consultation = configuration.ConsultationReference }); } }
private string GetUrl(WebRioSsoConfig configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } if (configuration.RequestType == RequestType.Admin) { return($"{configuration.ServiceUrl}/{configuration.AdminApi}"); } if ((configuration.RequestType == RequestType.Booking) || (configuration.RequestType == RequestType.TravelPlanner)) { return($"{configuration.ServiceUrl}/{configuration.OpenConsultationApi}"); } return(null); }
private void HandleConfigurationErrors(WebRioSsoConfig configuration, bool global) { if (configuration == null) { return; } if (configuration.Errors == null || configuration.Errors.Count == 0) { return; } var message = new StringBuilder(); foreach (var item in configuration.Errors) { message.AppendLine(item); } message.Append("Please contact administrator for further details."); FireEventOnError(message.ToString(), global); }
public void GetBookingDetails(RequestActionEventArgs args, WebRioSsoConfig configuration) { if (configuration.RequestType != RequestType.Booking) { return; } var url = GetParamValue(args, UsdParameter.Url); var decodedUrl = WebUtility.UrlDecode(url); decodedUrl = decodedUrl.Replace("%25", ""); decodedUrl = decodedUrl.Replace("%3d", "="); var etc = decodedUrl.Substring(decodedUrl.IndexOf("etc=")); configuration.ObjectTypeCode = etc.Substring(4, etc.IndexOf('&') - 4); var id = decodedUrl.Substring(decodedUrl.IndexOf("id=")); id = id.Substring(3, id.IndexOf("7d") - 3); configuration.BookingSummaryId = id.Replace("7b", ""); CrmService.GetConsultationReferenceFromBookingSummary(_client.CrmInterface, configuration); }
private void ValidateConfiguration(WebRioSsoConfig configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } var errors = new List <string>(); if (configuration.RequestType == RequestType.Other) { errors.Add("Action call parameter [Type] is missing or not valid."); } if (configuration.RequestType == RequestType.TravelPlanner) { if (string.IsNullOrWhiteSpace(configuration.Initials)) { errors.Add("The id of the travel planner provided is invalid or initials is missing."); } if (string.IsNullOrWhiteSpace(configuration.ConsultationReference)) { errors.Add("Consultation reference is missing."); } } if (configuration.RequestType == RequestType.Booking) { if (string.IsNullOrWhiteSpace(configuration.ConsultationReference)) { errors.Add("The id of the booking summary provided is invalid or consultation reference is missing in booking reference."); } } if (configuration.Login == null || string.IsNullOrWhiteSpace(configuration.Login.AbtaNumber) || string.IsNullOrWhiteSpace(configuration.Login.BranchCode) || string.IsNullOrWhiteSpace(configuration.Login.Initials) || string.IsNullOrWhiteSpace(configuration.Login.EmployeeId)) { errors.Add("Login details are missing for the logged-in user."); } int expirySeconds = -1; if (string.IsNullOrWhiteSpace(configuration.ExpirySeconds) || !Int32.TryParse(configuration.ExpirySeconds, out expirySeconds)) { errors.Add("Expiry seconds have not been specified or the one specified does not have the correct format."); } int notBeforeTime = -1; if (string.IsNullOrWhiteSpace(configuration.NotBeforeTime) || !Int32.TryParse(configuration.NotBeforeTime, out notBeforeTime)) { errors.Add("Not before time seconds have not been specified or the one specified does not have correct format."); } if (string.IsNullOrWhiteSpace(configuration.PrivateKey)) { errors.Add("Private key has not been provided"); } if (string.IsNullOrWhiteSpace(configuration.ServiceUrl)) { errors.Add("SSO Url has not been configured properly."); } else { if (configuration.RequestType == RequestType.Admin) { if (string.IsNullOrWhiteSpace(configuration.AdminApi)) { errors.Add("Admin Api has not been configured properly."); } } } configuration.Errors = errors; }