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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }