public StaticServiceData()
 {
     CategoryList = new CategoryList();
     TypeTransactionList = new TypeTransactionList();
     TypeTransactionReasonList = new TypeTransactionReasonList();
     NotificationList = new NotificationList();
     TypeFrequencyList = new TypeFrequencyList();
     IntervalList = new TypeIntervalList();
     RecurrenceRuleList = new RecurrenceRuleList();
 }
        private async void LoadCachedRecurrenceRules(Action<RecurrenceRuleList, Exception> callback)
        {
            var retVal = new RecurrenceRuleList();
            try
            {
                foreach (var item in await StorageUtility.ListItems(STATIC_RECURRENCE_FOLDER, App.Instance.User.UserName))
                {
                    var staticType = await StorageUtility.RestoreItem<RecurrenceRule>(STATIC_RECURRENCE_FOLDER, item, App.Instance.User.UserName);
                    RecurrenceRuleList.Add(staticType);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                //callback(null, ex);
            }

            //SetupRecurrenceRuleData(retVal, false);
            //RecurrenceRuleList = retVal;

            callback(RecurrenceRuleList, null);
        }
        public static RecurrenceRuleList InitializeRecurrenceRule()
        {
            var user = new User { UserId = 2 };
            var result = new RecurrenceRuleList
            {
                new RecurrenceRule
                    {
                        Name = Const.Rule.RuleRangeNoEndDate.ToString(),
                        RuleParts = new List<RulePart>{
                            InitializeRulePart().FirstOrDefault(x=>x.FieldName==Const.RuleField.RangeStartDate.ToString())}
                    },
                    new RecurrenceRule
                    {
                        Name = Const.Rule.RuleRangeTotalOcurrences.ToString(),
                        RuleParts = new List<RulePart>{
                            InitializeRulePart().FirstOrDefault(x=>x.FieldName==Const.RuleField.RangeTotalOcurrences.ToString()),
                            InitializeRulePart().FirstOrDefault(x=>x.FieldName==Const.RuleField.RangeStartDate.ToString())}
                    },
                    new RecurrenceRule
                    {
                        Name = Const.Rule.RuleRangeEndBy.ToString(),
                        RuleParts = new List<RulePart> { 
                            InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.RangeEndBy.ToString()) ,
                            InitializeRulePart().FirstOrDefault(x=>x.FieldName==Const.RuleField.RangeStartDate.ToString())}
                    },
                    new RecurrenceRule
                    {
                        Name = Const.Rule.RuleDailyEveryDays.ToString(),
                        RuleParts = new List<RulePart>{ 
                            InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.DailyEveryDay.ToString()),
                            InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.DailyOnlyWeekdays.ToString()) }
                    },
                    new RecurrenceRule
                    {
                        Name = Const.Rule.RuleWeeklyEveryWeek.ToString(),
                        RuleParts = new List<RulePart>{ 
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.WeeklyEveryWeek.ToString()),
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.WeeklyDayName.ToString())}
                    },
                    new RecurrenceRule
                    {
                        Name = Const.Rule.RuleMonthlyDayNum.ToString(),
                        RuleParts = new List<RulePart>{ 
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.MonthlyDayNumber.ToString()),
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.MonthlyEveryMonth.ToString())}
                    },
                    new RecurrenceRule
                    {
                        Name = Const.Rule.RuleMonthlyPrecise.ToString(),
                        RuleParts = new List<RulePart>{ 
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.MonthlyCountOfWeekDay.ToString()),
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.MonthlyDayName.ToString()),
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.MonthlyCountOfMonth.ToString())}
                    },
                    new RecurrenceRule
                    {
                        Name = Const.Rule.RuleYearlyOnMonth.ToString(),
                        RuleParts = new List<RulePart>{ 
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.YearlyEveryYear.ToString()),
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.YearlyOnDayPos.ToString()),
                                        InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.YearlyMonthName.ToString())}
                    },
                    new RecurrenceRule
                    {
                        Name = Const.Rule.RuleYearlyOnTheWeekDay.ToString(),
                        RuleParts = new List<RulePart>{ 
                                      InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.YearlyEveryYear.ToString()),
                                      InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.YearlyPositions.ToString()),
                                      InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.YearlyDayName.ToString()),
                                      InitializeRulePart().FirstOrDefault(x => x.FieldName==Const.RuleField.YearlyMonthNameSec.ToString())}
                    }
            };

            return result;
        }