private static void DailyTasks() { DIYPTEntities db = new DIYPTEntities(); try { PrizeEmailWrapper.ExercisePlan2DaysPriorToStartEmailTask(); db.Database.Connection.Open(); DateTime today = PrizeCommonUtils.GetDayStart(PrizeCommonUtils.GetSystemDate()); PrizePollingTask task = (from c in db.PrizePollingTasks where c.TaskDate >= today && c.TaskType == (int)PrizeConstants.TasksType.DailyRedoAble select c).FirstOrDefault(); if (task == null || task.Count < 2) { PrizeMemberPlanManager.UpdateMemberPlans(); PrizeEmailWrapper.DailyEmailTask(); if (task == null) { task = new PrizePollingTask(); task.Status = "1"; task.TaskDate = PrizeCommonUtils.GetSystemDate(); task.TaskType = (int)PrizeConstants.TasksType.DailyRedoAble; task.Count = 1; db.PrizePollingTasks.Add(task); } else { task.Count++; } db.SaveChanges(); } } catch (Exception e) { PrizeLogs.SaveSystemErrorLog(0, 0, PrizeConstants.SystemErrorLevel.LevelSerious, typeof(RegisteredEvents).ToString(), "DailyTasks", e.Message, e.InnerException == null ? "" : e.InnerException.Message); return; } finally { db.Database.Connection.Close(); } }
public static bool UpdateMemberPlans() { using (DIYPTEntities db = new DIYPTEntities()) { try { db.Database.Connection.Open(); DateTime today = PrizeCommonUtils.GetDayStart(PrizeCommonUtils.GetSystemDate()); MemberExercisePlanWeek startingPlanWeek; String availableStatus = PrizeConstants.STATUS_PLAN_STARTED + PrizeConstants.STATUS_PLAN_PAID; IQueryable <MemberExercisePlan> plans = (from c in db.MemberExercisePlans where c.Status.Equals(availableStatus) orderby c.MemberId, c.Id select c); foreach (MemberExercisePlan plan in plans) { MemberExercisePlanWeek finishingPlanWeek = (from c in db.MemberExercisePlanWeeks where c.MemberExercisePlanId == plan.Id && c.EndDate <= today && c.Status.Equals(PrizeConstants.STATUS_PLAN_WEEK_STARTED) orderby c.ExercisePlanWeekId select c).FirstOrDefault(); if (finishingPlanWeek != null) { finishingPlanWeek.Status = PrizeConstants.STATUS_PLAN_WEEK_FINISHED; startingPlanWeek = (from c in db.MemberExercisePlanWeeks where c.StartDate >= finishingPlanWeek.EndDate && c.Status.Equals(PrizeConstants.STATUS_PLAN_WEEK_NOT_STARTED) && c.MemberExercisePlanId == plan.Id orderby c.StartDate select c).FirstOrDefault(); if (startingPlanWeek != null) { MemberPlanWeekResult finishingResult = (from c in db.MemberPlanWeekResults where c.MemberExercisePlanWeekId == finishingPlanWeek.Id select c).FirstOrDefault(); MemberPlanWeekResult startingResult = (from c in db.MemberPlanWeekResults where c.MemberExercisePlanWeekId == startingPlanWeek.Id select c).FirstOrDefault(); CopyWeekResult(ref startingResult, ref finishingResult); startingPlanWeek.Status = PrizeConstants.STATUS_PLAN_WEEK_STARTED; } else { plan.Status = PrizeConstants.STATUS_PLAN_FINISHED + PrizeConstants.STATUS_PLAN_PAID; } } } availableStatus = PrizeConstants.STATUS_PLAN_NOT_STARTED + PrizeConstants.STATUS_PLAN_PAID; plans = (from c in db.MemberExercisePlans where c.Status.Equals(availableStatus) orderby c.MemberId select c); foreach (MemberExercisePlan plan in plans) { startingPlanWeek = (from c in db.MemberExercisePlanWeeks where c.StartDate <= today && c.Status.Equals(PrizeConstants.STATUS_PLAN_WEEK_NOT_STARTED) && c.MemberExercisePlanId == plan.Id orderby c.StartDate select c).FirstOrDefault(); if (startingPlanWeek != null) { MemberPlanWeekResult startingResult = (from c in db.MemberPlanWeekResults where c.MemberExercisePlanWeekId == startingPlanWeek.Id select c).FirstOrDefault(); MemberExercisePlanWeek finishedWeek = (from c in db.MemberExercisePlanWeeks where c.EndDate < startingPlanWeek.StartDate && c.Status.Equals(PrizeConstants.STATUS_PLAN_WEEK_FINISHED) select c).FirstOrDefault(); if (finishedWeek != null) { MemberPlanWeekResult finishingResult = (from c in db.MemberPlanWeekResults where c.MemberExercisePlanWeekId == finishedWeek.Id select c).FirstOrDefault(); CopyWeekResult(ref startingResult, ref finishingResult); } startingPlanWeek.Status = PrizeConstants.STATUS_PLAN_WEEK_STARTED; plan.Status = PrizeConstants.STATUS_PLAN_STARTED + PrizeConstants.STATUS_PLAN_PAID; } } db.SaveChanges(); return(true); } catch (Exception e) { PrizeLogs.SaveSystemErrorLog(0, 0, PrizeConstants.SystemErrorLevel.LevelSerious, typeof(PrizeMemberPlanManager).ToString(), "UpdateMemberPlans", e.Message, e.InnerException == null ? "" : e.InnerException.Message); return(false); } finally { db.Database.Connection.Close(); } } }