Пример #1
0
    public string GetProjectListHTML()
    {
        System.Collections.ArrayList arrayList = DBProject.LoadProjects();
        string text = "<table border=1 ><tr><td>项目名称</td><td>项目UID</td><td></td></tr>";

        foreach (System.Collections.Hashtable hashtable in arrayList)
        {
            string text2 = hashtable["UID_"].ToString();
            object obj   = text;
            text = string.Concat(new object[]
            {
                obj,
                "<tr><td>",
                hashtable["NAME_"],
                "</td><td>",
                text2,
                "</td><td><a href='Project.html?id=",
                text2,
                "'>打开</a> <a href='DeleteProject.aspx?id=",
                text2,
                "'>删除</a> <a href='ExportProject.aspx?id=",
                text2,
                "'>导出</a></td></tr>"
            });
        }
        text += "</table>";
        return(text);
    }
Пример #2
0
    protected void btnVersion_Click(object sender, System.EventArgs args)
    {
        string progressVerId = base.Request["id"];

        this.hfldProjectUID.Value = DBProject.ImportVersion(progressVerId, this.dropVersion.SelectedValue);
        base.RegisterScript("$('#raVersion').click();alert('系统提示:\\n\\n版本导入成功!');closeTab(true);");
    }
Пример #3
0
    protected void btnImport_Click(object sender, System.EventArgs e)
    {
        string         physicalApplicationPath = base.Request.PhysicalApplicationPath;
        string         text           = "UploadFiles\\Gantt\\";
        string         str            = physicalApplicationPath + text;
        HttpPostedFile httpPostedFile = base.Request.Files["fupData"];
        string         text2          = System.DateTime.Now.ToString("yyyyMMddhhmmss");
        string         str2           = httpPostedFile.FileName.Substring(httpPostedFile.FileName.LastIndexOf("."));

        text2 += str2;
        if (httpPostedFile.ContentLength > 0)
        {
            httpPostedFile.SaveAs(string.Format("{0}{1}{2}", physicalApplicationPath, text, text2));
            System.Text.StringBuilder    stringBuilder = new System.Text.StringBuilder();
            System.Collections.Hashtable hashtable     = PlusProject.Read(str + text2);
            Project project = new Project();
            project.Load(hashtable);
            project.OrderProjectByStart();
            System.Collections.ArrayList arrayList = (System.Collections.ArrayList)hashtable["Tasks"];
            arrayList          = TreeUtil.ToTree(arrayList, "children", "UID", "ParentTaskUID");
            hashtable["Tasks"] = arrayList;
            string text3 = base.Request["id"];
            this.hfldProjectUID.Value = text3;
            DBProject.ConvertXML(text3, hashtable);
            stringBuilder.Append("alert('系统提示:\\n\\nXML导入成功!');closeTab(true);");
            base.RegisterScript(stringBuilder.ToString());
        }
    }
Пример #4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string    progressVerId = base.Request["projectuid"];
        Hashtable o             = DBProject.LoadProject(progressVerId);
        string    s             = JSON.Encode(o);

        base.Response.Write(s);
    }
Пример #5
0
    protected void Page_Load(object sender, System.EventArgs e)
    {
        Project project = new Project();

        System.Collections.Hashtable data = project.GetData();
        string str = DBProject.SaveProject(data);

        base.Response.Write("新项目UID:" + str + ", 您可以在<a href='Projects.aspx'>项目列表</a>页面打开本项目");
    }
Пример #6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string    projectUID = base.Request["projectuid"];
        string    version    = base.Request["version"];
        Hashtable o          = DBProject.LoadProject(projectUID, version);
        string    s          = JSON.Encode(o);

        base.Response.Write(s);
    }
Пример #7
0
    protected void btnVersion_Click(object sender, System.EventArgs args)
    {
        int    version = System.Convert.ToInt32(this.dropVersion.SelectedValue);
        string text    = base.Request["id"];

        this.hfldProjectUID.Value = text;
        DBProject.ConvertVersion(text, version);
        base.RegisterScript("$('#raVersion').click();alert('系统提示:\\n\\n版本导入成功!');closeTab(true);");
    }
Пример #8
0
    protected void Page_Load(object sender, EventArgs e)
    {
        String projectuid = Request["projectuid"];

        Hashtable dataProject = DBProject.LoadProject(projectuid);

        String json = PluSoft.Utils.JSON.Encode(dataProject);

        Response.Write(json);
    }
