public BannerModel Get()
        {
            var conference = conferenceLoader.LoadConference();

            if (conference == null)
            {
                return(new BannerModel());
            }

            DateTimeOffset submissionCloses = DateTimeOffset.Now.AddDays(-1);
            DateTimeOffset votingCloses     = DateTimeOffset.Now.AddDays(-1);

            var allDates   = calendarItemRepository.GetAll().ToDictionary(c => c.EntryType, c => c);
            var submission = allDates[CalendarEntryType.SessionSubmission];

            if (submission != null && submission.EndDate.HasValue)
            {
                submissionCloses = submission.EndDate.Value;
            }

            var voting = allDates[CalendarEntryType.Voting];

            if (voting != null && voting.EndDate.HasValue)
            {
                votingCloses = voting.EndDate.Value;
            }

            return(new BannerModel
            {
                IsOpenForSubmission = conference.CanSubmit(),
                IsOpenForVoting = conference.CanVote(),
                SessionSubmissionCloses = submissionCloses.ToString("R"),
                VotingCloses = votingCloses.ToString("R")
            });
        }
        public Domain.Conference Build(Conference item)
        {
            var conference    = new Domain.Conference(item.ConferenceId, item.Name, item.ShortName, item.NumberOfTimeSlots, item.NumberOfTracks, item.AnonymousSessions);
            var calendarItems = calendarItemRepository.GetAll();

            foreach (var calendarItem in calendarItems)
            {
                var calendarEntry = calendarEntryBuilder.Build(calendarItem);
                conference.AddToCalendar(calendarEntry);
            }

            return(conference);
        }
 public void Given_A_DataModel_With_An_Open_Publishing_The_Agenda_Calendar_Item()
 {
     _calendarItemRepository = Substitute.For<ICalendarItemRepository>();
     _calendarItemRepository.GetAll().Returns(new List<CalendarItem>
                 {
                     new CalendarItem
                         {
                             EntryType = CalendarEntryType.SessionSubmission,
                             Authorised = true,
                             StartDate = DateTimeOffset.Now.AddDays(-2),
                             EndDate = DateTimeOffset.Now.AddDays(-1)
                         },
                     new CalendarItem
                         {
                             EntryType = CalendarEntryType.Voting,
                             Authorised = true,
                             StartDate = DateTimeOffset.Now.AddDays(-2),
                             EndDate = DateTimeOffset.Now.AddDays(-1)
                         },
                     new CalendarItem
                         {
                             EntryType = CalendarEntryType.AgendaPublished,
                             Authorised = true,
                             StartDate = DateTimeOffset.Now.AddDays(-2),
                             EndDate = null
                         }
                 });
     _source = new DDDEastAnglia.DataAccess.SimpleData.Models.Conference
     {
         ConferenceId = 1,
         Name = "",
         ShortName = ""
     };
 }
 private void Given_A_DataModel_With_No_CalendarItems()
 {
     _calendarItemRepository = Substitute.For<ICalendarItemRepository>();
     _calendarItemRepository.GetAll().Returns(new CalendarItem[0]);
     _source = new DDDEastAnglia.DataAccess.SimpleData.Models.Conference
         {
             ConferenceId = 1,
             Name = "",
             ShortName = ""
         };
 }