Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
        /// <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);
 }