Пример #1
5
        private static async Task <List <WidgetPlacement> > UpdateMissingSettingsAsync(this ITuxDbContext context, List <WidgetPlacement> placements)
        {
            foreach (var placement in placements)
            {
                // Add the new settings if necessary.
                placement.UpdateWidgetSettings();

                // Save the missing settings to the table.
                var settings = placement.WidgetSettings.Where(e => string.IsNullOrEmpty(e.WidgetSettingId));
                foreach (var setting in settings)
                {
                    await context.WidgetSetting.AddAsync(setting);

                    await context.SaveChangesAsync(new CancellationToken());
                }
            }

            return(placements);
        }
Пример #2
0
        public static DashboardDefault GetDashboardTemplateFor(this ITuxDbContext context, int planId = 0)
        {
            var layoutTypes = context.LayoutType.ToList();

            var query = context.DashboardDefault
                        .Include(dt => dt.DashboardDefaultWidgets)
                        .ThenInclude(ddw => ddw.Widget)
                        .Include(tab => tab.Layout)
                        .ThenInclude(tuxLayout => tuxLayout.LayoutRows)
                        .AsNoTracking();

            var result = planId > 0
                ? query.FirstOrDefault(e => e.PlanId == planId)
                : query.FirstOrDefault();

            if (result == null)
            {
                return(null);
            }

            var layout = result.Layout;

            foreach (var row in layout.LayoutRows)
            {
                row.LayoutType = layoutTypes.FirstOrDefault(e => e.LayoutTypeId == row.LayoutTypeId);
                //row.WidgetPlacements = context.GetPlacementsByLayoutRow(row.LayoutRowId);
            }

            return(result);
        }
        public static async Task <DashboardDefault> GetDashboardTemplateForAsync(this ITuxDbContext context, int planId = 0)
        {
            var layoutTypes = await context.LayoutType.ToListAsync();

            var query = context.DashboardDefault
                        .Include(dt => dt.DashboardDefaultWidgets)
                        .Include(tab => tab.Layout)
                        .ThenInclude(layout => layout.LayoutRows)
                        .AsNoTracking();

            var result = planId > 0
                ? await query.FirstOrDefaultAsync(e => e.PlanId == planId)
                : await query.FirstOrDefaultAsync();

            if (result == null)
            {
                return(result);
            }

            var layout = result.Layout;

            foreach (var row in layout.LayoutRows)
            {
                row.LayoutType       = layoutTypes.FirstOrDefault(e => e.LayoutTypeId == row.LayoutTypeId);
                row.WidgetPlacements = context.GetPlacementsByLayoutRow(row.LayoutRowId);
            }

            return(result);
        }
Пример #4
0
        public static Layout GetLayout(this ITuxDbContext context, string layoutId)
        {
            var layoutTypes = context.LayoutType.ToList();

            var layout = context.Layout
                         .Include(tuxLayout => tuxLayout.LayoutRows)
                         .ThenInclude(row => row.WidgetPlacements)
                         .ThenInclude(wp => wp.Widget)
                         .ThenInclude(w => w.WidgetDefaults)

                         .AsNoTracking()
                         .FirstOrDefault(e => e.LayoutId == layoutId);

            if (layout == null)
            {
                return(null);
            }

            foreach (var row in layout.LayoutRows)
            {
                row.LayoutType = layoutTypes.FirstOrDefault(e => e.LayoutTypeId == row.LayoutTypeId);
            }

            return(layout);
        }
Пример #5
0
        public static Dashboard GetDashboardFor(this ITuxDbContext context, TuxboardConfig config, string userId)
        {
            var layoutTypes = context.LayoutType.ToList();

            var dashboard = context.Dashboard
                            .Include(db => db.Tabs)
                            .ThenInclude(tab => tab.Layouts)
                            .ThenInclude(layout => layout.LayoutRows)
                            .AsNoTracking().FirstOrDefault(t => t.UserId == userId);

            if (dashboard == null)
            {
                return(null);
            }

            // Assign the LayoutTypes to each row; get the settings for the WidgetPlacements.
            foreach (var tab in dashboard.Tabs)
            {
                foreach (var row in tab.GetLayouts().SelectMany(layout => layout.LayoutRows))
                {
                    row.LayoutType       = layoutTypes.FirstOrDefault(e => e.LayoutTypeId == row.LayoutTypeId);
                    row.WidgetPlacements = context.GetPlacementsByLayoutRow(row.LayoutRowId);
                }
            }

            dashboard.Settings = config;

            return(dashboard);
        }
