Example #1
0
        //IWP 정보 세팅
        private async void SetIwp(int iwpId)
        {
            try
            {
                await _Workflow.GetIWPByIwpID(iwpId);
                fiwpDto = _Workflow.GetIWP().FirstOrDefault();

                txbIwpName.Text = fiwpDto.FiwpName;

                //Workflow 바인딩
                List<PendingWorkflow> pendingdto = new List<PendingWorkflow>();
                await _Workflow.GetPendingWorkflowByPackageTypeCode(PackageTypeCode, iwpId);

                if (_Workflow.GetPendingWorkflow().Count < 1)
                {
                    await _Workflow.GetWorkflowRoleTitleByPackageTypeCode(PackageTypeCode, iwpId);
                    isNewYN = "Y"; //신규
                }
                else
                    isNewYN = "N"; //저장된 내역

                pendingdto = _Workflow.GetPendingWorkflow();

                if (pendingdto != null && pendingdto.Count() > 0)
                {
                    ////Grid 자동생성 시
                    //GridLoadBind(pendingdto);  

                    //ListView 사용시
                    lvWorkflow.ItemsSource = pendingdto;
                }
                else
                    WinAppLibrary.Utilities.Helper.SimpleMessage("There is no workflow - Please create workflow first", "Loading Error");
                
            }
            catch (Exception ex)
            {

            }
        }
Example #2
0
        public async Task<DataLibrary.FiwpDTO> UpdateIwpPeriod(FiwpDTO iwp, string totalManhours)
        {
            Dictionary<string, dynamic> dParams = new Dictionary<string, dynamic>();
            dParams.Add("iwp", iwp);
            dParams.Add("totalManhours", totalManhours);

            return await JsonHelper.PutDataAsync<DataLibrary.FiwpDTO>("JsonUpdateIwpPeriod", dParams, JsonHelper.ProjectService);
        }
Example #3
0
        private FiwpDTO UpdateIwpPeriod_InnerCode(FiwpDTO iwp, decimal totalManhours, string userName, string password)
        {
            if (iwp != null)
            {
                int estimatedWorker = 0;
                decimal workHours = 0;
                DateTime startDt = iwp.StartDate;
                DateTime endDt = iwp.FinishDate;
                //string updatedBy = iwp.UpdatedBy;

                if (startDt != null && endDt != null)
                {
                    TimeSpan periodTs = endDt - startDt;

                    if (iwp.P6CalendarID > 0)
                    {
                        //Check P6Calendar
                        List<int> calendarIds = new List<int>();
                        calendarIds.Add(iwp.P6CalendarID);
                        (new TrueTask.P6Manager()).UpdateP6Calendar(calendarIds, userName, password, iwp.UpdatedBy);

                        //Calculate a workHours
                        List<StandardworkweekDTO> standards = GetStandardWorkWeekByExternalCalendar(iwp.P6CalendarID);
                        List<HolidayorexceptionDTO> holiExs = GetHolidayOrExceptionByDateExternalCalendar(startDt, endDt, iwp.P6CalendarID);

                        for (int i = 0; i <= periodTs.Days; i++)
                        {
                            List<HolidayorexceptionDTO> tempHoliExs = new List<HolidayorexceptionDTO>();
                            if (holiExs != null && holiExs.Count > 0)
                                tempHoliExs = holiExs.Where(x => x.HldyExpDate == startDt.AddDays(i)).ToList();

                            if (tempHoliExs != null && tempHoliExs.Count > 0)
                            {
                                workHours += tempHoliExs[0].WorkHours;
                            }
                            else
                            {
                                List<StandardworkweekDTO> tempStandards = new List<StandardworkweekDTO>();
                                if (standards != null && standards.Count > 0)
                                    tempStandards = standards.Where(y => y.DayOfWeek == (int)startDt.AddDays(i).DayOfWeek).ToList();

                                if (tempStandards != null && tempStandards.Count > 0)
                                    workHours += tempStandards[0].WorkHours;
                            }
                        }
                    }
                    else
                    {
                        //temp
                        int holiDays = (periodTs.Days / 7) * 2;
                        workHours = ((periodTs.Days + 1) - holiDays) * 10;
                    }

                    if (workHours > 0)
                        estimatedWorker = Convert.ToInt32(Math.Ceiling(totalManhours / workHours));
                }

                iwp.TotalManhours = totalManhours;
                iwp.CrewMembersAssigned = estimatedWorker;
            }
            return iwp;
        }
