예제 #1
0
        void TasksTree_RemoteRename(object sender, RemoteEditEventArgs e)
        {
            try
            {
                int nodeId = int.Parse(e.NodeID);

                SimpleTasksDataContext ctx = this.DBContext;

                Category category = (from tl in ctx.Categories
                                     where tl.ID == nodeId
                                     select tl).First();

                IEnumerable <Category> query = from tl in ctx.Categories
                                               where (tl.IsFolder == category.IsFolder && tl.ParentID == category.ParentID && tl.ID != category.ID && tl.Name == e.Value <string>())
                                               select tl;

                if (query.Count() > 0)
                {
                    e.Accept         = false;
                    e.RefusalMessage = "Such {0} is existing in the parent folder".FormatWith(category.IsFolder ? "folder" : "category");
                    return;
                }

                category.Name = e.Value <string>();
                ctx.SubmitChanges();
                e.Accept = true;
            }
            catch (Exception exception)
            {
                e.Accept         = false;
                e.RefusalMessage = exception.Message;
            }
        }
예제 #2
0
        private void BindTasks(int categoryID, string filter)
        {
            bool?completed = null;

            switch (filter)
            {
            case "active":
                completed = false;
                break;

            case "completed":
                completed = true;
                break;
            }

            SimpleTasksDataContext ctx = this.DBContext;

            List <Task> allTasks = new List <Task>(16);

            // not so good solution
            // it is better to write stored procedure which returns all children nodes
            // for particular category (children from all down levels)
            Category category = (from tl in ctx.Categories where tl.ID == categoryID select tl).First();

            this.AddTasks(category, allTasks, completed);

            this.store.DataSource = allTasks;
            this.store.DataBind();
        }
예제 #3
0
        void TasksTree_RemoteMove(object sender, RemoteMoveEventArgs e)
        {
            try
            {
                int nodeId       = int.Parse(e.NodeID);
                int targetNodeId = int.Parse(e.TargetNodeID);

                SimpleTasksDataContext ctx = this.DBContext;

                Category category = (from tl in ctx.Categories
                                     where tl.ID == nodeId
                                     select tl).First();

                Category parentlist = (from tl in ctx.Categories
                                       where tl.ID == targetNodeId
                                       select tl).First();

                category.ParentCategory = parentlist;
                ctx.SubmitChanges();
                e.Accept = true;
            }
            catch (Exception exception)
            {
                e.Accept         = false;
                e.RefusalMessage = exception.Message;
            }
        }
예제 #4
0
        void TasksTree_NodeLoad(object sender, NodeLoadEventArgs e)
        {
            int folderID = int.Parse(e.NodeID);

            SimpleTasksDataContext ctx = this.DBContext;

            IEnumerable <Category> query = from tl in ctx.Categories
                                           where tl.ParentID == folderID
                                           select tl;

            this.ListToNode(query.ToList(), e.Nodes);
        }
예제 #5
0
        public bool DeleteTasks(int[] taskIds)
        {
            if (taskIds == null)
            {
                Ext.Net.X.Msg.Show(new MessageBoxConfig
                {
                    Title   = "Delete tasks error",
                    Message = "Tasks ids are missing",
                    Icon    = MessageBox.Icon.ERROR,
                    Buttons = MessageBox.Button.OK
                });

                return(false);
            }

            try
            {
                SimpleTasksDataContext ctx   = this.DBContext;
                List <Task>            tasks = (from t in ctx.Tasks where taskIds.Contains(t.ID) select t).ToList();

                foreach (Task task in tasks)
                {
                    ctx.Tasks.DeleteOnSubmit(task);
                }

                ctx.SubmitChanges();

                foreach (int id in taskIds)
                {
                    this.Store.Primary.Remove((object)id);
                }

                return(true);
            }
            catch (Exception e)
            {
                Ext.Net.X.Msg.Show(new MessageBoxConfig
                {
                    Title   = "Delete tasks error",
                    Message = e.Message,
                    Icon    = MessageBox.Icon.ERROR,
                    Buttons = MessageBox.Button.OK
                });

                return(false);
            }
        }
