private void LoadData(DataQueryContext context, TimeSpan timeOffset) { var user = this.AgendaDay.User; var date = this.AgendaDay.Date.Add(timeOffset); var agendaDay = new AgendaDay(user, date, this.MainContext.GetService <IAgendaDataProvider>().GetAgendaOutlets(context, user, date)); this.LoadData(agendaDay); }
private void LoadData(AgendaDay agendaDay) { this.AgendaDay = agendaDay; this.Outlets.Clear(); this.AllOutlets.Clear(); foreach (var outlet in this.AgendaDay.Outlets) { var viewModel = new AgendaOutletViewModel(this, outlet); this.Outlets.Add(viewModel); this.AllOutlets.TryAdd(outlet.Id, viewModel); } }
public ActionResult GetAgendaTop(string projectGuid, string startDate) { return(ActionUtils.Json(() => { CheckPermission(PermissionObjectType.Project, projectGuid, PermissionType.Read); var project = m_dbAdapter.Project.GetProjectByGuid(projectGuid); CommUtils.Assert(project.ProjectSeriesId.HasValue, "找不到ProjectSeries[projectGuid={0}]信息", projectGuid); var allAgendas = m_dbAdapter.Agenda.GetAgendasByProjectId(project.ProjectId); var nowDate = DateTime.Today; allAgendas.RemoveAll(x => x.EndTime < nowDate); var splitAgendas = new List <Agenda>(); foreach (var agenda in allAgendas) { while (agenda.EndTime.Date > agenda.StartTime.Date) { splitAgendas.Add(new Agenda() { Name = agenda.Name, StartTime = agenda.EndTime.Date, EndTime = agenda.EndTime }); agenda.EndTime = agenda.EndTime.Date.AddSeconds(-1); } splitAgendas.Add(agenda); } splitAgendas = splitAgendas.Where(x => x.StartTime >= nowDate) .OrderBy(x => x.StartTime).ToList(); var agendaInfos = splitAgendas.ConvertAll(x => new AgendaInfo { StartDate = x.StartTime.ToString("yyyy-MM-dd"), StartTime = x.StartTime.ToString("HH:mm"), Title = x.Name, }); var dict = agendaInfos.GroupBy(x => x.StartDate).ToDictionary(x => x.Key); int dayCount = 0; var agendaDays = new List <AgendaDay>(); foreach (var key in dict.Keys) { var agendaDay = new AgendaDay(key); agendaDay.AgendaInfos = dict[key].ToList(); var count = agendaDay.AgendaInfos.Count; if (count > 3) { agendaDay.AgendaInfos[2].Title = "共" + count + "条"; //TODO: do not save date in time field agendaDay.AgendaInfos[2].StartTime = agendaDay.AgendaInfos[2].StartDate; agendaDay.AgendaInfos.RemoveRange(3, count - 3); } agendaDays.Add(agendaDay); ++dayCount; if (dayCount >= 3) { break; } } DateTime nextDate = agendaDays.Count > 0 ? agendaDays.Max(x => x.StartDate).AddDays(1) : DateTime.Today; while (agendaDays.Count < 3) { agendaDays.Add(new AgendaDay(nextDate) { AgendaInfos = new List <AgendaInfo> { new AgendaInfo { Title = "暂无" } }, }); nextDate = nextDate.AddDays(1); } return ActionUtils.Success(agendaDays); })); }