Пример #9
0
        /// <summary>
        ///		ItemId, ItemName, Weight, StateId, CanDelete (int)
        /// </summary>
        public static DataTable GetList(DictionaryTypes dict)
        {
            DataTable dt = null;

            switch (dict)
            {
            case DictionaryTypes.Categories:
                dt = DBCommon.GetListCategoriesForDictionaries();
                break;

            case DictionaryTypes.IncidentSeverities:
                dt = DBIncident.GetListIncidentSeverityForDictionaries();
                break;

            case DictionaryTypes.IncidentTypes:
                dt = DBIncident.GetListIncidentTypesForDictionaries();
                break;

            case DictionaryTypes.ProjectTypes:
                dt = DBProject.GetListProjectTypesForDictionaries();
                break;

            case DictionaryTypes.ProjectCategories:
                dt = DBProject.GetListProjectCategoriesForDictionaries();
                break;

            case DictionaryTypes.IncidentCategories:
                dt = DBIncident.GetListIncidentCategoriesForDictionaries();
                break;

            case DictionaryTypes.Currency:
                dt = DBCommon.GetListCurrencyForDictionaries();
                break;

            case DictionaryTypes.DocumentStatus:
                dt = DBDocument.GetListDocumentStatusForDictionaries(Security.CurrentUser.LanguageId);
                break;

            case DictionaryTypes.ProjectPhases:
                dt = DBProject.GetListProjectPhasesForDictionaries();
                break;

            case DictionaryTypes.RiskLevels:
                dt = DBProject.GetListRiskLevelsForDictionaries();
                break;
            }

            if (dict != DictionaryTypes.ProjectPhases && dict != DictionaryTypes.RiskLevels && dt != null)
            {
                dt.Columns.Add("Weight", typeof(int));
            }

            return(dt);
        }
Пример #10
0
    protected void BindDrop()
    {
        int maxVersion = DBProject.GetMaxVersion(base.Request["id"]);

        for (int i = maxVersion; i > 0; i--)
        {
            string   text = i.ToString();
            ListItem item = new ListItem("版本" + text + ".0", text);
            this.dropVersion.Items.Add(item);
        }
    }
Пример #11
0
    protected void Page_Load(object sender, System.EventArgs e)
    {
        string text = System.Convert.ToString(base.Request["id"]);

        if (!string.IsNullOrEmpty(text))
        {
            DBProject.DeleteProject(text);
            base.Response.Write("项目删除成功。返回<a href='Projects.aspx'>项目列表</a>。");
            return;
        }
        base.Response.Write("请传入正确的项目UID");
    }
Пример #12
0
        private static void UpdateProjectType(int ProjectTypeId, string ProjectTypeName)
        {
            using (DbTransaction tran = DbTransaction.Begin())
            {
                string MetaClassName = String.Format("ProjectsEx_{0}", ProjectTypeId);

                MetaClass metaProjectTypeEx = MetaClass.Load(MetaClassName);
                metaProjectTypeEx.FriendlyName = ProjectTypeName;
                DBProject.UpdateProjectType(ProjectTypeId, ProjectTypeName);

                tran.Commit();
            }
        }
Пример #13
0
        public static void AddItem(string ItemName, int Param, DictionaryTypes dict)
        {
            if (!Company.CheckDiskSpace())
            {
                throw new MaxDiskSpaceException();
            }

            switch (dict)
            {
            case DictionaryTypes.Categories:
                DBCommon.AddCategory(ItemName);
                break;

            case DictionaryTypes.IncidentSeverities:
                DBIncident.AddIncidentSeverity(ItemName);
                break;

            case DictionaryTypes.IncidentTypes:
                DBIncident.AddIncidentType(ItemName);
                break;

            case DictionaryTypes.ProjectTypes:
                AddProjectType(ItemName);
                break;

            case DictionaryTypes.ProjectCategories:
                DBProject.AddProjectCategory(ItemName);
                break;

            case DictionaryTypes.IncidentCategories:
                DBIncident.AddIncidentCategory(ItemName);
                break;

            case DictionaryTypes.Currency:
                DBCommon.AddCurrency(ItemName);
                break;

            case DictionaryTypes.DocumentStatus:
                DBDocument.AddDocumentStatus(ItemName, Param);
                break;

            case DictionaryTypes.ProjectPhases:
                DBProject.AddProjectPhase(ItemName, Param);
                break;

            case DictionaryTypes.RiskLevels:
                DBProject.AddRiskLevel(ItemName, Param);
                break;
            }
        }
Пример #14
0
        private static void AddProjectType(string ProjectTypeName)
        {
            using (DbTransaction tran = DbTransaction.Begin())
            {
                int    ProjectTypeId = DBProject.AddProjectType(ProjectTypeName);
                string MetaClassName = String.Format("ProjectsEx_{0}", ProjectTypeId);

                MetaClass metaProjectTypeEx = MetaClass.Create(MetaClassName, ProjectTypeName, MetaClassName, MetaClass.Load("Projects"), false, "Project Type Extension");

                RebuildProjectsSearch(metaProjectTypeEx);

                tran.Commit();
            }
        }
