public double CalculatePunishment(LateEvent currentEvent)
        {
            var lateSettings = db.LateSettings.FirstOrDefault();

            IQueryable <LateEvent> eventsForTheSameStudent = db.LateEvents.Where(l => l.StudentId == currentEvent.StudentId);
            DateTime theFirstPreviousDate  = currentEvent.LateDate.AddDays(-1).Date;
            DateTime theSecondPreviousDate = currentEvent.LateDate.AddDays(-2).Date;
            DateTime theThirdPreviousDate  = currentEvent.LateDate.AddDays(-3).Date;

            if (eventsForTheSameStudent.Any(e => EntityFunctions.TruncateTime(e.LateDate) == theFirstPreviousDate) &&
                !eventsForTheSameStudent.Any(e => EntityFunctions.TruncateTime(e.LateDate) == theSecondPreviousDate))
            {
                currentEvent.LateMoney = lateSettings.MoneyPerLate * lateSettings.SecondRate;
                currentEvent.PushCount = lateSettings.PushPerLate * lateSettings.SecondRate;
            }
            else if (eventsForTheSameStudent.Any(e => EntityFunctions.TruncateTime(e.LateDate) == theFirstPreviousDate) &&
                     eventsForTheSameStudent.Any(e => EntityFunctions.TruncateTime(e.LateDate) == theSecondPreviousDate) &&
                     !eventsForTheSameStudent.Any(e => EntityFunctions.TruncateTime(e.LateDate) == theThirdPreviousDate))
            {
                currentEvent.LateMoney = lateSettings.MoneyPerLate * lateSettings.ThirdRate;
                currentEvent.PushCount = lateSettings.PushPerLate * lateSettings.ThirdRate;
            }
            else
            {
                currentEvent.LateMoney = lateSettings.MoneyPerLate;
                currentEvent.PushCount = lateSettings.PushPerLate;
            }

            return(currentEvent.LateType == LateEvent.Type.Money ? currentEvent.LateMoney : currentEvent.PushCount);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            LateEvent lateEvent = db.LateEvents.Find(id);

            db.LateEvents.Remove(lateEvent);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        // GET: LateEvents/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LateEvent lateEvent = db.LateEvents.Find(id);

            if (lateEvent == null)
            {
                return(HttpNotFound());
            }
            return(View(lateEvent));
        }
        // GET: LateEvents/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LateEvent lateEvent = db.LateEvents.Find(id);

            if (lateEvent == null)
            {
                return(HttpNotFound());
            }
            ViewBag.StudentId = new SelectList(db.Students, "Id", "Name", lateEvent.StudentId);
            return(View(lateEvent));
        }
        public ActionResult Edit([Bind(Include = "Id,LateDate,LateType,LateMoney,PushCount,StudentId")] LateEvent lateEvent)
        {
            var currentEventDate = lateEvent.LateDate.Date;

            if (ModelState.IsValid && !db.LateEvents.Any(l => EntityFunctions.TruncateTime(l.LateDate) == currentEventDate && l.StudentId == lateEvent.StudentId))
            {
                db.Entry(lateEvent).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            else
            {
                ViewBag.errorMessage = "This student was attended";
            }
            ViewBag.StudentId = new SelectList(db.Students, "Id", "Name", lateEvent.StudentId);
            return(View(lateEvent));
        }
        public ActionResult Create(LateEvent lateEvent)
        {
            var currentEventDate = lateEvent.LateDate.Date;

            if (ModelState.IsValid && !db.LateEvents.Any(l => EntityFunctions.TruncateTime(l.LateDate) == currentEventDate && l.StudentId == lateEvent.StudentId))
            {
                db.LateEvents.Add(lateEvent);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            else
            {
                ViewBag.errorMessage = "This student was attended";
            }

            ViewBag.StudentId = new SelectList(db.Students, "Id", "Name", lateEvent.StudentId);
            return(View(lateEvent));
        }
Beispiel #7
0
    private IEnumerator RespondLate()
    {
        yield return(waitObj);

        LateEvent.Invoke();
    }