/// <summary> /// Creates an error validation result for this validator. /// </summary> /// <param name="context">The validator context</param> /// <returns>Returns an error validation result.</returns> protected virtual ValidationFailure CreateValidationError(PropertyValidatorContext context) { var messageBuilderContext = new MessageBuilderContext(context, errorSource, this); var error = context.Rule.MessageBuilder != null ? context.Rule.MessageBuilder(messageBuilderContext) : messageBuilderContext.GetDefaultMessage(); var failure = new ValidationFailure(context.PropertyName, error, context.PropertyValue); failure.FormattedMessageArguments = context.MessageFormatter.AdditionalArguments; failure.FormattedMessagePlaceholderValues = context.MessageFormatter.PlaceholderValues; failure.ResourceName = errorSource.ResourceName; failure.ErrorCode = (errorCodeSource != null) ? errorCodeSource.GetString(context.Instance) : ValidatorOptions.ErrorCodeResolver(this); if (CustomStateProvider != null) { failure.CustomState = CustomStateProvider(context); } failure.Severity = Severity; return(failure); }
private MessageBuilderContext GeneralMatch(Customer customer, IEnumerable <ListeningAction> listeningActions) { var generalActions = listeningActions.Where(l => l.GetType() == typeof(GeneralListeningAction)); var returnObj = new MessageBuilderContext(); if (generalActions.Count() >= 1) { var rand = new Random(); int index = rand.Next(0, generalActions.Count()); var actions = (GeneralListeningAction)generalActions.ElementAt(index); var responses = actions.Responses; index = rand.Next(0, responses.Count()); var response = responses.ElementAt(index); returnObj.Customer = customer; returnObj.SendText = response.Text; return(returnObj); } else { return(null); } }
/// <summary> /// Creates an error validation result for this validator. /// </summary> /// <param name="context">The validator context</param> /// <returns>Returns an error validation result.</returns> protected virtual ValidationFailure CreateValidationError(PropertyValidatorContext context) { var messageBuilderContext = new MessageBuilderContext(context, this); var error = context.Rule.MessageBuilder != null ? context.Rule.MessageBuilder(messageBuilderContext) : messageBuilderContext.GetDefaultMessage(); var failure = new ValidationFailure(context.PropertyName, error, context.PropertyValue); #pragma warning disable 618 failure.FormattedMessageArguments = context.MessageFormatter.AdditionalArguments; #pragma warning restore 618 failure.FormattedMessagePlaceholderValues = context.MessageFormatter.PlaceholderValues; #pragma warning disable 618 failure.ErrorCode = ErrorCodeSource?.GetString(context) ?? ValidatorOptions.Global.ErrorCodeResolver(this); #pragma warning restore 618 if (CustomStateProvider != null) { failure.CustomState = CustomStateProvider(context); } if (SeverityProvider != null) { failure.Severity = SeverityProvider(context); } return(failure); }
public MessageBuilder(MessageBuilderContext context) { if (context == null || context.TemplateFile == null) { throw new ArgumentNullException("email context has incorrect value"); } _context = context; }
public ActionResult Success() { var sum = HttpContext.Request.QueryString.Get("out_summ"); var email = HttpContext.Request.QueryString.Get("Shp_email"); var name = HttpContext.Request.QueryString.Get("Shp_name"); var phone = HttpContext.Request.QueryString.Get("Shp_phone"); if (String.IsNullOrEmpty(sum) || String.IsNullOrEmpty(email) || String.IsNullOrEmpty(name) || String.IsNullOrEmpty(phone)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //todo: check hash //sending email notification try { using (var messageTemplateFile = MessageBuilder.GetMessageTemplate("payment")) { try { var messageContext = new MessageBuilderContext() { TemplateFile = messageTemplateFile, Title = "Оплата абонемента", Name = name, Email = email, Phone = phone, Description = $"Стоимость абонемента: {sum}р." }; var messageBuilder = new MessageBuilder(messageContext); EmailSender.SendMessageAsync(messageBuilder.GetMessage()); } catch { //todo: write log } } } catch (FileNotFoundException e) { //todo: write log } catch (Exception e) { //todo: write log } return(View()); }
private Dictionary <string, string> BuildDictionary(MessageBuilderContext context) { return(new Dictionary <string, string> { { KeywordToken.BotName, _settingRepository.GetSettingByType(SettingType.BotName).Value ?? "" }, { KeywordToken.CompanyName, _settingRepository.GetSettingByType(SettingType.CompanyName).Value ?? "" }, { KeywordToken.CustomerName, !string.IsNullOrEmpty(context.Customer.Name) ? context.Customer.Name : "" }, { KeywordToken.CustomerNameAllCaps, !string.IsNullOrEmpty(context.Customer.Name) ? context.Customer.Name.ToUpper() : "" }, { KeywordToken.InputText, context.InputText ?? "" }, { KeywordToken.ListeningActionMatches, context.ListeningActionMatches ?? "" }, { KeywordToken.Products, _productService.BuildProductList() ?? "" } }); }
public void SendMessage(SendMessageDto dto, MessageBuilderContext mbContext) { var dict = BuildDictionary(mbContext); var message = dict.Aggregate(mbContext.SendText, (current, value) => current.Replace(value.Key, value.Value)); MessageResource.Create( body: message, from: new Twilio.Types.PhoneNumber(dto.FromNumber), statusCallback: new Uri($"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Headers["X-Original-Host"]}{_httpContextAccessor.HttpContext.Request.Path}/status"), to: new Twilio.Types.PhoneNumber(dto.ToNumber) ); }
/// <summary> /// Creates an error validation result for this validator. /// </summary> /// <param name="context">The validator context</param> /// <returns>Returns an error validation result.</returns> protected virtual ValidationFailure CreateValidationError(PropertyValidatorContext context) { var messageBuilderContext = new MessageBuilderContext(context, Options.ErrorMessageSource, this); var error = context.Rule.MessageBuilder != null ? context.Rule.MessageBuilder(messageBuilderContext) : messageBuilderContext.GetDefaultMessage(); var failure = new ValidationFailure(context.PropertyName, error, context.PropertyValue); //failure.FormattedMessageArguments = context.MessageFormatter.AdditionalArguments; failure.FormattedMessagePlaceholderValues = context.MessageFormatter.PlaceholderValues; failure.ErrorCode = (Options.ErrorCodeSource != null) ? Options.ErrorCodeSource.GetString(context) : ValidatorOptions.ErrorCodeResolver(this); return(failure); }
public ActionResult TrialWorkout(TrialWorkoutModel model) { if (model == null || String.IsNullOrEmpty(model.DateField) || String.IsNullOrEmpty(model.Email) || String.IsNullOrEmpty(model.LevelSelect) || String.IsNullOrEmpty(model.NameField) || String.IsNullOrEmpty(model.Phone)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //sending email notification try { using (var messageTemplateFile = MessageBuilder.GetMessageTemplate("trialworkout")) { try { var messageContext = new MessageBuilderContext() { TemplateFile = messageTemplateFile, Title = "Пробная тренировка", Name = model.NameField, Email = model.Email, Phone = model.Phone, Description = $"Дата: {model.DateField}, Уровень: {model.LevelSelect}" }; var messageBuilder = new MessageBuilder(messageContext); EmailSender.SendMessageAsync(messageBuilder.GetMessage()); } catch { //todo: write log } } } catch (FileNotFoundException e) { //todo: write log } catch (Exception e) { //todo: write log } return(View("TrialWorkoutSuccess", model)); }
private MessageBuilderContext NoMatch(Customer customer, IEnumerable <ListeningAction> listeningActions) { var typedActions = listeningActions.Where(l => l.GetType() == typeof(TypedListeningAction)); var generalActions = listeningActions.Where(l => l.GetType() == typeof(GeneralListeningAction)); if (typedActions.Count() == 0 && generalActions.Count() == 0) { var returnObj = new MessageBuilderContext(); returnObj.Customer = customer; returnObj.SendText = _messageService.GetRandomTypedMessage(MessageType.ListeningActionResponseNoMatch).Text; return(returnObj); } else { return(null); } }
private MessageBuilderContext UniqueTypedMatch(Customer customer, IEnumerable <ListeningAction> listeningActions) { var typedActions = listeningActions.Where(l => l.GetType() == typeof(TypedListeningAction)); if (typedActions.Count() == 1) { var returnObj = new MessageBuilderContext(); var typedAction = (TypedListeningAction)typedActions.First(); returnObj.Customer = customer; returnObj.SendText = _messageService.GetRandomTypedMessage(typedAction.ResponseMessageType).Text; returnObj.Customer.Session.AwaitState = typedActions.First().NextState; return(returnObj); } else { return(null); } }
public Customer DoAction(StateActionDto dto) { var customer = dto.Customer; var listeningActions = _listeningActionService.GetListeningActionsByMatch(dto.InputText); var priorities = new List <Func <MessageBuilderContext> > { () => NoMatch(customer, listeningActions), () => UniqueTypedMatch(customer, listeningActions), () => MultipleTypedMatches(customer, listeningActions), () => GeneralMatch(customer, listeningActions) }; var mbContext = new MessageBuilderContext(); foreach (var func in priorities) { mbContext = func(); if (mbContext == null) { continue; } else { break; } } mbContext.InputText = dto.InputText; _twilioService.SendMessage(new SendMessageDto { FromNumber = dto.MyNumber, ToNumber = customer.PhoneNumber }, mbContext); return(customer); }
private MessageBuilderContext MultipleTypedMatches(Customer customer, IEnumerable <ListeningAction> listeningActions) { var typedActions = listeningActions.Where(l => l.GetType() == typeof(TypedListeningAction)); var returnObj = new MessageBuilderContext(); if (typedActions.Count() > 1) { returnObj.Customer = customer; returnObj.SendText = _messageService.GetRandomTypedMessage(MessageType.ListeningActionResponseMultipleMatches).Text; returnObj.Customer.Session.AwaitState = typedActions.First().NextState; for (int i = 0; i < typedActions.Count() - 1; i++) { returnObj.ListeningActionMatches += $"{typedActions.ElementAt(i).Name}, "; } returnObj.ListeningActionMatches += $"or {typedActions.LastOrDefault().Name}"; return(returnObj); } else { return(null); } }
/// <summary> /// Gets the service provider associated with the validation context. /// </summary> /// <param name="context"></param> /// <returns></returns> /// <exception cref="InvalidOperationException"></exception> public static IServiceProvider GetServiceProvider <T, TProperty>(this MessageBuilderContext <T, TProperty> context) => Get(context.ParentContext.RootContextData);