Пример #15
0
        public static void UpdateItem(int ItemId, string ItemName, int Param, DictionaryTypes dict)
        {
            switch (dict)
            {
            case DictionaryTypes.Categories:
                DBCommon.UpdateCategory(ItemId, ItemName);
                break;

            case DictionaryTypes.IncidentSeverities:
                DBIncident.UpdateIncidentSeverity(ItemId, ItemName);
                break;

            case DictionaryTypes.IncidentTypes:
                DBIncident.UpdateIncidentType(ItemId, ItemName);
                break;

            case DictionaryTypes.ProjectTypes:
                UpdateProjectType(ItemId, ItemName);
                break;

//				case DictionaryTypes.Clients:
//					DBProject.UpdateClient(ItemId, ItemName);
//					break;
            case DictionaryTypes.ProjectCategories:
                DBProject.UpdateProjectCategory(ItemId, ItemName);
                break;

            case DictionaryTypes.IncidentCategories:
                DBIncident.UpdateIncidentCategory(ItemId, ItemName);
                break;

            case DictionaryTypes.Currency:
                DBCommon.UpdateCurrency(ItemId, ItemName);
                break;

            case DictionaryTypes.DocumentStatus:
                DBDocument.UpdateDocumentStatus(ItemId, ItemName, Param);
                break;

            case DictionaryTypes.ProjectPhases:
                DBProject.UpdateProjectPhase(ItemId, ItemName, Param);
                break;

            case DictionaryTypes.RiskLevels:
                DBProject.UpdateRiskLevel(ItemId, ItemName, Param);
                break;
            }
        }
Пример #16
0
        public static void DeleteItem(int ItemId, DictionaryTypes dict)
        {
            switch (dict)
            {
            case DictionaryTypes.Categories:
                DBCommon.DeleteCategory(ItemId);
                break;

            case DictionaryTypes.IncidentSeverities:
                DBIncident.DeleteIncidentSeverity(ItemId);
                break;

            case DictionaryTypes.IncidentTypes:
                DBIncident.DeleteIncidentType(ItemId);
                break;

            case DictionaryTypes.ProjectTypes:
                DeleteProjectType(ItemId);
                break;

//				case DictionaryTypes.Clients:
//					DBProject.DeleteClient(ItemId);
//					break;
            case DictionaryTypes.ProjectCategories:
                DBProject.DeleteProjectCategory(ItemId);
                break;

            case DictionaryTypes.IncidentCategories:
                DBIncident.DeleteIncidentCategory(ItemId);
                break;

            case DictionaryTypes.Currency:
                DBCommon.DeleteCurrency(ItemId);
                break;

            case DictionaryTypes.DocumentStatus:
                DBDocument.DeleteDocumentStatus(ItemId);
                break;

            case DictionaryTypes.ProjectPhases:
                DBProject.DeleteProjectPhase(ItemId);
                break;

            case DictionaryTypes.RiskLevels:
                DBProject.DeleteRiskLevel(ItemId);
                break;
            }
        }
Пример #17
0
    protected void Page_Load(object sender, EventArgs e)
    {
        String projectJSON = Request["project"];

        Hashtable dataProject = (Hashtable)PluSoft.Utils.JSON.Decode(projectJSON);

        /*如果传递了其他自定义参数,可以这样获取:
         *
         * String myField = Request["myField"];
         *
         */

        String projectUID = DBProject.SaveProject(dataProject);

        Response.Write(projectUID);
    }
Пример #18
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string text = base.Request["project"];

        if (!string.IsNullOrEmpty(text))
        {
            Hashtable dataProject = (Hashtable)JSON.Decode(text);
            try
            {
                string s = DBProject.SaveProject(dataProject);
                base.Response.Write(s);
            }
            catch
            {
                base.Response.Write("error");
            }
        }
    }
