예제 #1
0
        public virtual P6WS.ActivityService.Activity[] CreateActivity(P6WS.ActivityService.Activity newActivity, string userName, string password)
        {
            P6WS.ActivityService.Activity[] results = null;
            P6WS.ActivityService.Activity[] act = new P6WS.ActivityService.Activity[1];

            P6WS.ActivityService.ActivityPortBinding apb = new P6WS.ActivityService.ActivityPortBinding();
            apb.CookieContainer = P6Login(userName, password);
            apb.Url = System.Configuration.ConfigurationManager.AppSettings[P6WS_SERVICES_ACTIVITY_SERVICE].ToString();

            act[0] = newActivity;
            act[0].StartDateSpecified = true;
            act[0].FinishDateSpecified = true;
            act[0].ProjectObjectIdSpecified = true;
            act[0].WBSObjectIdSpecified = true;
            //act[0].CalendarObjectIdSpecified = true;

            int[] ids = apb.CreateActivities(act);

            if (ids.Length > 0)
            {
                results = new P6WS.ActivityService.Activity[ids.Length];
                for (int i = 0; i < ids.Length; i++)
                {
                    P6WS.ActivityService.Activity[] added = ReadActivities(ids[0], userName, password);
                    if (added.Length > 0)
                        results[i] = added[0];
                }

            }

            return results;
        }
예제 #2
0
        public virtual P6WS.ActivityService.Activity[] UpdateActivities(P6WS.ActivityService.Activity[] acts, string userName, string password)
        {
            P6WS.ActivityService.Activity[] results = null;
            P6WS.ActivityService.ActivityPortBinding apb = new P6WS.ActivityService.ActivityPortBinding();
            apb.CookieContainer = P6Login(userName, password);
            apb.Url = System.Configuration.ConfigurationManager.AppSettings[P6WS_SERVICES_ACTIVITY_SERVICE].ToString();

            P6WS.ActivityService.UpdateActivitiesResponse rtn = apb.UpdateActivities(acts);
            if (rtn.Return)
            {
                results = new P6WS.ActivityService.Activity[acts.Length];
                for (int i = 0; i < acts.Length; i++)
                {
                    P6WS.ActivityService.Activity[] updated = ReadActivities(acts[0].ObjectId, userName, password);
                    if (updated.Length > 0)
                        results[i] = updated[0];
                }
            }
            return results;
        }
