public static void GenerateMasses(drogowskazEntities db, DateTime currentDate) { foreach (Rule r in db.Rules.ToList()) { GenerateMassesFromOneRule(r, db, currentDate); } }
protected override void OnCommand(CommandArgs e) { switch (e.Command) { case "previous": StartDate = StartDate.AddMonths(-1); break; case "next": StartDate = StartDate.AddMonths(1); break; case "today": StartDate = DateTime.Today; break; } var db = new drogowskazEntities(); Events = createEvents(db.Masses); DataIdField = "Id"; DataTextField = "Text"; DataStartField = "Start"; DataEndField = "End"; Update(CallBackUpdateType.Full); }
protected override void OnInit(InitArgs e) { var db = new drogowskazEntities(); Events = createEvents(db.Masses); DataIdField = "Id"; DataTextField = "Text"; DataStartField = "Start"; DataEndField = "End"; Update(); }
private static void GenerateMassesFromOneRule(Rule r, drogowskazEntities db, DateTime currentDate) { if (r.DateBegin != null && currentDate < r.DateBegin) { return; } if (r.DateEnd != null && currentDate >= r.DateEnd) { return; } DateTime dateAndTime = currentDate.AddMinutes(r.Hour.TotalMinutes); if (db.Masses.Where(m => m.DateAndTime == dateAndTime && m.ChurchId == r.ChurchId).Any()) { return; //TODO: kiedyś zrobić } int shift = r.DateShift ?? 0; DateTime dateShift = currentDate.AddDays(-shift); DateTime?dateBegin = r.DateBegin; switch (r.CycleType) { case CYCLE_TYPE_SINGULAR: ruleSingular(r, dateBegin, currentDate, db); break; case CYCLE_TYPE_HOLIDAY: ruleHoliday(r, dateShift, currentDate, db); break; case CYCLE_TYPE_MONTH: ruleMonth(r, dateShift, currentDate, db); break; case CYCLE_TYPE_CYCLE: ruleCycle(r, dateShift, currentDate, db); break; case CYCLE_TYPE_REPEAT_DAYS: ruleRepeatDays(r, dateShift, currentDate, db); break; case CYCLE_TYPE_REPEAT_DAY_IN_MONTH: ruleRepeatDayInMonth(r, dateShift, currentDate, db); break; default: throw new Exception("Nieznany typ mszy"); } }
private static void AddMass(Rule r, drogowskazEntities db, DateTime?date) { Mass msza = new Mass() { Church = r.Church, DateAndTime = ((DateTime)date).AddMinutes(r.Hour.TotalMinutes), ChurchId = r.ChurchId, RuleId = r.Id, Rule = r }; db.Masses.Add(msza); db.SaveChanges(); }
private static void ruleSingular(Rule r, DateTime?date, DateTime currentDate, drogowskazEntities db) { if (date != null && currentDate == date) { AddMass(r, db, date); } }
private static void ruleRepeatDays(Rule r, DateTime dateShift, DateTime currentDate, drogowskazEntities db) { if (r.DateBegin == null) { return; } TimeSpan roznica = dateShift.Date - r.DateBegin.Value; if (roznica.TotalDays % r.Repeat == 0) { AddMass(r, db, currentDate); } }
private static void ruleRepeatDayInMonth(Rule r, DateTime dateShift, DateTime currentDate, drogowskazEntities db) { if (r.DateBegin != null && dateShift.Day == r.DateBegin.Value.Day) { AddMass(r, db, currentDate); } }
private static void ruleCycle(Rule r, DateTime dateShift, DateTime currentDate, drogowskazEntities db) { int dzienTyg = (int)dateShift.DayOfWeek; if (!czyDodacDlaDniaTygodnia(r, dzienTyg)) { return; } if (!czyDodacDlaTygodniaWMiesiacu(r, dateShift)) { return; } bool hit = CyclesUtilitiess.isInCycle(dateShift, r.Cycle.Name); if (hit) { AddMass(r, db, currentDate); } }
private static void ruleMonth(Rule r, DateTime dateShift, DateTime currentDate, drogowskazEntities db) { int msc = dateShift.Month; if (!czyDodacDlaMiesiaca(r, msc)) { return; } int dzienTyg = (int)dateShift.DayOfWeek; if (!czyDodacDlaDniaTygodnia(r, dzienTyg)) { return; } if (!czyDodacDlaTygodniaWMiesiacu(r, dateShift)) { return; } AddMass(r, db, currentDate); }
private static void ruleHoliday(Rule r, DateTime dateShift, DateTime currentDate, drogowskazEntities db) { if (CyclesUtilitiess.isInHoliday(dateShift, r.Holiday.Name)) { AddMass(r, db, currentDate); } }