예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
            }));
        }