Adroit.Data.Commands.RemoveProjectCommand.Do C# (CSharp) Method

Do() public method

public Do ( ) : void
return void
        public void Do()
        {
            var kvp = this.Projects.Locate (delegate (object lkey, object lvalue) {
                var lp = lvalue as Project;
                return (lp != null && lp.Id == this.Project.Id);
            });

            this.Id = Convert.ToUInt32 (kvp.Key);
            this.Projects.Delete (this.Id);

            if (m_taskCache == null) {
                m_taskCache = new List<Task> ();

                /* XXX: We need a BDB index here to prevent all the damn
                 *   deserialization.
                 */
                using (var cursor = Tasks.NewCursor ()) {
                    object key, value;
                    while (cursor.Get (BDB46.Cursor.Seek.Next, out key, out value))
                        if ((value as Task).ProjectId == Project.Id)
                            m_taskCache.Add (value as Task);
                }
            }

            foreach (var task in m_taskCache)
                TaskStorage.Remove (task);
        }
RemoveProjectCommand