Пример #19
0
    protected void Page_Load(object sender, System.EventArgs e)
    {
        string text = System.Convert.ToString(base.Request["id"]);

        if (!string.IsNullOrEmpty(text))
        {
            System.Collections.Hashtable hashtable = DBProject.LoadProject(text);
            System.Collections.ArrayList tree      = (System.Collections.ArrayList)hashtable["Tasks"];
            hashtable["Tasks"] = TreeUtil.ToList(tree, "-1", "children", "UID", "ParentTaskUID");
            string text2 = System.IO.Path.GetFileNameWithoutExtension(System.Convert.ToString(hashtable["Name"])) + "_" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";
            string text3 = HttpContext.Current.Server.MapPath("~/UploadFiles/Gantt/");
            if (!System.IO.Directory.Exists(text3))
            {
                System.IO.Directory.CreateDirectory(text3);
            }
            string text4 = text3 + text2;
            PlusProject.Write(text4, hashtable);
            base.Response.Clear();
            System.IO.FileStream fileStream = null;
            try
            {
                fileStream = new System.IO.FileStream(text4, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
                int    num    = (int)fileStream.Length;
                byte[] buffer = new byte[num];
                int    count  = fileStream.Read(buffer, 0, num);
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(text2));
                HttpContext.Current.Response.OutputStream.Write(buffer, 0, count);
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
            }
            finally
            {
                fileStream.Close();
            }
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(text4);
            fileInfo.Delete();
            base.Response.End();
            return;
        }
        base.Response.Write("请传入正确的项目UID");
    }
Пример #20
0
        private static void DeleteProjectType(int ProjectTypeId)
        {
            using (DbTransaction tran = DbTransaction.Begin())
            {
                DBProject.DeleteProjectType(ProjectTypeId);

                string    MetaClassName = String.Format("ProjectsEx_{0}", ProjectTypeId);
                MetaClass mc            = MetaClass.Load(MetaClassName);

                MetaClass parent = mc.Parent;

                if (mc != null)
                {
                    MetaClass.Delete(mc.Id);
                }

                RebuildProjectsSearch(parent);

                tran.Commit();
            }
        }
Пример #21
0
        public static int GetSharingLevel(ObjectTypes ObjectType, int ObjectId)
        {
            int UserId = Security.CurrentUser.UserID;

            int RetVal = -1;

            switch (ObjectType)
            {
            case ObjectTypes.ToDo:
                RetVal = DBToDo.GetSharingLevel(UserId, ObjectId);
                break;

            case ObjectTypes.Task:
                RetVal = DBTask.GetSharingLevel(UserId, ObjectId);
                break;

            case ObjectTypes.CalendarEntry:
                RetVal = DBEvent.GetSharingLevel(UserId, ObjectId);
                break;

            case ObjectTypes.Issue:
                RetVal = DBIncident.GetSharingLevel(UserId, ObjectId);
                break;

            case ObjectTypes.Project:
                RetVal = DBProject.GetSharingLevel(UserId, ObjectId);
                break;

            case ObjectTypes.Document:
                RetVal = DBDocument.GetSharingLevel(UserId, ObjectId);
                break;

            default:
                RetVal = -1;
                break;
            }
            return(RetVal);
        }
Пример #22
0
    protected void Page_Load(object sender, System.EventArgs e)
    {
        string text    = System.Convert.ToString(base.Request["id"]);
        string version = base.Request["version"];

        if (!string.IsNullOrEmpty(text))
        {
            System.Collections.Hashtable hashtable = DBProject.LoadProject(text, version);
            System.Collections.ArrayList tree      = (System.Collections.ArrayList)hashtable["Tasks"];
            hashtable["Tasks"] = TreeUtil.ToList(tree, "-1", "children", "UID", "ParentTaskUID");
            string text2 = System.IO.Path.GetFileNameWithoutExtension(System.Convert.ToString(hashtable["Name"])) + "_" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";
            string text3 = HttpContext.Current.Server.MapPath("~/UploadFiles/Gantt/" + text2);
            PlusProject.Write(text3, hashtable);
            base.Response.Clear();
            base.Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(text2, System.Text.Encoding.UTF8));
            base.Response.WriteFile(text3);
            base.Response.Flush();
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(text3);
            fileInfo.Delete();
            base.Response.End();
            return;
        }
        base.Response.Write("请传入正确的项目UID");
    }
