Ejemplo n.º 1
0
        //Checks if the attendee has been marked as 'absent' three times in the current month and creates a new penalty entry in database.

        public void CheckPenalty(DateTime startDate, int eventId, int attendeeId, int roomId)
        {
            var pastEvents = eventRepository.GetPastEventsByUser(startDate, attendeeId, roomId);

            var eventsCount = pastEvents.Count();

            if (eventsCount == 3)
            {
                penaltyRepository.AddPenalty(new Penalty()
                {
                    AttendeeId = attendeeId,
                    EventId    = eventId,
                    Date       = startDate,
                    RoomId     = roomId
                });

                // Mark these 3 events as being part of a penalty to prevent future counting:

                foreach (Event pastEvent in pastEvents)
                {
                    pastEvent.EventStatus = (int)EventStatusEnum.absentChecked;
                }

                // Edit attendee's events for next 15 days for this room (Cancelled):

                var futureEvents = eventRepository.GetFutureEvents(startDate, attendeeId, roomId);

                if (futureEvents.Count() > 0)
                {
                    foreach (Event xEvent in futureEvents)
                    {
                        xEvent.EventStatus = (int)EventStatusEnum.cancelled;
                    }
                }
                dbOperation.Commit();
            }
        }