Exemple #1
0
        //
        // GET: /Canvas/Copy

        public ActionResult Copy(int id = 0)
        {
            Canvas canvas = db.Canvases.Find(id);

            if (canvas == null)
            {
                return(View("Missing", new MissingItem(id)));
            }

            ViewBag.PanelCount    = canvas.Panels.Count;
            ViewBag.FrameCount    = canvas.Panels.Sum(p => p.Frames.Count);
            ViewBag.LocationCount = canvas.Panels.Sum(p => p.Frames.Sum(f => f.Locations.Count));
            CanvasCopy canvasCopy = new CanvasCopy()
            {
                CanvasId           = canvas.CanvasId,
                Name               = string.Format("{0} - {1}", canvas.Name, Resources.Copy),
                CopyPanels         = ViewBag.PanelCount > 0,
                CopyFrames         = ViewBag.FrameCount > 0,
                CopyFrameLocations = ViewBag.LocationCount > 0,
            };

            ViewBag.Canvas = canvas;
            return(View(canvasCopy));
        }
Exemple #2
0
        public ActionResult Copy(CanvasCopy canvasCopy)
        {
            int id = canvasCopy.CanvasId;
            IQueryable <Canvas> canvasQ = db.Canvases
                                          .AsQueryable()
            ;

            if (canvasCopy.CopyPanels)
            {
                canvasQ = canvasQ
                          .Include(c => c.Panels.Select(p => p.FullScreens))
                ;

                if (canvasCopy.CopyFrames)
                {
                    canvasQ = canvasQ
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Clock)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Memo)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.News)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Picture)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Report)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Video).Select(v => v.Contents)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Weather)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Html)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Youtube)))
                              .Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Outlook)))
                    ;

                    if (canvasCopy.CopyFrameLocations)
                    {
                        canvasQ = canvasQ.Include(c => c.Panels.Select(p => p.Frames.Select(f => f.Locations)));
                    }
                }
            }

            Canvas canvas = canvasQ
                            .AsNoTracking()
                            .FirstOrDefault(c => c.CanvasId == id)
            ;

            if (canvas == null)
            {
                return(View("Missing", new MissingItem(id)));
            }

            db.Entry(canvas).State = EntityState.Detached;

            canvas.Name = canvasCopy.Name;
            if (!canvasCopy.CopyPanels)
            {
                canvas.Panels.Clear();
                this.makeFullscreenPanel(canvas);
            }

            if (ModelState.IsValid)
            {
                db.Canvases.Add(canvas);
                db.SaveChanges();

                return(RedirectToAction("Details", new { id = canvas.CanvasId }));
            }

            ViewBag.PanelCount            = canvas.Panels.Count;
            ViewBag.FrameCount            = canvas.Panels.Sum(p => p.Frames.Count);
            ViewBag.LocationCount         = canvas.Panels.Sum(p => p.Frames.Sum(f => f.Locations.Count));
            canvasCopy.CopyPanels         = ViewBag.PanelCount > 0;
            canvasCopy.CopyFrames         = ViewBag.FrameCount > 0;
            canvasCopy.CopyFrameLocations = ViewBag.LocationCount > 0;
            ViewBag.Canvas = canvas;
            return(View(canvasCopy));
        }