Пример #6
0
        public static async Task <Dashboard> GetDashboardForAsync(this ITuxDbContext context,
                                                                  TuxboardConfig config, string userId)
        {
            var layoutTypes = context.LayoutType.ToList();

            var dashboard = await context.Dashboard
                            .Include(db => db.Tabs)
                            .ThenInclude(tab => tab.Layouts)
                            .ThenInclude(layout => layout.LayoutRows)
                            .AsNoTracking()
                            .FirstOrDefaultAsync(e => e.UserId == userId);

            if (dashboard == null)
            {
                return(null);
            }

            foreach (var tab in dashboard.Tabs)
            {
                foreach (var row in tab.GetLayouts().SelectMany(layout => layout.LayoutRows))
                {
                    row.LayoutType       = layoutTypes.FirstOrDefault(e => e.LayoutTypeId == row.LayoutTypeId);
                    row.WidgetPlacements = await context.GetPlacementsByLayoutRowAsync(row.LayoutRowId);
                }
            }

            dashboard.Settings = config;

            return(dashboard);
        }
Пример #7
0
 public static Layout GetLayoutForTab(this ITuxDbContext context, string tabId)
 {
     return(context.Layout
            .Include(e => e.LayoutRows)
            .ThenInclude(e => e.LayoutType)
            .AsNoTracking()
            .FirstOrDefault(r => r.TabId == tabId));
 }
Пример #8
0
 public static async Task <Layout> GetLayoutForTabAsync(this ITuxDbContext context, string tabId)
 {
     return(await context.Layout
            .Include(e => e.LayoutRows)
            .ThenInclude(e => e.LayoutType)
            .AsNoTracking()
            .FirstOrDefaultAsync(r => r.TabId == tabId));
 }
Пример #9
0
 public static async Task <WidgetPlacement> GetWidgetPlacementAsync(this ITuxDbContext context, string widgetPlacementId)
 {
     return(await context.WidgetPlacement
            .Include(e => e.WidgetSettings)
            .Include(e => e.Widget)
            .ThenInclude(w => w.WidgetDefaults)
            .FirstOrDefaultAsync(r => r.WidgetPlacementId == widgetPlacementId));
 }
Пример #10
0
 public static WidgetPlacement GetWidgetPlacement(this ITuxDbContext context, string widgetPlacementId)
 {
     return(context.WidgetPlacement
            .Include(e => e.WidgetSettings)
            .Include(e => e.Widget)
            .ThenInclude(w => w.WidgetDefaults)
            .FirstOrDefault(r => r.WidgetPlacementId == widgetPlacementId));
 }
Пример #11
0
        public static async Task <List <WidgetPlacement> > GetWidgetsForTabAsync(this ITuxDbContext context, string tabId)
        {
            var placements = await context.WidgetPlacement
                             .Include(e => e.WidgetSettings)
                             .Include(e => e.Widget)
                             .ThenInclude(w => w.WidgetDefaults)
                             .AsNoTracking().Where(r => r.LayoutRow.Layout.TabId == tabId)
                             .ToListAsync();

            return(await context.UpdateMissingSettingsAsync(placements));
        }
Пример #12
0
        public static List <WidgetPlacement> GetPlacementsByLayoutRow(this ITuxDbContext context,
                                                                      string layoutRowId)
        {
            var placements = context.WidgetPlacement
                             .Include(e => e.WidgetSettings)
                             .Include(e => e.Widget)
                             .ThenInclude(w => w.WidgetDefaults)
                             .AsNoTracking()
                             .Where(r => r.LayoutRowId == layoutRowId)
                             .ToList();

            return(context.UpdateMissingSettings(placements));
        }
Пример #13
0
        private static List <WidgetPlacement> UpdateMissingSettings(this ITuxDbContext context, List <WidgetPlacement> placements)
        {
            foreach (var placement in placements)
            {
                // Add the new settings if necessary.
                placement.UpdateWidgetSettings();

                // Save the missing settings to the table.
                var settings = placement.WidgetSettings.Where(e => string.IsNullOrEmpty(e.WidgetSettingId));
                foreach (var setting in settings)
                {
                    context.WidgetSetting.Add(setting);
                    context.SaveChanges();
                }
            }

            return(placements);
        }
