Пример #1
0
        private static Task GetTask(Model.Task task)
        {
            var  gTaskDate = SetTaskDateAndroFromNormal();
            Task nTask     = new Task();

            // Новые свойства
            nTask.Image = task.PathToIm;
            var ab = task.TaskAbiliti();

            nTask.Ability = ab != null ? ab.GUID : "-1";

            nTask.BaseChangeAbility = 0;
            nTask.BaseChangeExp     = 0;
            nTask.ChangeAbility     = 0;
            nTask.BoosterOfDone     = task.BoosterOfDone;
            nTask.BoosterOfFail     = task.BoosterOfFail;

            if (ab != null)
            {
                var chAb = task.TaskAbylityChangeVal(ab);

                nTask.BaseChangeAbility = chAb;
                nTask.BaseChangeExp     = task.Priority / Model.Task.AbIncreaseFormula(ab);
                nTask.ChangeAbility     = chAb;
            }
            //----------------

            nTask.Exp                 = task.Priority;
            nTask.TimeLastDone        = task.TimeLastDone.ToString("yyyy/MM/dd. HH:mm:ss:SSS");
            nTask.MiliSecsDoneForSort = task.MiliSecsDoneForSort;
            nTask.Wave                = task.Wave;
            nTask.Priority            = task.Priority;
            nTask.isSuper             = task.isSuper;

            nTask.SubTasksByQwests = new List <string>();
            nTask.LinkedQwests     = new List <string>();
            //nTask.TimeLastDone = MainViewModel.GetTimeStringMilisecondsFromeDate(new DateTime(task.MiliSecsDoneForSort));
            // todo сюда записать навык на который влияет, его значение и на сколько меняет этот навык, чтобы потом в андроид обработать

            if (MainViewModel.IsMorning().Invoke(task.TimeProperty))
            {
                nTask.TimeOfTheDay = 1;
            }
            else if (MainViewModel.IsDay().Invoke(task.TimeProperty))
            {
                nTask.TimeOfTheDay = 2;
            }
            else if (MainViewModel.IsEvening().Invoke(task.TimeProperty))
            {
                nTask.TimeOfTheDay = 3;
            }

            switch (task.Recurrense.TypeInterval)
            {
            case TimeIntervals.Нет:
                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = "NONE";
                break;

            case TimeIntervals.Сразу:
                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = "NOW";
                break;

            case TimeIntervals.Ежедневно:
                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = "Daily";
                break;

            case TimeIntervals.Будни:
                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = "BusinessDay";
                break;

            case TimeIntervals.Выходные:
                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = "Weekend";
                break;

            case TimeIntervals.День:
            case TimeIntervals.ДниСначала:
                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = $"Every day&{task.Recurrense.Interval}";
                break;

            case TimeIntervals.Неделя:
            case TimeIntervals.НеделиСНачала:
                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = $"Every Weeks&{task.Recurrense.Interval}";
                break;

            case TimeIntervals.МесяцыСНачала:
            case TimeIntervals.Месяц:
                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = $"Every Month&{task.Recurrense.Interval}";
                break;

            case TimeIntervals.ДниНедели:
            case TimeIntervals.ДниНеделиСНачала:
                var weekDays = string.Empty;
                foreach (var source in task.DaysOfWeekRepeats.Where(n => n.CheckedProperty))
                {
                    if (!string.IsNullOrEmpty(weekDays))
                    {
                        weekDays += ", ";
                    }

                    switch (source.Day)
                    {
                    case DayOfWeek.Monday:
                        weekDays += "Mon";
                        break;

                    case DayOfWeek.Tuesday:
                        weekDays += "Tue";
                        break;

                    case DayOfWeek.Wednesday:
                        weekDays += "Wed";
                        break;

                    case DayOfWeek.Thursday:
                        weekDays += "Thu";
                        break;

                    case DayOfWeek.Friday:
                        weekDays += "Fri";
                        break;

                    case DayOfWeek.Saturday:
                        weekDays += "Sat";
                        break;

                    case DayOfWeek.Sunday:
                        weekDays += "Sun";
                        break;
                    }
                }

                nTask.Date        = gTaskDate(task);
                nTask.Reccurrense = $"Every WeekDays&{weekDays}";
                break;
            }

            nTask.UUID = task.GUID;

            string issuper = string.Empty;

            if (task.isSuper)
            {
                issuper = "👑 ";
            }

            var    plusName1 = task.PlusNameOf2;
            string plusName2 = "";

            var count = (task.NameOfProperty + plusName1).Count();

            if (!string.IsNullOrWhiteSpace(plusName1) && task.Priority > 0 && plusName1.Contains("("))
            {
                var ind = plusName1.IndexOf('(');
                plusName2 = plusName1.Substring(ind).Trim();
                plusName1 = plusName1.Substring(0, ind).Trim();
            }

            if (string.IsNullOrWhiteSpace(plusName1))
            {
                nTask.NameOf = task.NameOfProperty.ToUpper();
            }
            else
            {
                string pl = string.Empty;
                if (!string.IsNullOrWhiteSpace(task.State) && !string.IsNullOrWhiteSpace(task.NameOfProperty))
                {
                    pl = " ";
                }

                nTask.NameOf = task.NameOfProperty.ToUpper() + pl + plusName1.ToUpper(); // + task.SubTasksString;
            }

            if (task.IsSkill)
            {
                nTask.TypeOf = "Навыки";
                //nTask.LinksOf = plusName2.Replace("(", "").Replace(")", "");
                var expName = plusName2.Replace("(", "").Replace(")", "");
                if (!string.IsNullOrWhiteSpace(expName))
                {
                    nTask.LinksOf = expName;
                    // nTask.NameOf += "\n" + expName;
                }
                //nTask.LinksOf = task.TaskInAbilitis.Aggregate("", (s, model) => s + model.NameOfProperty + "; ");
            }
            else if (task.RelToQwests.Any())
            {
                nTask.TypeOf = "Квесты";
            }
            else
            {
                nTask.TypeOf = "Задачи";
            }
            nTask.Time  = task.TimeString;
            nTask.Index = task.TaskIndex;
            return(nTask);
        }