Exemplo n.º 1
0
        public static List <DateTime> GetSendTimeList(this SendMessageRule sendMessageRule)
        {
            var results = new List <DateTime>();

            switch (sendMessageRule.SendTimeType)
            {
            case Schema.SendTimeType.Immediately:
            {
                results.Add(sendMessageRule.CreatedTime);
            } break;

            case Schema.SendTimeType.Deliver:
            {
                results.Add(sendMessageRule.SendDeliver.GetSendTime());
            } break;

            case Schema.SendTimeType.Cycle:
            {
                List <DateTime> sendTimes = null;

                // 週期簡訊回傳的發送時間若為NULL,表示已經不在發送起訖日期範圍內。
                if (sendTimes == null && sendMessageRule.SendCycleEveryDay != null)
                {
                    sendTimes = sendMessageRule.SendCycleEveryDay.GetSendTimes();
                }

                if (sendTimes == null && sendMessageRule.SendCycleEveryWeek != null)
                {
                    sendTimes = sendMessageRule.SendCycleEveryWeek.GetSendTimes();
                }

                if (sendTimes == null && sendMessageRule.SendCycleEveryMonth != null)
                {
                    sendTimes = sendMessageRule.SendCycleEveryMonth.GetSendTimes();
                }

                if (sendTimes == null && sendMessageRule.SendCycleEveryYear != null)
                {
                    sendTimes = sendMessageRule.SendCycleEveryYear.GetSendTimes();
                }

                if (sendTimes != null)
                {
                    results.AddRange(sendTimes);
                }
            } break;
            }

            return(results);
        }
Exemplo n.º 2
0
        public static string GetSendTimeString(this SendMessageRule sendMessageRule, int displaySize = Int32.MaxValue - 1)
        {
            List <DateTime> results = GetSendTimeList(sendMessageRule);

            var clientTimezoneOffset = sendMessageRule.ClientTimezoneOffset;
            var sendTimeStrings      = results.Select(p => Converter.ToLocalTime(p, clientTimezoneOffset).ToString(Converter.Every8d_SentTime)).ToList();

            var output = string.Join("、", sendTimeStrings.Take(Math.Min(displaySize, sendTimeStrings.Count)));

            output = "共{0}筆," + output;

            if (sendTimeStrings.Count > displaySize)
            {
                output = output + "、...";
            }

            return(output);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 取得發送時間UtcTime
        /// </summary>
        /// <param name="sendMessageRule">The send message rule.</param>
        /// <returns></returns>
        public static DateTime?GetSendTime(this SendMessageRule sendMessageRule)
        {
            switch (sendMessageRule.SendTimeType)
            {
            case Schema.SendTimeType.Immediately:
            {
                return(sendMessageRule.CreatedTime);
            }

            case Schema.SendTimeType.Deliver:
            {
                return(sendMessageRule.SendDeliver.GetSendTime());
            }

            case Schema.SendTimeType.Cycle:
            {
                List <DateTime> sendTimes = null;

                // 週期簡訊回傳的發送時間若為NULL,表示已經不在發送起訖日期範圍內。
                if (sendTimes == null && sendMessageRule.SendCycleEveryDay != null)
                {
                    sendTimes = sendMessageRule.SendCycleEveryDay.GetSendTimes();
                }

                if (sendTimes == null && sendMessageRule.SendCycleEveryWeek != null)
                {
                    sendTimes = sendMessageRule.SendCycleEveryWeek.GetSendTimes();
                }

                if (sendTimes == null && sendMessageRule.SendCycleEveryMonth != null)
                {
                    sendTimes = sendMessageRule.SendCycleEveryMonth.GetSendTimes();
                }

                if (sendTimes == null && sendMessageRule.SendCycleEveryYear != null)
                {
                    sendTimes = sendMessageRule.SendCycleEveryYear.GetSendTimes();
                }

                if (sendTimes == null)
                {
                    return(null);
                }
                else
                {
                    // TODO: 可能會有問題,需要再思考,是否直接回傳所有SendTimes
                    var result = sendTimes.Where(p => p <= DateTime.UtcNow).LastOrDefault();         // default is DateTime.MinValue

                    if (result != DateTime.MinValue)
                    {
                        return(result);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            }
            return(null);
        }