public static IQueryable <LessonTime> GetUnpaidPISession <TEntity>(this PaymentQueryViewModel viewModel, ModelSource <TEntity> models)
            where TEntity : class, new()
        {
            var unpaid = models.FilterByUnpaidLesson();

            var items = models.GetTable <LessonTime>()
                        .Where(r => r.ClassTime < DateTime.Today.AddDays(1))
                        .Where(r => r.RegisterLesson.LessonPriceType.Status == (int)Naming.DocumentLevelDefinition.自主訓練)
                        .Where(r => unpaid.Any(l => l.RegisterID == r.RegisterID));

            if (viewModel.BranchID.HasValue)
            {
                items = items.Where(r => r.BranchID == viewModel.BranchID);
            }

            return(items);
        }
        public static IQueryable <LessonTime> GetUnpaidTrialSession <TEntity>(this PaymentQueryViewModel viewModel, ModelSource <TEntity> models, UserProfile profile)
            where TEntity : class, new()
        {
            var registerItems = models.PropmptReceivableTrialLesson();
            var unpaid        = models.FilterByUnpaidLesson(registerItems);

            var items = models.GetTable <LessonTime>()
                        .Where(r => unpaid.Any(l => l.RegisterID == r.RegisterID));

            if (profile.IsAssistant() || profile.IsOfficer())
            {
            }
            else
            {
                items = items
                        .Where(l => ((l.BranchStore.Status & (int)BranchStore.StatusDefinition.VirtualClassroom) == (int)BranchStore.StatusDefinition.VirtualClassroom &&
                                     l.AttendingCoach == profile.UID) ||
                               l.BranchID == viewModel.BranchID);
            }

            return(items);
        }