//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) { } }
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); }
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; }
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" }
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."); } } }
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 }
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); }