예제 #3
0
        private void DoProcessFIWPWBS(FiwpDTO fiwp, string userName, string password)
        {
            int fipwWBSId = 0;
            P6ActivityDTO pWbs = (new P6Manager()).ReadWBSFilter(string.Format("ParentObjectId={0} and Code='{1}'", fiwp.P6ParentObjectID, "FIWP"), userName, password, fiwp.ProjectID);

            if (pWbs == null)
            {
                //create fiwp Work Breakdown Structure to P6.
                P6WS.WBSService.WBS newWbs = new P6WS.WBSService.WBS();
                newWbs.ProjectObjectId = fiwp.P6ActivityObjectID;
                newWbs.ProjectObjectIdSpecified = true;
                newWbs.Name = "WBSFIWP";
                newWbs.ParentObjectId = fiwp.P6ParentObjectID; //  for p6
                newWbs.ParentObjectIdSpecified = true;
                newWbs.Code = "FIWP";
                newWbs.StartDate = Convert.ToDateTime(fiwp.StartDate.ToLongDateString() + " 07:00:00 AM");  //fiwp.StartDate;
                newWbs.StartDateSpecified = true;
                newWbs.FinishDate = Convert.ToDateTime(fiwp.FinishDate.ToLongDateString() + " 05:00:00 PM");  //fiwp.FinishDate;
                newWbs.FinishDateSpecified = true;
                int[] ids = (new P6Manager()).CreateWBS(newWbs, userName, password);
                fipwWBSId = ids[0];
            }
            else
                fipwWBSId = pWbs.P6ActivityObjectID;

            //create P6 activity.
            P6WS.ActivityService.Activity act = new P6WS.ActivityService.Activity();
            act.Name = fiwp.FiwpName;
            act.StartDate = Convert.ToDateTime(fiwp.StartDate.ToLongDateString() + " 07:00:00 AM");  //fiwp.StartDate;
            act.FinishDate = Convert.ToDateTime(fiwp.FinishDate.ToLongDateString() + " 05:00:00 PM");  //fiwp.FinishDate;
            act.ProjectObjectId = fiwp.P6ParentObjectID;
            act.WBSObjectId = fipwWBSId;
            if (fiwp.DTOStatus == (int)RowStatusNo.Update) act.CalendarObjectId = fiwp.P6CalendarID;
            // fiwpAct should get calendar object id correctly.
            P6WS.ActivityService.Activity[] fiwpAct = (new P6Manager()).CreateActivity(act, userName, password);

            if (fiwpAct != null && fiwpAct.Count() > 0)
            {
                fiwp.P6ParentObjectID = (int)fiwpAct[0].WBSObjectId;
                fiwp.P6ActivityID = fiwpAct[0].Id;
                fiwp.P6ActivityObjectID = fiwpAct[0].ObjectId;
                fiwp.StartDate = fiwpAct[0].StartDate;
                fiwp.FinishDate = fiwpAct[0].FinishDate;
                fiwp.P6CalendarID = fiwpAct[0].CalendarObjectId;
                if (!CheckAndUpdateP6Calender(fiwp.P6CalendarID, userName, password, fiwp.UpdatedBy))
                    throw new Exception("Couldn't register new calendar");
                fiwp.WorkHours = 0m;
                List<StandardworkweekDTO> standardworkweek = GetStandardWorkWeekByExternalCalendar(fiwp.P6CalendarID);
                if (standardworkweek != null && standardworkweek.Count > 0)
                    fiwp.WorkHours = Convert.ToDecimal(standardworkweek.Average(x => x.WorkHours));
                //fiwp.P6RemainingDuration = (decimal)fiwpAct[0].RemainingDuration;
            }
            else
            {
                throw new Exception("Fail to create an activity for the Iwp.");
            }
            #region old code
            /*
            int fipwWBSId = 0;
            P6ActivityDTO pWbs;

            P6Manager manager = GetP6Manager();
            if (!isUsingMpp)
            {
                pWbs = manager.ReadWBSFilter(string.Format("ParentObjectId={0} and Code='{1}'", fiwp.P6ParentObjectID, "FIWP"), userName, password, fiwp.ProjectID);
            }
            else
            {
                pWbs = manager.ReadWBSFilter(string.Format("ParentObjectId={0} and Code='{1}'", fiwp.P6ActivityObjectID, "FIWP"), userName, password, fiwp.ProjectID);
            }

            if (pWbs == null)
            {
                if (!isUsingMpp)
                {
                    //create fiwp Work Breakdown Structure to P6.
                    P6WS.WBSService.WBS newWbs = new P6WS.WBSService.WBS();
                    newWbs.ProjectObjectId = fiwp.P6ActivityObjectID;
                    newWbs.ProjectObjectIdSpecified = true;
                    newWbs.Name = "WBSFIWP";

                    newWbs.ParentObjectId = fiwp.P6ParentObjectID; //  for p6

                    newWbs.ParentObjectIdSpecified = true;
                    newWbs.Code = "FIWP";
                    newWbs.StartDate = fiwp.StartDate;
                    newWbs.StartDateSpecified = true;
                    newWbs.FinishDate = fiwp.FinishDate;
                    newWbs.FinishDateSpecified = true;
                    int[] ids = (GetP6Manager()).CreateWBS(newWbs, userName, password);
                    fipwWBSId = ids[0];
                }
                else
                {
                    //create fiwp Work Breakdown Structure to P6.
                    P6WS.WBSService.WBS newWbs = new P6WS.WBSService.WBS();
                    newWbs.ProjectObjectId = fiwp.P6ActivityObjectID;
                    newWbs.ProjectObjectIdSpecified = true;
                    newWbs.Name = "WBSFIWP";

                    newWbs.ParentObjectId = fiwp.P6ActivityObjectID; // for mpp

                    newWbs.ParentObjectIdSpecified = true;
                    newWbs.Code = "FIWP";
                    newWbs.StartDate = fiwp.StartDate;
                    newWbs.StartDateSpecified = true;
                    newWbs.FinishDate = fiwp.FinishDate;
                    newWbs.FinishDateSpecified = true;
                    int[] ids = (GetP6Manager()).CreateWBS(newWbs, userName, password);
                    fipwWBSId = ids[0];

                }

            }
            else
                fipwWBSId = pWbs.P6ActivityObjectID;

            //create P6 activity.
            P6WS.ActivityService.Activity act = new P6WS.ActivityService.Activity();
            act.Name = fiwp.FiwpName;
            act.StartDate = fiwp.StartDate;
            act.FinishDate = fiwp.FinishDate;
            act.ProjectObjectId = fiwp.P6ParentObjectID;
            act.WBSObjectId = fipwWBSId;
            if (fiwp.DTOStatus == (int)RowStatus.Update) act.CalendarObjectId = fiwp.P6CalendarID;
            // fiwpAct should get calendar object id correctly.
            P6WS.ActivityService.Activity[] fiwpAct = (GetP6Manager()).CreateActivity(act, userName, password);

            if (fiwpAct.Count() > 0)
            {
                fiwp.P6ParentObjectID = (int)fiwpAct[0].WBSObjectId;
                fiwp.P6ActivityID = fiwpAct[0].Id;
                fiwp.P6ActivityObjectID = fiwpAct[0].ObjectId;
                fiwp.StartDate = fiwpAct[0].StartDate;
                fiwp.FinishDate = fiwpAct[0].FinishDate;
                fiwp.P6CalendarID = fiwpAct[0].CalendarObjectId;
                if (!CheckAndUpdateP6Calender(dbname, fiwp.P6CalendarID, userName, password))
                    throw new Exception("Couldn't register new calendar");

                fiwp.WorkHours = (new Reveal.Server.DALC.CalendarDAL()).GetStandardWorkhourByP6CalandarID(dbname, fiwp.P6CalendarID);
                fiwp.P6RemainingDuration = (decimal)fiwpAct[0].RemainingDuration;
            }
            else
            {
                throw new Exception("Fail to create an activity for a fiwp.");
            }*/
            #endregion
        }