/// <summary>
        /// Refreshes the calendar.
        /// </summary>
        /// <param name="releaseCalendarPresenter">The release calendar presenter.</param>
        /// <param name="isMonthView">if set to <c>true</c> [is month view].</param>
        private void RefreshCalendar(ReleaseCalendarPresenter releaseCalendarPresenter, bool isMonthView)
        {
            releaseCalendarPresenter.ReleaseCalendar = new ReleaseCalendar();
            AssignSelectedReleaseType(releaseCalendarPresenter);

            this.AssignValuesToPresenter(releaseCalendarPresenter);
            if (!string.IsNullOrEmpty(releaseCalendarPresenter.SelectedProjectIds))
            {
                List<string> ids = releaseCalendarPresenter.SelectedProjectIds.Split(',').ToList();
                releaseCalendarPresenter.AssignSelectedProjects(releaseCalendarPresenter.MasterProjects.Where(project => ids.Contains(project.ProjectID.ToString(CultureInfo.CurrentCulture))).ToList());
            }

            IList<byte> releaseTypes = releaseCalendarPresenter.ProjectReleaseTypes.Where(environment => environment.Id != 0 && !string.IsNullOrEmpty(environment.IsSelected) && environment.IsSelected.Equals("true", StringComparison.OrdinalIgnoreCase)).Select(environment => Convert.ToByte(environment.Id)).ToList();
            releaseTypes = releaseTypes.Count == 0 ? null : releaseTypes;
            IList<int> selectedIds = releaseCalendarPresenter.SelectedProjects.Count > 0 ? releaseCalendarPresenter.SelectedProjects.Select(selectedProject => selectedProject.ProjectID).ToList() : null;

            IList<ReleaseCountListItem> releaseCounts = null;
            if (isMonthView)
            {
                releaseCounts = this.RefreshMonthView(releaseCalendarPresenter, releaseTypes, selectedIds);
            }
            else
            {
                releaseCounts = this.RefreshDayView(releaseCalendarPresenter, releaseTypes, selectedIds);
            }

            UpdateCounts(releaseCalendarPresenter, releaseCounts);
        }
        /// <summary>
        /// Initializes the month view presenter.
        /// </summary>
        /// <param name="dateTime">The date time.</param>
        /// <param name="releaseCalendarPresenter">The release calendar presenter.</param>
        private void InitializeMonthViewPresenter(DateTime dateTime, ReleaseCalendarPresenter releaseCalendarPresenter)
        {
            this.AssignCountValue(releaseCalendarPresenter, null, null);
            releaseCalendarPresenter.AssignReleases(this.releaseService.RetrieveListForMonth(dateTime, null, null, SessionData.Instance.UserInfo.Developer.DeveloperID));

            IList<Release> releases = new List<Release>();
            Dictionary<DateTime, IList<ReleaseListItem>> dictionary = new Dictionary<DateTime, IList<ReleaseListItem>>();
            releaseCalendarPresenter.Releases.ForEach(item => AssignValuesToDictionary(dictionary, item));

            AssignReleases(releases, dictionary);

            releaseCalendarPresenter.AssignMonthViewReleases(releases);

            releaseCalendarPresenter.TotalReleases = releaseCalendarPresenter.Releases.Count;
            this.AssignProjectReleaseTypes(releaseCalendarPresenter, true);

            releaseCalendarPresenter.AssignSelectedProjects(releaseCalendarPresenter.MasterProjects);
        }
        /// <summary>
        /// Initializes the presenter.
        /// </summary>
        /// <param name="dateTime">The date time.</param>
        /// <param name="isMonthView">if set to <c>true</c> [is month view].</param>
        /// <returns>
        /// Instance of Release Calendar
        /// </returns>
        private ReleaseCalendarPresenter InitializePresenter(DateTime dateTime, bool isMonthView)
        {
            ReleaseCalendarPresenter releaseCalendarPresenter = new ReleaseCalendarPresenter() { ReleaseCalendar = new ReleaseCalendar() };
            this.AssignValuesToPresenter(releaseCalendarPresenter);
            releaseCalendarPresenter.SelectedDate = dateTime;

            if (isMonthView)
            {
                this.InitializeMonthViewPresenter(dateTime, releaseCalendarPresenter);
            }
            else
            {
                releaseCalendarPresenter.AssignReleases(this.releaseService.RetrieveListForDate(dateTime, null, null, SessionData.Instance.UserInfo.Developer.DeveloperID, true));
                releaseCalendarPresenter.Releases.Select(release =>
                {
                    return ValidateDates(release, dateTime);
                }).ToList();

                releaseCalendarPresenter.TotalReleases = releaseCalendarPresenter.Releases.Count;
                this.AssignProjectReleaseTypes(releaseCalendarPresenter, isMonthView);
                releaseCalendarPresenter.AssignSelectedProjects(releaseCalendarPresenter.MasterProjects);
            }

            return releaseCalendarPresenter;
        }