예제 #6
0
        public bool ToggleStatus(int[] taskIds, bool?status, int categoryID, string filter)
        {
            try
            {
                SimpleTasksDataContext ctx   = this.DBContext;
                List <Task>            tasks = (from t in ctx.Tasks where taskIds.Contains(t.ID) select t).ToList();

                foreach (Task task in tasks)
                {
                    task.Completed     = status != null ? status.Value : !task.Completed;
                    task.CompletedDate = DateTime.Now;
                }

                ctx.SubmitChanges();

                if (filter != "all")
                {
                    this.BindTasks(categoryID, filter);
                }
                else
                {
                    this.Store.Primary.SuspendEvents(false);
                    foreach (Task task in tasks)
                    {
                        ModelProxy r = this.store.GetById((object)task.ID);
                        r.Set("Completed", task.Completed);
                        r.Set("CompletedDate", new JRawValue(DateTimeUtils.DateNetToJs(task.CompletedDate.Value)));
                    }
                    this.Store.Primary.ResumeEvents();
                    this.Store.Primary.FireEvent("datachanged", new JRawValue(this.Store.Primary.ClientID));
                }

                return(true);
            }
            catch (Exception e)
            {
                Ext.Net.X.Msg.Show(new MessageBoxConfig
                {
                    Title   = "Toggle status error",
                    Message = e.Message,
                    Icon    = MessageBox.Icon.ERROR,
                    Buttons = MessageBox.Button.OK
                });

                return(false);
            }
        }
예제 #7
0
        public void MoveTasks(int[] ids, int categoryID)
        {
            SimpleTasksDataContext ctx = this.DBContext;

            IEnumerable <Task> tasks = from t in ctx.Tasks
                                       where ids.Contains(t.ID)
                                       select t;

            Category category = (from categories in ctx.Categories where categories.ID == categoryID select categories).First();

            foreach (Task task in tasks)
            {
                task.Category = category;
            }

            ctx.SubmitChanges();
        }
예제 #8
0
        public void SaveTask(int taskId, JsonObject values)
        {
            SimpleTasksDataContext ctx = this.DBContext;
            Task task = (from t in ctx.Tasks where t.ID == taskId select t).First();

            task.Title       = values.ContainsKey("Title") ? values["Title"].ToString() : "";
            task.DueDate     = values.ContainsKey("DueDate") ?  DateTime.Parse(values["DueDate"].ToString()) : DateTime.MinValue;
            task.CategoryID  = values.ContainsKey("Name") ?  int.Parse(values["Name"].ToString()) : -1;
            task.Description = values.ContainsKey("Description") ? values["Description"].ToString() : "";

            if (values.ContainsKey("HasReminder") && bool.Parse(values["HasReminder"].ToString()) && values.ContainsKey("Reminder"))
            {
                task.Reminder = DateTime.Parse(values["Reminder"].ToString());
            }

            ctx.SubmitChanges();
        }
예제 #9
0
        void TasksTree_RemoteRemove(object sender, RemoteActionEventArgs e)
        {
            try
            {
                if (e.NodeID.IsEmpty())
                {
                    e.Accept = true;
                    return;
                }

                int nodeId = int.Parse(e.NodeID);

                //root
                if (nodeId == 1)
                {
                    e.Accept         = false;
                    e.RefusalMessage = "The root node can't be deleted";
                }

                SimpleTasksDataContext ctx = this.DBContext;

                Category category = (from tl in ctx.Categories
                                     where tl.ID == nodeId
                                     select tl).First();

                // remove children lists
                foreach (Category childrenList in category.Categories)
                {
                    ctx.Categories.DeleteOnSubmit(childrenList);
                }

                // remove category
                ctx.Categories.DeleteOnSubmit(category);

                ctx.SubmitChanges();
                e.Accept = true;
            }
            catch (Exception exception)
            {
                e.Accept         = false;
                e.RefusalMessage = exception.Message;
            }
        }