Пример #23
0
        private static void ProcessGlobalSubscription(int hookId, DateTypes dateType, ObjectTypes objectType, int?objectId, Guid?objectUid)
        {
            // Формируем список пользователей, связанных с объектом
            List <int> users = new List <int>();

            if (objectType == ObjectTypes.Project)
            {
                using (IDataReader reader = DBProject.GetProjectSecurity(objectId.Value))
                {
                    while (reader.Read())
                    {
                        users.Add((int)reader["UserId"]);
                    }
                }
            }
            else if (objectType == ObjectTypes.Task)
            {
                using (IDataReader reader = DBTask.GetTaskSecurity(objectId.Value))
                {
                    while (reader.Read())
                    {
                        if ((bool)reader["IsRealTaskResource"] || (bool)reader["IsRealTaskManager"] || (bool)reader["IsCreator"])
                        {
                            users.Add((int)reader["UserId"]);
                        }
                    }
                }
            }
            else if (objectType == ObjectTypes.ToDo)
            {
                using (IDataReader reader = DBToDo.GetToDoSecurity(objectId.Value))
                {
                    while (reader.Read())
                    {
                        users.Add((int)reader["UserId"]);
                    }
                }
            }
            else if (objectType == ObjectTypes.CalendarEntry)
            {
                using (IDataReader reader = DBEvent.GetListUsersForEvent(objectId.Value))
                {
                    while (reader.Read())
                    {
                        users.Add((int)reader["UserId"]);
                    }
                }
            }
            else if (objectType == ObjectTypes.Document)
            {
                using (IDataReader reader = DBDocument.GetDocumentSecurity(objectId.Value))
                {
                    while (reader.Read())
                    {
                        users.Add((int)reader["UserId"]);
                    }
                }
            }
            else if (objectType == ObjectTypes.Assignment)
            {
                AssignmentEntity entity = (AssignmentEntity)BusinessManager.Load(AssignmentEntity.ClassName, (PrimaryKeyId)objectUid.Value);
                if (entity != null && entity.OwnerDocumentId.HasValue)
                {
                    using (IDataReader reader = DBDocument.GetDocumentSecurity(entity.OwnerDocumentId.Value))
                    {
                        while (reader.Read())
                        {
                            users.Add((int)reader["UserId"]);
                        }
                    }
                }
            }

            // Проверим отсутствие индивидуальной подписки
            for (int i = 0; i < users.Count; i++)
            {
                int userId = users[i];

                // O.R. [2010-04-01]: Don't process inactive users
                if (User.GetUserActivity(userId) != User.UserActivity.Active)
                {
                    users.RemoveAt(i);
                    i--;
                }
                else if (objectId.HasValue)
                {
                    if (GetSubscriptionType(dateType, userId, objectId.Value) != SubscriptionTypes.Global)
                    {
                        users.RemoveAt(i);
                        i--;
                    }
                }
            }

            // Send Reminder
            if (users.Count > 0)
            {
                SendReminder(dateType, objectType, objectId, objectUid, users);
            }
        }
Пример #24
0
        public IGTDSystem makeSystem(IUser owner)
        {
            GTDSystem sys = new GTDSystem(owner);
            IDictionary<int, ISingleTask> taskMap = new Dictionary<int, ISingleTask>();
            IDictionary<int, IProject> projectMap = new Dictionary<int, IProject>();
            //IDictionary<int, IStaticList> listMap = new Dictionary<int, IStaticList>();

            DataClassesDataContext db = dbProvider.Database;

            int usrid = dbProvider.IdManager.GetId(owner);

            foreach (Tasks t in db.Tasks.Where(item => item.Owner == usrid))
            {
                ISingleTask st = new DBSingleTask(t, dbProvider);
                taskMap.Add(t.Id, st);
            }

            IDictionary<string, IStaticList> defaultListsMap = new Dictionary<string, IStaticList>();
            string[] names = new string[] {"Inbox", "Waiting", "Someday"};
            foreach (var name in names)
            {
                IEnumerable<Lists> listResults = db.Lists.Where(list => list.Title == name && list.Owner == usrid);
                if (listResults.Count() == 0)
                {
                    // si la requete est vide, il n'y a pas de liste avec ce nom, donc aucune tache dedans
                    defaultListsMap.Add(name, makeContext(name, "", owner));
                }
                else { defaultListsMap.Add(name, createDBStaticList(listResults.First(), taskMap)); }
            }

            // Mise en place des tâches dans la Inbox
            sys.Inbox = defaultListsMap["Inbox"];

            // Mise en place des tâches dans Waiting
            sys.Waiting = defaultListsMap["Waiting"];

            // Mise en place des tâches dans Someday
            sys.Someday = defaultListsMap["Someday"];

            // Mise en place Contexts
            foreach (Lists list in db.Lists.Where(x => !names.Contains(x.Title)
                && x.Owner == usrid))
            {
                IStaticList stl = createDBStaticList(list, taskMap);
                sys.Contexts.Add(stl);
            }

            foreach (Projects project in db.Projects.Where(item => item.Owner == usrid))
            {
                IProject p = new DBProject(project, dbProvider);
                projectMap.Add(project.Id, p);
                sys.Projects.Add(p);
            }

            foreach (Projects_Tasks pt in db.Projects_Tasks.Where(item => item.Owner == usrid).OrderBy(item => item.Task_order))
                projectMap[pt.Project_id].AddTask(taskMap[pt.Task_id]);

            //selection des orphelins
            var orphans = db.Tasks.Where(item => item.Lists_Tasks.Count == 0).Select(item => taskMap[item.Id]);
            //ajout dans la inbox
            foreach (ISingleTask orphan in orphans)
                sys.Inbox.AddTask(orphan);

            return sys;
        }
