コード例 #1
0
 /// <summary>
 /// Transpose recalculation value object to model object
 /// </summary>
 public Recalculation(RecalculationVO recalculationVO)
 {
     ID = recalculationVO.ID;
     RecalculationStatus = recalculationVO.RecalculationStatus;
     IsForUpliftRequired = recalculationVO.IsForUpliftRequired;
     IndexIds            = recalculationVO.IndexIds;
     LogFilePath         = recalculationVO.LogFilePath;
     RecalculationDate   = recalculationVO.RecalculationDate.HasValue ? recalculationVO.RecalculationDate : null;
     if (LogFilePath != null)
     {
         IsFileAvailable = IsFileExist(LogFilePath);
     }
 }
コード例 #2
0
        /// <summary>
        /// Set Recalculation status
        /// </summary>
        /// <param name="recalculationVO">recalculation VO object</param>
        /// <param name="status">new recalculation status</param>
        public void SetRecalculationStatus(RecalculationVO recalculationVO, int status)
        {
            //RecalculationVO recalculationVO = null;
            Recalculation recalculation = mdbDataContext.Recalculations.SingleOrDefault(r => r.ID == recalculationVO.ID);

            if (recalculation != null)
            {
                recalculation.Status      = status;
                recalculation.LogFilePath = recalculationVO.LogFilePath;
                //recalculationVO = new RecalculationVO(recalculation);
                mdbDataContext.SubmitChanges();
            }
            //return recalculationVO;
        }
コード例 #3
0
        /// <summary>
        /// Save Request for recalculation
        /// </summary>
        /// <param name="recalculationVO">Recalculation Value object</param>
        public void RequestForRecalculation(RecalculationVO recalculationVO)
        {
            //Insert New Record
            Recalculation recalculation = new Recalculation();

            recalculation.IndexIds            = recalculationVO.IndexIds;
            recalculation.IsForUpliftRequired = recalculationVO.IsForUpliftRequired;
            recalculation.Status = recalculationVO.Status;
            recalculation.Date   = DateTime.Now;
            recalculation.UserId = recalculationVO.CreatedByUserId.Value;

            mdbDataContext.Recalculations.InsertOnSubmit(recalculation);
            mdbDataContext.SubmitChanges();
        }
コード例 #4
0
        /// <summary>
        /// Request for recalculation
        /// </summary>
        /// <param name="Ids"></param>
        /// <param name="userId"></param>
        public void Recalculation(List <int> Ids, int?userId)
        {
            RecalculationVO recalculationVO = new RecalculationVO();

            string ids = null;

            foreach (var id in Ids)
            {
                ids += id + ";";
            }

            ids = ids.Remove(ids.Length - 1);

            recalculationVO.IndexIds            = ids;
            recalculationVO.IsForUpliftRequired = (Ids.Count == 1 && Ids[0] == 0) ? false : true;
            recalculationVO.Status            = Convert.ToInt32(Constants.RecalculationStatus.PENDING);
            recalculationVO.RecalculationDate = DateTime.Now;
            recalculationVO.CreatedByUserId   = userId;

            inflationIndexDAL.RequestForRecalculation(recalculationVO);
        }
コード例 #5
0
        /// <summary>
        /// Run recalculation process
        /// </summary>
        /// <param name="mdbConnectionString"></param>
        /// <param name="logFilePath"></param>
        private void Run(string mdbConnectionString, string logFilePath)
        {
            Recalculation recalculation = new Recalculation();

            //recalculation.RecalculateMilestones();

            MDBDataContext arbsDataContext = new MDBDataContext(mdbConnectionString);

            List <Library.DataAccess.LINQ.Recalculation> recalculations = arbsDataContext.Recalculations.Where(r => !r.IsDeleted &&
                                                                                                               r.Status == Convert.ToInt32(Library.Common.Constants.RecalculationStatus.PENDING) ||
                                                                                                               r.Status == Convert.ToInt32(Library.Common.Constants.RecalculationStatus.IN_PROGRESS)).ToList();

            if (recalculations.Count > 0)
            {
                bool isRecalculationInProgress = recalculations.Any(r => r.Status == Convert.ToInt32(Library.Common.Constants.RecalculationStatus.IN_PROGRESS));

                // IF recalculation not in running
                if (!isRecalculationInProgress)
                {
                    RecalculationVO recalculationVO = new RecalculationVO(recalculations.FirstOrDefault(r => r.Status == Convert.ToInt32(Library.Common.Constants.RecalculationStatus.PENDING)));
                    //if (recalculationVO != null)
                    //{
                    //    List<int> indexIds = new List<int>();

                    //    if (recalculationVO.IndexIds.Contains(";"))
                    //    {
                    //        string[] ids = recalculationVO.IndexIds.Split(';');
                    //        indexIds.AddRange(ids.Select(id => Convert.ToInt32(id)));
                    //    }
                    //    else
                    //    {
                    //        indexIds.Add(Convert.ToInt32(recalculationVO.IndexIds));
                    //    }
                    //}
                    recalculation.RecalculateMilestone(recalculationVO, 1);
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// Check whether any pending request for recalculation process
        /// </summary>
        /// <param name="ids"></param>
        public RecalculationVO GetRecalculationRequest()
        {
            // Get
            List <Recalculation> recalculations =
                mdbDataContext.Recalculations.Where(r => !r.IsDeleted &&
                                                    (r.Status == Convert.ToInt32(Constants.RecalculationStatus.PENDING) ||
                                                     r.Status == Convert.ToInt32(Constants.MilestoneStatus.IN_PROGRESS))).ToList();
            // Check is recalculation already running
            bool isRecalculationAlreadyRunning =
                recalculations.Any(r => r.Status == Convert.ToInt32(Constants.MilestoneStatus.IN_PROGRESS));

            RecalculationVO recalculationVO = null;

            if (!isRecalculationAlreadyRunning)
            {
                recalculationVO = (from recalculation in recalculations
                                   where
                                   (recalculation.Status == Convert.ToInt32(Constants.RecalculationStatus.PENDING))
                                   select new RecalculationVO(recalculation)).ToList().Min();
            }

            return(recalculationVO);
        }