public void მეთდომა_ChangeGeorgianText_უნდა_დააბრუნოს_ინგლისური_ტექსტი() { var schedule = new DoSoSmsSchedule(objectSpace.Session); schedule.AllowUnicodeText = true; var englishText = "abgdevztiklmnopzhrstufkghkshchcdztschkhjh+-1234567890.,;:?!@$ ludi araki ghvino chinchari khakhvi"; //var geoText = "აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ+-1234567890.,;:?!@$ ლუდი არაყი ღვინო ჭინჭარი ხახვი"; var newText = ""; //if (schedule.AllowUnicodeText) // newText = SenderHelper.ChangeGeorgianText(geoText); Assert.AreEqual(englishText, newText); }
public static DoSoSms GenerateSms(UnitOfWork unitOfWork, object item, string to, string text, bool allowUnicodeText, int skipExecutionDate, DoSoSmsSchedule schedule = null) { var classInfo = unitOfWork.GetClassInfo(item); var properties = unitOfWork.GetProperties(classInfo); var key = classInfo?.KeyProperty?.GetValue(item); var obj = unitOfWork.GetObjectByKey(item.GetType(), key); var smsTo = new ExpressionEvaluator(properties, to).Evaluate(obj)?.ToString(); if (string.IsNullOrEmpty(smsTo) || smsTo.Length < 3) { return(null); } var smsText = new ExpressionEvaluator(properties, text).Evaluate(obj)?.ToString(); if (!allowUnicodeText) { smsText = GeneratorHelper.ChangeGeorgianText(smsText); } var objectTypeName = obj?.GetType()?.FullName; var normalizedSmsTo = smsTo?.Trim()?.Replace(" ", "").Replace("-", "").Replace("_", ""); var sameSmsFromDb = unitOfWork.Query <DoSoSms>().Where(x => x.SmsTo == normalizedSmsTo && x.ExpiredOn == null && x.ObjectKey == key.ToString() && x.ObjectTypeName == objectTypeName).ToList(); var oldNotSentSms = sameSmsFromDb.Where(x => !x.IsSent && !x.IsCanceled && x.SendingDate < DateTime.Now && x.DoSoSmsSchedule == schedule); foreach (var oldSms in oldNotSentSms) { oldSms.IsCanceled = true; oldSms.StatusComment = "შეიქმნა ახალი SMS"; } var alredySentSms = sameSmsFromDb.FirstOrDefault(x => x.IsSent && !x.IsCanceled && x.SentDate.AddDays(skipExecutionDate) > DateTime.Now); if (alredySentSms != null) { return(null); } var sms = new DoSoSms(unitOfWork) { SmsTo = normalizedSmsTo, SmsText = smsText, ObjectKey = key.ToString(), ObjectTypeName = objectTypeName, DoSoSmsSchedule = schedule, SendingDate = DateTime.Now }; if (!Regex.IsMatch(sms.SmsTo, @"\d")) { sms.IsCanceled = true; sms.StatusComment = "ტელეფონის ნომერი არასწორ ფორმატშია"; } return(sms); }
public string GenerateSmsFromSchedule(DoSoSmsSchedule schedule, UnitOfWork unitOfWork) { var objects = SenderHelper.GetMyObjects(schedule.ObjectsCriteria, unitOfWork, schedule.BusinessObjectFullName, false, 10000); string exception = string.Empty; foreach (var item in objects) { try { var classInfo = unitOfWork.GetClassInfo(item); var properties = unitOfWork.GetProperties(classInfo); var smsTo = new ExpressionEvaluator(properties, schedule.SmsTo).Evaluate(item).With(x => x.ToString()); if (string.IsNullOrEmpty(smsTo)) { continue; } var smsText = new ExpressionEvaluator(properties, schedule.SmsText).Evaluate(item).With(x => x.ToString()); if (!schedule.AllowUnicodeText) { smsText = SenderHelper.ChangeGeorgianText(smsText); } var key = classInfo.With(x => x.KeyProperty).With(x => x.GetValue(item)).With(x => x.ToString()); var objectTypeName = item.With(x => x.GetType()).With(x => x.FullName); var sameSmsFromDb = unitOfWork.Query <DoSoSms>().Where(x => x.SmsTo == smsTo && x.ExpiredOn == null && x.ObjectKey == key && x.ObjectTypeName == objectTypeName && x.DoSoSmsSchedule == schedule); var oldNotSentSms = sameSmsFromDb.Where(x => !x.IsSent && !x.IsCanceled && x.SendingDate < DateTime.Now); foreach (var oldSms in oldNotSentSms) { oldSms.IsCanceled = true; oldSms.StatusComment = "შეიქმნა ახალი SMS"; } var alredySentSms = sameSmsFromDb.FirstOrDefault(x => x.IsSent && !x.IsCanceled && x.SentDate.AddDays(schedule.SkipExecutionDate) > DateTime.Now); if (alredySentSms != null) { continue; } var sms = new DoSoSms(unitOfWork) { SmsTo = smsTo.With(x => x.Trim()).With(x => x.Replace(" ", "")).Replace("-", "").Replace("_", ""), SmsText = smsText, ObjectKey = key, ObjectTypeName = objectTypeName, DoSoSmsSchedule = schedule, SendingDate = DateTime.Now }; if (!Regex.IsMatch(sms.SmsTo, @"\d")) { sms.IsCanceled = true; sms.StatusComment = "ტელეფონის ნომერი არასწორ ფორმატშია"; } schedule.GetNextExecutionDate(); unitOfWork.CommitChanges(); } catch (Exception ex) { exception += ex + Environment.NewLine; continue; } } return(exception); }