Пример #25
0
 public override void Initialize()
 {
     base.Initialize();
     dbEntity = new DBProject(connManager);
 }
Пример #26
0
        private static void UpdateListResources(int objectId, DataTable items, bool checkAccess)
        {
            if (checkAccess)
            {
                VerifyCanModifyResources(objectId);
            }

            int  taskCompletionTypeId;
            bool taskMustBeConfirmed;
            bool taskIsCompleted;
            int  taskReasonId;
            int  taskProjectId;
            int  taskPercentCompleted;

            using (IDataReader reader = DBTask.GetTask(objectId, Security.CurrentUser.TimeZoneId, Security.CurrentUser.LanguageId))
            {
                reader.Read();

                taskCompletionTypeId = (int)reader["CompletionTypeId"];
                taskMustBeConfirmed  = (bool)reader["MustBeConfirmed"];
                taskIsCompleted      = (bool)reader["IsCompleted"];
                taskReasonId         = (int)reader["ReasonId"];
                taskProjectId        = (int)reader["ProjectId"];
                taskPercentCompleted = (int)reader["PercentCompleted"];
            }
            int managerId = DBProject.GetProjectManager(taskProjectId);

            ArrayList oldItems = new ArrayList();

            using (IDataReader reader = DBTask.GetListResources(objectId, Security.CurrentUser.TimeZoneId))
            {
                Common.LoadItems(reader, "UserId", oldItems);
            }

            ArrayList add = new ArrayList();
            ArrayList del = new ArrayList();

            foreach (DataRow row in items.Rows)
            {
                int id = (int)row["UserId"];
                if (oldItems.Contains(id))
                {
                    oldItems.Remove(id);
                }
                else
                {
                    add.Add(id);
                }
            }

            del.AddRange(oldItems);

            int cuid = Security.CurrentUser.UserID;

            using (DbTransaction tran = DbTransaction.Begin())
            {
                foreach (int id in del)
                {
                    DBCommon.DeleteGate((int)OBJECT_TYPE, objectId, id);

                    // O.R. [2009-02-12]
                    DBCalendar.DeleteStickedObject((int)OBJECT_TYPE, objectId, id);

                    DBTask.DeleteResource(objectId, id);

                    // OZ: User Role Addon
                    UserRoleHelper.DeleteTaskResourceRole(objectId, id);
                    if (id != managerId)
                    {
                        UserRoleHelper.DeleteTaskManagerRole(objectId, id);
                    }
                    //
                    SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_ResourceList_AssignmentDeleted, objectId, id);
                }

                foreach (DataRow row in items.Rows)
                {
                    int  id = (int)row["UserId"];
                    bool mustBeConfirmed = (bool)row["MustBeConfirmed"];
                    bool canManage       = (bool)row["CanManage"];
                    if (id == managerId)
                    {
                        canManage = true;
                    }

                    bool updated = true;

                    if (add.Contains(id))
                    {
                        DbTask2.AddResource(objectId, id, mustBeConfirmed, canManage);
                        if (User.IsExternal(id))
                        {
                            DBCommon.AddGate((int)OBJECT_TYPE, objectId, id);
                        }
                    }
                    else
                    {
                        updated = (0 < DbTask2.UpdateResource(objectId, id, mustBeConfirmed, canManage));
                    }

                    // OZ: User Role Addon
                    if (id != managerId)
                    {
                        UserRoleHelper.DeleteTaskManagerRole(objectId, id);
                    }
                    UserRoleHelper.DeleteTaskResourceRole(objectId, id);

                    if (canManage)
                    {
                        if (id != managerId)
                        {
                            UserRoleHelper.AddTaskManagerRole(objectId, id);
                        }
                    }
                    else
                    {
                        UserRoleHelper.AddTaskResourceRole(objectId, id);
                    }
                    //

                    if (updated)
                    {
                        if (mustBeConfirmed)
                        {
                            SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_ResourceList_RequestAdded, objectId, id);
                        }
                        else
                        {
                            SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_ResourceList_AssignmentAdded, objectId, id);
                        }
                    }
                }

                if (taskCompletionTypeId == (int)CompletionType.All)
                {
                    int overallPercent = Task.RecalculateOverallPercent(objectId);
                    if (taskPercentCompleted != overallPercent)
                    {
                        DBTask.UpdatePercent(objectId, overallPercent);
                        SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_Percent, objectId);
                    }

                    // Если задача была незавершённой, то при удалении людей, процент завершения может
                    // увеличиться и достигнуть 100%. Если при этом не требуется подтверждения менеджера,
                    // то произойдёт завершение задачи
                    if (!taskIsCompleted && !taskMustBeConfirmed && overallPercent == 100)
                    {
                        DBTask.UpdateCompletion(objectId, true, (int)CompletionReason.CompletedAutomatically);
                        Task.CompleteToDo(objectId);
                        Task.RecalculateAllStates(taskProjectId);
                    }

                    DBTask.RecalculateSummaryPercent(objectId);
                }

                tran.Commit();
            }
        }
        public void VerifyInitialBudget()
        {
            IInitialBudget         initialBudget   = BusinessObjectInitializer.CreateInitialBudget();
            ICostCenter            costCenter      = BusinessObjectInitializer.CreateCostCenter();
            IWorkPackage           workPackage     = BusinessObjectInitializer.CreateWorkPackage();
            IProject               project         = BusinessObjectInitializer.CreateProject();
            IProjectCoreTeamMember coreTeamMembers = BusinessObjectInitializer.CreateProjectCoreTeamMember();

            DBInitialBudget         dbInitialBudget     = new DBInitialBudget(connManager);
            DBGenericEntity         dbCostCenterEntity  = new DBCostCenter(connManager);
            DBGenericEntity         dbWorkPackageEntity = new DBWorkPackage(connManager);
            DBGenericEntity         dbProjectEntity     = new DBProject(connManager);
            DBProjectCoreTeamMember dbCoreteamMember    = new DBProjectCoreTeamMember(connManager);

            Random random = new Random();

            initialBudget.IdAssociate   = DATestUtils.DEFAULT_ASSOCIATE;
            initialBudget.IdPhase       = random.Next(1, 9);
            costCenter.Id               = random.Next(1000, 2000);
            costCenter.Name             = DATestUtils.GenerateString(50, true, false);
            costCenter.Code             = DATestUtils.GenerateString(10, true, true);
            costCenter.IdDepartment     = random.Next(1, 1);
            costCenter.IdInergyLocation = random.Next(1, 2);
            costCenter.IsActive         = true;

            workPackage.IdPhase          = initialBudget.IdPhase;
            workPackage.Code             = DATestUtils.GenerateString(3, true, true);
            workPackage.Name             = DATestUtils.GenerateString(30, true, false);
            workPackage.Rank             = random.Next(1, 100);
            workPackage.IsActive         = true;
            workPackage.StartYearMonth   = random.Next(2000, 2079) * 100 + random.Next(1, 12);
            workPackage.EndYearMonth     = random.Next(2000, 2079) * 100 + random.Next(1, 12);
            workPackage.LastUpdate       = DateTime.Today;
            workPackage.IdLastUserUpdate = DATestUtils.DEFAULT_ASSOCIATE;
            project.Name          = DATestUtils.GenerateString(50, true, false);
            project.Code          = DATestUtils.GenerateString(10, true, true);
            project.IdProgram     = random.Next(1, 2);
            project.IdProjectType = random.Next(1, 2);
            project.IsActive      = true;

            initialBudget.Sales       = random.Next(50000, 1000000);
            initialBudget.TotalHours  = random.Next(1, 100);
            initialBudget.ValuedHours = random.Next(1, 100);
            initialBudget.YearMonth   = DATestUtils.DEFAULT_YEAR_MONTH;

            int newId = InsertCostCenterTest(costCenter, dbCostCenterEntity);

            //Verifies that the id returned by the insert method is greater than 0
            Assert.Greater(newId, 0);
            initialBudget.IdCostCenter = newId;

            newId = InsertProjectTest(project, dbProjectEntity);
            //Verifies that the id returned by the insert method is greater than 0
            Assert.Greater(newId, 0);
            initialBudget.IdProject   = newId;
            workPackage.IdProject     = initialBudget.IdProject;
            coreTeamMembers.IdProject = initialBudget.IdProject;

            newId = InsertWorkPackageTest(workPackage, dbWorkPackageEntity);
            //Verifies that the id returned by the insert method is greater than 0
            Assert.Greater(newId, 0);
            initialBudget.IdWP = newId;

            InsertInitialBudgetMasterTest(initialBudget, dbInitialBudget);

            coreTeamMembers.IdAssociate = DATestUtils.DEFAULT_ASSOCIATE;
            coreTeamMembers.IdFunction  = DATestUtils.DEFAULT_PROJECT_FUNCTION;

            //verify if have core team member
            DataTable dsCoreMember = SelectProjectCoreTeamMemberTest(coreTeamMembers, dbCoreteamMember).Tables[0];

            if (dsCoreMember.Rows.Count == 0)
            {
                int IdCoreteammember = InsertProjectCoreTeamMemberTest(coreTeamMembers, dbCoreteamMember);
            }

            InsertInitialBudgetTest(initialBudget, dbInitialBudget);

            UpdateInitialBudgetTest(initialBudget, dbInitialBudget);

            DBWPPreselection tempTable = new DBWPPreselection(connManager);

            tempTable.BulkInsert("CREATE TABLE #BUDGET_PRESELECTION_TEMP (IdProject INT NOT NULL, IdPhase INT NOT NULL, IdWP INT NOT NULL)");
            tempTable.BulkInsert("INSERT  INTO #BUDGET_PRESELECTION_TEMP (IdProject,IdPhase,IdWP) VALUES (" + initialBudget.IdProject.ToString() + "," + initialBudget.IdPhase.ToString() + "," + initialBudget.IdWP.ToString() + ")");

            DataSet InitialBudgetDS = SelectInitialBudgetTest(initialBudget, dbInitialBudget);
            //Verifies that the table is not null
            DataTable tableVerifyPhases       = InitialBudgetDS.Tables[0];
            DataTable tableVerifyWorkPackages = InitialBudgetDS.Tables[1];
            DataTable tableVerifyCostCenters  = InitialBudgetDS.Tables[2];

            Assert.IsNotNull(tableVerifyPhases, "The table returned should not be null");
            Assert.IsNotNull(tableVerifyWorkPackages, "The table returned should not be null");
            Assert.IsNotNull(tableVerifyCostCenters, "The table returned should not be null");
            //Verifies that the first table is not null
            Assert.IsNotNull(tableVerifyPhases, "The table returned should not be null");
            //Verifies that the table returns the correcty columns
            DATestUtils.CheckColumn(tableVerifyPhases, 0, "IdProject");
            DATestUtils.CheckColumn(tableVerifyPhases, 1, "IdPhase");
            DATestUtils.CheckColumn(tableVerifyPhases, 2, "PhaseName");
            DATestUtils.CheckColumn(tableVerifyPhases, 3, "TotalHours");
            DATestUtils.CheckColumn(tableVerifyPhases, 4, "Averate");
            DATestUtils.CheckColumn(tableVerifyPhases, 5, "ValuedHours");
            DATestUtils.CheckColumn(tableVerifyPhases, 6, "OtherCosts");
            DATestUtils.CheckColumn(tableVerifyPhases, 7, "Sales");
            DATestUtils.CheckColumn(tableVerifyPhases, 8, "NetCosts");
            //Verifies that the second table is not null
            Assert.IsNotNull(tableVerifyWorkPackages, "The table returned should not be null");
            //Verifies that the table returns the correcty columns
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 0, "IdProject");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 1, "IdPhase");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 2, "IdWP");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 3, "WPName");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 4, "StartYearMonth");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 5, "EndYearMonth");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 6, "TotalHours");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 7, "Averate");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 8, "ValuedHours");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 9, "OtherCosts");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 10, "Sales");
            DATestUtils.CheckColumn(tableVerifyWorkPackages, 11, "NetCosts");
            //Verifies that the third table is not null
            Assert.IsNotNull(tableVerifyWorkPackages, "The table returned should not be null");
            //Verifies that the table returns the correcty columns
            DATestUtils.CheckColumn(tableVerifyCostCenters, 0, "IdProject");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 1, "IdPhase");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 2, "IdWP");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 3, "IdCostCenter");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 4, "CostCenterName");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 5, "TotalHours");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 6, "Averate");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 7, "ValuedHours");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 8, "OtherCosts");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 9, "Sales");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 10, "NetCosts");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 11, "IdCurrency");
            DATestUtils.CheckColumn(tableVerifyCostCenters, 12, "CurrencyCode");

            DeleteInitialBudgetTest(initialBudget, dbInitialBudget);

            int rowCount = DeleteCostCenterTest(costCenter, dbCostCenterEntity);

            //Verifies that one and only one row is affected by the delete
            Assert.AreEqual(1, rowCount);

            rowCount = DeleteWorkPackageTest(workPackage, dbWorkPackageEntity);
            //Verifies that one and only one row is affected by the delete
            Assert.AreEqual(1, rowCount);

            //Verifies that one and only one row is affected by the delete
            rowCount = DeleteProjectCoreTeamMemberTest(coreTeamMembers, dbCoreteamMember);
            Assert.AreEqual(1, rowCount);

            rowCount = DeleteProjectTest(project, dbProjectEntity);
            //Verifies that one and only one row is affected by the delete
            Assert.AreEqual(1, rowCount);
        }
Пример #28
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="LanguageId"></param>
 /// <returns></returns>
 public static IDataReader GetListProjectStatus(int LanguageId)
 {
     return(DBProject.GetListProjectStatus(LanguageId));
 }