public async Task<DataLibrary.ProjectscheduleDTO> UpdateProjectSchedulePeriod(ProjectscheduleDTO schedule, string totalManhours) { Dictionary<string, dynamic> dParams = new Dictionary<string, dynamic>(); dParams.Add("schedule", schedule); dParams.Add("totalManhours", totalManhours); return await JsonHelper.PutDataAsync<DataLibrary.ProjectscheduleDTO>("JsonUpdateProjectSchedulePeriod", dParams, JsonHelper.ProjectService); }
public ProjectscheduleDTO UpdateProjectSchedulePeriod(ProjectscheduleDTO schedule, decimal totalManhours, string userName, string password) { if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password)) { string[] P6LoginInfo = (new P6Manager()).GetP6Login(); userName = P6LoginInfo[0]; password = P6LoginInfo[1]; } if (schedule != null) { List<ProjectscheduleDTO> schedules = new List<ProjectscheduleDTO>(); int estimatedWorker = 0; decimal workHours = 0; DateTime startDt = schedule.StartDate; DateTime endDt = schedule.FinishDate; if (startDt != null && endDt != null) { TimeSpan periodTs = endDt - startDt; if (schedule.P6CalendarID > 0) { //Check P6Calendar List<int> calendarIds = new List<int>(); calendarIds.Add(schedule.P6CalendarID); (new TrueTask.P6Manager()).UpdateP6Calendar(calendarIds, userName, password, schedule.UpdatedBy); //Calculate a workHours List<StandardworkweekDTO> standards = GetStandardWorkWeekByExternalCalendar(schedule.P6CalendarID); List<HolidayorexceptionDTO> holiExs = GetHolidayOrExceptionByDateExternalCalendar(startDt, endDt, schedule.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)); } schedule.TotalWorkingHours = totalManhours; schedule.CrewMembersAssigned = estimatedWorker; schedules.Add(schedule); //Update to projectschedule schedules = SaveProjschedule(schedules); if (schedules.Count > 0) schedule = schedules[0]; } return schedule; }
/// <summary> /// SaveFIWP /// </summary> /// <param name="fiwps"></param> /// <param name="userName"></param> /// <param name="password"></param> /// <returns></returns> /// [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)] public List<FiwpDTO> SaveFIWP(List<FiwpDTO> fiwps) { string userName = string.Empty; string password = string.Empty; try { if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password)) { string[] P6LoginInfo = (new P6Manager()).GetP6Login(); userName = P6LoginInfo[0]; password = P6LoginInfo[1]; } //if (isUsingMpp) //{ // // project id, so get last project loaded in projectschedule. // //MppHelper.Instance.GetProjectInstance(fiwps[0].ProjectID); //} ProjectscheduleDTO projectSchedule = new ProjectscheduleDTO(); //bool dochange = false; //List<ProjectscheduleDTO> schedule = new List<ProjectscheduleDTO>(); //int i = 0; foreach (FiwpDTO fiwp in fiwps) { //if (fiwp.CrewMembersAssigned == 0) // fiwp.CrewMembersAssigned = GetFIWPManPower(dbname, fiwp.DepartStructureID, true); //// Check to value in case of P6Calendar was haven't to higher than 0 when doing assignment //if (fiwp.P6CalendarID > 0 && fiwp.DTOStatus != (int)RowStatus.New) // DoCheckProjectScheduleConstrain(dbname, fiwp, userName, password); //if (!string.IsNullOrEmpty(fiwps[i].ExceptionMessage)) //{ // if (fiwps[i].ExceptionMessage.Contains("Update ProjectSchedule")) // dochange = true; // else if (!string.IsNullOrEmpty(fiwps[i].ExceptionMessage)) // throw new Exception(fiwps[i].ExceptionMessage); //} //if (fiwp.PackageTypeLUID == PackageType.SIWP && (fiwp.P6ActivityID == "0" || string.IsNullOrEmpty(fiwp.P6ActivityID))) //{ // fiwp.P6CalendarID = 0; // DoProcessFIWPWBS(dbname, fiwp, userName, password); //} //else //{ switch (fiwp.DTOStatus) { case (int)RowStatusNo.New: DoProcessFIWPWBS(fiwp, userName, password); break; case (int)RowStatusNo.Update: DoUpdateFIWPToP6(fiwp, userName, password); break; case (int)RowStatusNo.Delete: DoRemoveFIWPFromP6(fiwp, userName, password); break; } //} //if (dochange) // schedule = UpdateFIWPOutcomeProjectScheduleAndP6(dbname, fiwp, userName, password); } //if (fiwps[0].CWPID <= 0) //{ // ProjectscheduleDTO d = (new Element.Reveal.Server.DALC.ProjectscheduleDAL()).GetSignleProjscheduleByID(dbname, fiwps[0].ProjectScheduleID); // fiwps[0].CWPID = d.CWPID; //} //fiwps = (new Element.Reveal.Server.DALC.FiwpDAL()).SaveIwp(dbname, fiwps, RowStatus.None); fiwps = SaveIwp(fiwps); } catch (Exception ex) { throw ex; } #region "temp hidden" //finally //{ // if (isUsingMpp) // { // //MppHelper.Instance.Close(true); // //MppHelper.Instance.CloseProjectInstance(); // } //} #endregion return fiwps; }
public ProjectscheduleDTO JsonUpdateProjectSchedulePeriod(ProjectscheduleDTO schedule, string totalManhours) { return (new Element.Sigma.Web.Biz.TrueTask.Build()).UpdateProjectSchedulePeriod(schedule, Convert.ToDecimal(totalManhours), null, null); }