Пример #14
0
        public static async Task <Layout> GetLayoutAsync(this ITuxDbContext context, string layoutId)
        {
            var layoutTypes = await context.LayoutType.ToListAsync();

            var layout = await context.Layout
                         .Include(tuxLayout => tuxLayout.LayoutRows)
                         .ThenInclude(row => row.WidgetPlacements)
                         .ThenInclude(wp => wp.Widget)
                         .ThenInclude(w => w.WidgetDefaults)
                         .AsNoTracking()
                         .FirstOrDefaultAsync(e => e.LayoutId == layoutId);

            foreach (var row in layout.LayoutRows)
            {
                row.LayoutType = layoutTypes.FirstOrDefault(e => e.LayoutTypeId == row.LayoutTypeId);
            }

            return(layout);
        }
Пример #15
0
        public static List <WidgetPlacement> GetWidgetsForTab(this ITuxDbContext context, string tabId)
        {
            var placements = context.WidgetPlacement
                             .Include(e => e.WidgetSettings)
                             .Include(e => e.Widget)
                             .ThenInclude(w => w.WidgetDefaults)
                             .AsNoTracking().Where(r => r.LayoutRow.Layout.TabId == tabId)
                             .ToList();

            foreach (var placement in placements)
            {
                placement.UpdateWidgetSettings();
                var settings = placement.WidgetSettings.Where(e => string.IsNullOrEmpty(e.WidgetSettingId));
                foreach (var setting in settings)
                {
                    context.WidgetSetting.Add(setting);
                    context.SaveChanges();
                }
            }

            return(placements);
        }
Пример #16
0
 public DashboardService(ITuxDbContext context, IConfiguration config)
 {
     _context = context;
     _config  = config.Get <TuxboardConfig>();
 }
Пример #17
0
 public static Widget GetWidget(this ITuxDbContext context, string widgetId)
 {
     return(context.Widget
            .Include(w => w.WidgetDefaults)
            .FirstOrDefault(r => r.WidgetId == widgetId));
 }
Пример #18
0
 public static List <WidgetPlacement> GetWidgetsForTab(this ITuxDbContext context, DashboardTab tab)
 {
     return(GetWidgetsForTab(context, tab.TabId));
 }
Пример #19
0
 public DashboardService(ITuxDbContext context)
 {
     _context = context;
 }
Пример #20
0
 public static List <WidgetPlacement> GetPlacementsByLayout(this ITuxDbContext context, string layoutId)
 {
     return(context.WidgetPlacement.Where(r => r.LayoutRowId == layoutId)
            .ToList());
 }
Пример #21
0
 public static async Task <List <WidgetPlacement> > GetWidgetsForTabAsync(this ITuxDbContext context, DashboardTab tab)
 {
     return(await GetWidgetsForTabAsync(context, tab.TabId));
 }
Пример #22
0
 public static async Task <Widget> GetWidgetAsync(this ITuxDbContext context, string widgetId)
 {
     return(await context.Widget
            .Include(w => w.WidgetDefaults)
            .FirstOrDefaultAsync(r => r.WidgetId == widgetId));
 }
Пример #23
0
 public static Task <List <WidgetPlacement> > GetWidgetsForTabAsync(this ITuxDbContext context, DashboardTab tab) =>
 GetWidgetsForTabAsync(context, tab.TabId);
Пример #24
0
        public static async Task <bool> DashboardExistsAsync(this ITuxDbContext context)
        {
            var item = await context.Dashboard.FirstOrDefaultAsync();

            return(item != null);
        }
Пример #25
0
 public static bool DashboardExistsFor(this ITuxDbContext context, string userId)
 {
     return(context.Dashboard.FirstOrDefault(e => e.UserId == userId) != null);
 }
Пример #26
0
        public static async Task <bool> DashboardExistsForAsync(this ITuxDbContext context, string userId)
        {
            var item = await context.Dashboard.FirstOrDefaultAsync(t => t.UserId == userId);

            return(item != null);
        }
Пример #27
0
 public static async Task <List <WidgetPlacement> > GetPlacementsByLayoutAsync(this ITuxDbContext context,
                                                                               string layoutId)
 {
     return(await context.WidgetPlacement.Where(r => r.LayoutRowId == layoutId)
            .ToListAsync());
 }
Пример #28
0
 public static bool DashboardExists(this ITuxDbContext context)
 {
     return(context.Dashboard.FirstOrDefault() != null);
 }