示例#1
0
 public static void GenerateMasses(drogowskazEntities db, DateTime currentDate)
 {
     foreach (Rule r in db.Rules.ToList())
     {
         GenerateMassesFromOneRule(r, db, currentDate);
     }
 }
示例#2
0
            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);
            }
示例#3
0
            protected override void OnInit(InitArgs e)
            {
                var db = new drogowskazEntities();

                Events         = createEvents(db.Masses);
                DataIdField    = "Id";
                DataTextField  = "Text";
                DataStartField = "Start";
                DataEndField   = "End";
                Update();
            }
示例#4
0
        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");
            }
        }
示例#5
0
        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();
        }
示例#6
0
 private static void ruleSingular(Rule r, DateTime?date, DateTime currentDate, drogowskazEntities db)
 {
     if (date != null && currentDate == date)
     {
         AddMass(r, db, date);
     }
 }
示例#7
0
        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);
            }
        }
示例#8
0
 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);
     }
 }
示例#9
0
        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);
            }
        }
示例#10
0
        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);
        }
示例#11
0
 private static void ruleHoliday(Rule r, DateTime dateShift, DateTime currentDate, drogowskazEntities db)
 {
     if (CyclesUtilitiess.isInHoliday(dateShift, r.Holiday.Name))
     {
         AddMass(r, db, currentDate);
     }
 }