/// <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); } }
/// <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; }
/// <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(); }
/// <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); }
/// <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); } } }
/// <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); }