Beispiel #1
0
        public override async Task Execute()
        {
            var query = Session.Query <MsgMaster, MsgIndex>()
                        .ProjectInto <MsgMaster>()
                        .Statistics(out QueryStatistics stats)
                        .Take(Filter.Take)
                        .Skip(Filter.Skip * Filter.Take)
                        .OrderByDescending(a => a.DateModified);

            if (Filter.DateFrom > DateTime.MinValue || Filter.DateTo > DateTime.MaxValue)
            {
                query = query.Where(v => v.DateCreated > Filter.DateFrom && v.DateCreated < Filter.DateTo);
            }

            if (Filter.AuthorKeys.Any())
            {
                query = query.Where(v => v.AuthorId.In(Filter.AuthorKeys));
            }

            if (Filter.RecipientKeys.Any())
            {
                query = query.Where(v => v.Recipients.In(Filter.RecipientKeys));
            }

            if (Filter.PrivateRestrict)
            {
                query = query.Where(v => v.IsPrivate.Value);
            }

            query = await Init(query, Filter, "msg");

            Result = await MsgDisplayTrans.Transform(query).ToListAsync();

            Process(Filter, stats);
        }
Beispiel #2
0
        public override async Task Execute()
        {
            Result = new HomeDisplay()
            {
                Name = CurrentUser.Name, Id = CurrentUser.Id
            };

            var attendanceQuery = Session.Query <AttendanceMaster, AttendanceIndex>()
                                  .ProjectInto <AttendanceMaster>()
                                  .Take(128)
                                  .Skip(0)
                                  .Where(a => a.When > DateHelper.FormatDayStart(DateTime.UtcNow) &&
                                         a.When < DateHelper.FormatDayEnd(DateTime.UtcNow.AddDays(Forward)) &&
                                         a.UserId == CurrentUser.Id && a.TenantId == CurrentUser.TenantId)
                                  .OrderByDescending(a => a.DateModified);

            var attendanceResult = AttendanceDisplayProjection.Transform(attendanceQuery).LazilyAsync();

            var msgQuery = Session.Query <MsgMaster, MsgIndex>()
                           .ProjectInto <MsgMaster>()
                           .Take(5)
                           .Skip(0)
                           .Where(m => m.Recipients.Contains(CurrentUser.Id) && m.TenantId == CurrentUser.TenantId)
                           .OrderByDescending(a => a.DateModified);

            var msgResult = MsgDisplayTrans.Transform(msgQuery).LazilyAsync();

            Result.Attendances = await attendanceResult.Value;
            Result.Msgs        = await msgResult.Value;
        }
Beispiel #3
0
        public override async Task Execute()
        {
            var msgQuery = MsgDisplayTrans.Transform(Session.Query <MsgMaster, MsgIndex>().Where(c => c.Id == Id))
                           .Take(1).LazilyAsync();
            var favQuery = Session.Query <FavMaster, FavFanIndex>().Where(c => c.Id == Id).Take(1).CountLazilyAsync();

            var msgResult = await msgQuery.Value;
            var favResult = await favQuery.Value;

            Result           = msgResult.FirstOrDefault();
            Result.Favourite = favResult > 0;
        }
Beispiel #4
0
        public override async Task Execute()
        {
            Result = await Session.LoadAsync <Msg>(Id);

            if (Result != null)
            {
                ResultFiles = await VisibleDisplayProjection
                              .Transform(Session.Query <VisibleFile, VisibleIndex>().Where(c => c.Id.In(Result.Files)))
                              .ToListAsync();

                ResultRecipients = await ResultProfileProjection
                                   .Transform(Session.Query <UserMaster, UserIndex>().Where(c => c.Id.In(Result.Recipients))
                                              .OfType <IEntityProfile>()).ToListAsync();

                if (!string.IsNullOrEmpty(Result.ReplyId))
                {
                    ResultReply = await MsgDisplayTrans
                                  .Transform(Session.Query <MsgMaster, MsgIndex>().Where(c => c.Id == Result.ReplyId))
                                  .FirstOrDefaultAsync();
                }
            }
        }
Beispiel #5
0
        public override async Task Execute()
        {
            Result = new StatsDisplay()
            {
                Name = CurrentUser.TenantName, Id = CurrentUser.TenantId
            };

            var meetingQuery = Session.Query <MeetingMaster, MeetingIndex>()
                               .ProjectInto <MeetingMaster>()
                               .Take(128)
                               .Skip(0)
                               .Where(a => a.When > DateHelper.FormatDayStart(DateTime.UtcNow.AddDays(-Back)) &&
                                      a.When < DateHelper.FormatDayEnd(DateTime.UtcNow) && a.TenantId == CurrentUser.TenantId)
                               .OrderByDescending(a => a.DateModified);

            var meetingResult = MeetingDisplayProjection.Transform(meetingQuery).LazilyAsync();

            var msgQuery = Session.Query <MsgMaster, MsgIndex>()
                           .ProjectInto <MsgMaster>()
                           .Take(5)
                           .Skip(0)
                           .Where(m => m.DateCreated > DateHelper.FormatDayStart(DateTime.UtcNow.AddDays(-Back)) &&
                                  m.TenantId == CurrentUser.TenantId)
                           .OrderByDescending(a => a.DateModified);

            var msgResult = MsgDisplayTrans.Transform(msgQuery).LazilyAsync();

            var tenantQuery = TenantStatProjection
                              .Transform(Session.Query <TenantStat, TenantStatIndex>().Where(c => c.Id == CurrentUser.TenantId))
                              .Take(1).LazilyAsync();

            var tenantResult = await tenantQuery.Value;

            Result.Meetings = await meetingResult.Value;
            Result.Msgs     = await msgResult.Value;
            Result.Tenant   = tenantResult.FirstOrDefault();
        }