예제 #1
0
        private string UpdatePayLoadTemplate(OnboardingInfo onboardingInfo)
        {
            JObject template = onboardingInfo.PayloadTemplate;

            foreach (var field in onboardingInfo.UserFields)
            {
                template.Property(field.Name).Value = field.Value;
            }

            return(template.ToString());
        }
예제 #2
0
        public void PostOnboardingInfoShouldValidate(OnboardingInfo onboarding, dynamic expectedResult)
        {
            //act
            var response = onboardingInfo.PostOnboardingInfo(onboarding);

            expectedResult = JsonConvert.SerializeObject(expectedResult);
            var actualResult = JsonConvert.SerializeObject(response.Result);

            //assert
            Assert.Equal(expectedResult, actualResult);
        }
예제 #3
0
        private bool SendMail(OnboardingInfo onboardingInfo)
        {
            string         body         = onboardingInfo.PayloadTemplate;
            ListDictionary replacements = new ListDictionary();

            foreach (var field in onboardingInfo.UserFields)
            {
                body = body.Replace("@" + field.Name + "@", field.Value);
            }

            MailAddress toMailAddress = null;
            var         toAddress     = Convert.ToString(onboardingInfo.DeliveryDestination, CultureInfo.InvariantCulture);

            if (toAddress.IsValidEmailAddress())
            {
                toMailAddress = new MailAddress(toAddress);
            }
            else if (onboardingInfoSettings.FallbackToAddress.IsValidEmailAddress())
            {
                toMailAddress = new MailAddress(onboardingInfoSettings.FallbackToAddress);
            }

            var fromAddress = new MailAddress(onboardingInfoSettings.FromAddress);
            var mailMessage = new MailMessage(fromAddress, toMailAddress)
            {
                Subject    = onboardingInfoSettings.Subject,
                Body       = !string.IsNullOrEmpty(body) ? body : onboardingInfoSettings.FallbackBodyMessage,
                IsBodyHtml = true
            };

            SmtpClient client = new SmtpClient(onboardingInfoSettings.HostAddress, Convert.ToInt16(onboardingInfoSettings.PortNumber, CultureInfo.InvariantCulture))
            {
                Credentials = new NetworkCredential(onboardingInfoSettings.UserName, onboardingInfoSettings.Password),
                EnableSsl   = false,
            };

            try
            {
                client.Send(mailMessage);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #4
0
        public async Task <dynamic> SendInformation(OnboardingInfo onboardingInfo)
        {
            //Check organization delivery method
            switch (onboardingInfo.DeliveryMethod)
            {
            case DeliveryMethod.Email:
                SendMail(onboardingInfo);
                break;

            case DeliveryMethod.Fax:
                break;

            case DeliveryMethod.WebApi:
                return(await PostData(onboardingInfo));
            }

            return(null);
        }
예제 #5
0
        private async Task <dynamic> PostData(OnboardingInfo onboardingInfo)
        {
            //Generate a template from the form data
            var updatedTemplate = UpdatePayLoadTemplate(onboardingInfo);
            var stringContent   = new StringContent(JsonConvert.SerializeObject(updatedTemplate), Encoding.UTF8, "application/json");

            var response = await httpClientService.PostAsync(onboardingInfo.DeliveryDestination, stringContent);

            if (response == null)
            {
                return(null);
            }
            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject(JsonConvert.DeserializeObject(content).ToString()));
        }
예제 #6
0
        /// <summary>
        /// returns onborading info
        /// </summary>
        /// <param name="onboardingInfoValues"></param>
        /// <returns></returns>
        private dynamic GetOnboardingInfo(dynamic onboardingInfoValues)
        {
            var onboardingInfo = new OnboardingInfo();

            if (onboardingInfoValues != null)
            {
                List <UserField> userField = new List <UserField>();
                foreach (var onboardingInfoValue in onboardingInfoValues.userFields)
                {
                    var name  = onboardingInfoValue.name;
                    var value = onboardingInfoValue.value;
                    userField.Add(new UserField {
                        Name = name, Value = value
                    });
                }
                onboardingInfo = new OnboardingInfo {
                    UserFields = userField
                };
            }

            return(onboardingInfo);
        }
예제 #7
0
 public Task <object> PostOnboardingInfo(OnboardingInfo onboardingInfo)
 {
     //Send the information based on delivery method
     return(SendInformation(onboardingInfo));
 }