Example #4
0
        private void DoUpdateFIWPToP6(FiwpDTO fiwp, string userName, string password)
        {
            #region "update P6"
            P6WS.ActivityService.Activity[] fiwpAct = (new P6Manager()).ReadActivities(fiwp.P6ActivityObjectID, userName, password);
            if (fiwpAct != null && fiwpAct.Count() > 0)
            {

                fiwpAct[0].StartDate = Convert.ToDateTime(fiwp.StartDate.ToLongDateString() + " 07:00:00 AM");  //fiwp.StartDate;
                fiwpAct[0].StartDateSpecified = true;
                fiwpAct[0].RemainingDuration = (double)fiwp.P6RemainingDuration;
                fiwpAct[0].RemainingDurationSpecified = true;
                //fiwpAct[0].AtCompletionDuration = (double)fiwp.P6RemainingDuration;
                //fiwpAct[0].AtCompletionDurationSpecified = true;
                fiwpAct[0].Name = fiwp.FiwpName;
                fiwpAct[0].FinishDate = Convert.ToDateTime(fiwp.FinishDate.ToLongDateString() + " 05:00:00 PM");  //fiwp.FinishDate;
                fiwpAct[0].FinishDateSpecified = true;

                fiwpAct = (new P6Manager()).UpdateActivities(fiwpAct, userName, password);

                if (fiwpAct != null && fiwpAct.Count() > 0)
                {
                    //update fiwp
                    fiwp.DTOStatus = (int)RowStatusNo.Update;
                    fiwp.StartDate = fiwpAct[0].StartDate;
                    fiwp.FinishDate = fiwpAct[0].FinishDate;
                    //fiwp.P6RemainingDuration = (decimal)fiwpAct[0].RemainingDuration;
                }
            }
            #endregion "update P6"
        }
Example #5
0
        private void DoRemoveFIWPFromP6(FiwpDTO fiwp, string userName, string password)
        {
            if (fiwp.TotalManhours == 0)
            {
                P6WS.ActivityService.Activity[] fiwpAct = (new P6Manager()).ReadActivities(fiwp.P6ActivityObjectID, userName, password);
                if (fiwpAct != null && fiwpAct.Count() > 0)
                {
                    int[] ids = new int[1];
                    ids[0] = (int)fiwpAct[0].ObjectId;
                    bool results = (new P6Manager()).DeleteActivities(ids, userName, password);

                    if (!results)
                        throw new Exception("Not able to delete IWP from P6.");
                }
            }
        }
Example #6
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
        }
Example #7
0
        public FiwpDTO UpdateIwpPeriod(FiwpDTO iwp, decimal totalManhours, string userName, string password)
        {
            if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
            {
                string[] P6LoginInfo = (new P6Manager()).GetP6Login();
                userName = P6LoginInfo[0];
                password = P6LoginInfo[1];
            }

            //TrueTask App에서 넘어오는 FiwpDTO가 완전한 형태가 아니기때문에 조회 후 update한다.
            List<FiwpDTO> iwps = new List<FiwpDTO>();

            FiwpDTO fiwp = GetSingleFiwpByID(iwp.FiwpID);
            fiwp.StartDate = iwp.StartDate;
            fiwp.FinishDate = iwp.FinishDate;
            fiwp.UpdatedBy = iwp.UpdatedBy;
            fiwp.DTOStatus = (int)RowStatusNo.Update;

            iwp = UpdateIwpPeriod_InnerCode(fiwp, totalManhours, userName, password);

            #region "Update FIWP info to P6"
            //switch (fiwp.DTOStatus)
            //{
                //case (int)RowStatus.New:
                //    DoProcessFIWPWBS(dbname, list.fiwp, userName, password);
                //    break;
                //case (int)RowStatus.Update:
            if (iwp.CrewMembersAssigned > 0)
                iwp.P6RemainingDuration = (decimal)Math.Round(iwp.TotalManhours / iwp.CrewMembersAssigned, 4);
            DoUpdateFIWPToP6(iwp, userName, password);
                    //break;
                //case (int)RowStatus.Delete:
                //    DoRemoveFIWPFromP6(dbname, list.fiwp, userName, password);
                //    break;
            //}
            #endregion

            iwps.Add(iwp);
            //Update to Iwp
            iwps = SaveIwp(iwps);
            if (iwps.Count > 0)
                iwp = iwps[0];

            return iwp;
        }
 public FiwpDTO JsonUpdateIwpPeriod(FiwpDTO iwp, string totalManhours)
 {
     return (new Element.Sigma.Web.Biz.TrueTask.Build()).UpdateIwpPeriod(iwp, Convert.ToDecimal(totalManhours), null, null);
 }