예제 #10
0
        public TaskWindow(int taskId) : this()
        {
            this.ID     = "TaskWindow_" + taskId;
            this.taskId = taskId;

            SimpleTasksDataContext ctx = this.DBContext;
            Task task = (from t in ctx.Tasks where t.ID == taskId select t).First();

            this.Title = "Task - " + task.Title.Ellipsis(40);

            if (task.Completed)
            {
                Component msg = (Component)this.formPanel.Items[0];
                msg.Hidden      = false;
                msg.AutoEl.Html = "This task was completed on " + task.CompletedDate.Value.ToString("dddd, MMMM dd, yyyy");
            }

            this.toolbar.Items[0].Hidden = task.Completed;
            this.toolbar.Items[1].Hidden = !task.Completed;

            this.cbxReminder.Disabled = task.Completed;
            this.dfReminder.Disabled  = task.Completed;

            if (!task.Completed)
            {
                this.cbxReminder.Checked = task.Reminder.HasValue;

                if (task.Reminder.HasValue)
                {
                    this.dfReminder.SelectedDate = task.Reminder.Value;
                }
            }

            this.taskSubject.Text             = task.Title;
            this.dueDate.SelectedDate         = task.DueDate;
            this.taskCategory.Text            = task.Category.Name;
            this.taskCategory.UnderlyingValue = task.Category.ID.ToString();
            this.description.Text             = task.Description;

            this.CustomConfig.Add(new ConfigItem("taskId", taskId.ToString(), ParameterMode.Raw));

            this.InitLogic();
        }
예제 #11
0
        void TasksTree_RemoteAppend(object sender, RemoteAppendEventArgs e)
        {
            try
            {
                bool isFolder = bool.Parse(e.ExtraParams["isFolder"]);
                int  folderId = int.Parse(e.ParentNodeID);

                SimpleTasksDataContext ctx = this.DBContext;

                IEnumerable <Category> query = from tl in ctx.Categories
                                               where (tl.IsFolder == isFolder && tl.ParentID == folderId && tl.Name == e.Text)
                                               select tl;

                if (query.Count() > 0)
                {
                    e.Accept         = false;
                    e.RefusalMessage = "Such {0} is existing in the parent folder".FormatWith(isFolder ? "folder" : "category");
                    return;
                }

                Category category = new Category
                {
                    Name     = e.Text,
                    IsFolder = isFolder,
                    ParentID = folderId
                };

                ctx.Categories.InsertOnSubmit(category);
                ctx.SubmitChanges();

                e.NodeID = category.ID.ToString();

                e.Accept = true;
            }
            catch (Exception exception)
            {
                e.Accept         = false;
                e.RefusalMessage = exception.Message;
            }
        }
예제 #12
0
        public bool AddTask(string title, int categoryID, DateTime due)
        {
            if (title.IsEmpty())
            {
                Ext.Net.X.Msg.Show(new MessageBoxConfig
                {
                    Title   = "Add task error",
                    Message = "Title is missing",
                    Icon    = MessageBox.Icon.ERROR,
                    Buttons = MessageBox.Button.OK
                });

                return(false);
            }

            if (due == DateTime.MinValue)
            {
                Ext.Net.X.Msg.Show(new MessageBoxConfig
                {
                    Title   = "Add task error",
                    Message = "Due date is missing",
                    Icon    = MessageBox.Icon.ERROR,
                    Buttons = MessageBox.Button.OK
                });

                return(false);
            }

            try
            {
                SimpleTasksDataContext ctx = this.DBContext;

                Category category = (from tl in ctx.Categories where tl.ID == categoryID select tl).First();

                Task task = new Task();
                task.Title    = title;
                task.Category = category;
                task.DueDate  = due;
                ctx.Tasks.InsertOnSubmit(task);

                ctx.SubmitChanges();

                this.store.Add(new
                {
                    task.ID,
                    task.CategoryID,
                    task.Category.Name,
                    task.Title,
                    task.DueDate
                });

                ((RowSelectionModel)this.GetSelectionModel()).Select((object)task.ID);

                return(true);
            }
            catch (Exception e)
            {
                Ext.Net.X.Msg.Show(new MessageBoxConfig
                {
                    Title   = "Add task error",
                    Message = e.Message,
                    Icon    = MessageBox.Icon.ERROR,
                    Buttons = MessageBox.Button.OK
                });

                return(false);
            }
        }