Beispiel #1
0
 /// <summary>
 /// A helper method for updating attendances
 /// </summary>
 /// <param name="notification"></param>
 private void NotifyAttendees(Notification notification)
 {
     foreach (var attendance in Attendances.Select(a => a.Attendee))
     {
         attendance.Notify(notification);
     }
 }
Beispiel #2
0
        public void Updated(DateTime originalDateTime, string originalVenue)
        {
            var notification = Notification.GigUpdated(Id, originalDateTime, originalVenue);

            Notifications.Add(notification);

            Attendances.Select(f => f.Attendee).ToList().
            ForEach(a => a.Notify(notification));
        }
Beispiel #3
0
        public void Cancelled()
        {
            IsCancelled = true;

            var notification = Notification.GigCancelled(Id);

            Notifications.Add(notification);

            Attendances.Select(f => f.Attendee).ToList()
            .ForEach(a => a.Notify(notification));
        }
Beispiel #4
0
        public void Canceled()
        {
            IsCanceled = true;

            var notification = Notification.GigCanceled(this);


            foreach (var Attendee in Attendances.Select(a => a.Attendee))
            {
                Attendee.Notify(notification);
            }
        }
Beispiel #5
0
        public void Modify(DateTime dateTime, string venue, byte genre)
        {
            var notification = Notification.GigUpdated(this, dateTime, venue);


            Venue    = Venue;
            DateTime = dateTime;
            GenreId  = genre;

            foreach (var attendee in Attendances.Select(a => a.Attendee))
            {
                attendee.Notify(notification);
            }
        }
Beispiel #6
0
        internal void Change(DateTime dateTime, string venue, byte genre)
        {
            var notification = Notification.GigUpdated(this, DateTime, Venue);

            Venue    = venue;
            DateTime = dateTime;
            GenreId  = genre;


            foreach (var attendee in Attendances.Select(a => a.Attendee))
            {
                attendee.Notify(notification);
            }
        }
Beispiel #7
0
        //extracted method from controller for cohesion purposes
        //methods relate together and Gig will be responsible to create notification
        public void Cancel()
        {
            IsCanceled = true;

            //When gig is canceled create Notification
            var notification = new Notification(NotificationType.GigCanceled, this);


            //iterate over the collection of attendees
            foreach (var attendee in Attendances.Select(a => a.Attendee))
            {
                //call Notify() of ApplicationUser class as attendee is of that type
                //and the behaviour is refactored into the model class
                attendee.Notify(notification);
            }
        }
Beispiel #8
0
        public Attendance CheckIn(DateTimeOffset checkInDate, LocationsCheckInEnum locationStatus, DateTimeOffset?checkOutDate, TimeSpan?duration)
        {
            //validation for the same CheckInDate
            if (Attendances.Count > 0)
            {
                if (Attendances.Select(o => o.CheckInDate.Date).Contains(checkInDate.Date))
                {
                    return(null);
                }
            }

            //validation for checkin more than current date
            var comparison2 = DateTimeOffset.Compare(checkInDate.Date, DateTimeOffset.Now.Date);

            if (comparison2 >= 1)
            {
                return(null);
            }

            var attendance = new Attendance(Guid.NewGuid(), this.Identity, checkInDate, locationStatus, checkOutDate, duration);

            if (Attendances == null)
            {
                Attendances = new List <Attendance>().AsReadOnly();
            }

            var list = Attendances.ToList();

            list.Add(attendance);

            ReadModel.Attendances.Add(new AttendanceReadModel(attendance));

            Attendances = list.AsReadOnly();

            return(attendance);
        }