public ProcessBySmsRuleValidator Create(ProcessBySmsRuleDto rule)
 {
     switch (rule.RuleId)
     {
         case ProcessBySmsRuleId.OrderCreatedTimeRange:
             return new OrderCreatedTimeProcessBySmsRuleValidator(rule);
         case ProcessBySmsRuleId.DeliveryAllowedCities:
             return new DeliveryCityIsMoscowProcessBySmsRuleValidator(rule);
         default:
             throw new NotImplementedException();
     }
 }
 protected ProcessBySmsRuleValidator(ProcessBySmsRuleDto rule)
 {
     Rule = rule;
 }
 public OrderCreatedTimeProcessBySmsRuleValidator(ProcessBySmsRuleDto rule)
     : base(rule)
 {
     _ctx = JsonConvert.DeserializeObject<OrderCreatedTimeRangeRuleContext>(rule.RuleParamsJson);
 }