예제 #1
0
        public static async Task <dynamic> PostNewChecklistItem(CustomTaskItem item, HabiticaUser user, CustomTask task)
        {
            string str1 = "checklist";

            try
            {
                return(await "https://habitica.com/api/v3/tasks/"
                       .WithHeaders(new
                {
                    x_api_user = user.Uuid,
                    x_api_key = user.ApiToken
                })
                       .AppendPathSegment(task.HabiticaTaskId, true)
                       .AppendPathSegment(str1, true)
                       .PostJsonAsync(new
                {
                    text = item.ItemName,
                })
                       .ReceiveJson());
            }
            catch (FlurlHttpException ex)
            {
                return(ex.GetResponseJson());
            }
        }
예제 #2
0
 public static async Task <dynamic> PostScoreChecklistItem(CustomTask task, CustomTaskItem item)
 {
     try
     {
         return(await $"https://habitica.com/api/v3/tasks/{task.HabiticaTaskId}/checklist/{item.HabiticaItemId}/score"
                .GetJsonAsync());
     }
     catch (FlurlHttpException ex)
     {
         return(ex.GetResponseJson());
     }
 }
예제 #3
0
 public static async Task <dynamic> DeleteChecklistItem(CustomTask task, CustomTaskItem item, HabiticaUser user)
 {
     try
     {
         return(await $"https://habitica.com/api/v3/tasks/{task.HabiticaTaskId}/checklist/{item.HabiticaItemId}"
                .WithHeaders(new
         {
             x_api_key = user.ApiToken,
             x_api_user = user.Uuid,
         })
                .GetJsonAsync());
     }
     catch (FlurlHttpException ex)
     {
         return(ex.GetResponseJson());
     }
 }
예제 #4
0
        public ActionResult CloneTask(int TaskId)
        {
            habiticatravelEntities MyHabitica  = new habiticatravelEntities();
            DefaultTask            TaskToClone = MyHabitica.DefaultTasks.Find(TaskId);
            string       userId    = User.Identity.GetUserId();
            HabiticaUser MyHabUser = MyHabitica.HabiticaUsers.Single(u => u.UserId == userId);

            CustomTask ClonedTask = new CustomTask
            {
                TaskName          = TaskToClone.TaskName,
                TaskType          = TaskToClone.TaskType,
                TaskTag           = MyHabUser.TaskTagId,
                TaskNotes         = TaskToClone.TaskNotes,
                TaskDueDate       = TaskToClone.TaskDueDate,
                TaskDifficulty    = TaskToClone.TaskDifficulty,
                ReminderStartDate = TaskToClone.ReminderStartDate,
                ReminderTime      = TaskToClone.ReminderTime,
                UserId            = userId,
                CustomTaskItems   = new List <CustomTaskItem>()
            };

            MyHabitica.CustomTasks.Add(ClonedTask);
            try
            {
                MyHabitica.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                Exception raise = dbEx;
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        string message = string.Format("{0}:{1}",
                                                       validationErrors.Entry.Entity.ToString(),
                                                       validationError.ErrorMessage);
                        // raise a new exception nesting
                        // the current instance as InnerException
                        raise = new InvalidOperationException(message, raise);
                    }
                }
                throw raise;
            }

            List <DefaultTaskItem> CloneItemsList = new List <DefaultTaskItem>(MyHabitica.DefaultTasks.Find(TaskId).DefaultTaskItems.ToList());
            List <CustomTaskItem>  NewItemsList   = new List <CustomTaskItem>();

            for (int i = 0; i < CloneItemsList.Count; i++)
            {
                var        TempItem = new CustomTaskItem();
                int        TempId   = ClonedTask.TaskId;
                CustomTask TempTask = MyHabitica.CustomTasks.Find(TempId);
                TempItem.ItemName = CloneItemsList[i].ItemName;
                TempItem.TaskId   = TempTask.TaskId;

                MyHabitica.CustomTaskItems.Add(TempItem);
                ClonedTask.CustomTaskItems.Add(TempItem);
            }

            try
            {
                MyHabitica.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                Exception raise = dbEx;
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        string message = string.Format("{0}:{1}",
                                                       validationErrors.Entry.Entity.ToString(),
                                                       validationError.ErrorMessage);
                        // raise a new exception nesting
                        // the current instance as InnerException
                        raise = new InvalidOperationException(message, raise);
                    }
                }
                throw raise;
            }

            return(RedirectToAction("Index", "Home"));
        }