public ActionResult DowloadFile(int?id, string FileId = "")
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            tbNetVirtualGroup tbNetVirtualGroup = db.tbNetVirtualGroup.Find(id);

            if (tbNetVirtualGroup != null)
            {
                Type         t    = typeof(tbNetVirtualGroup);
                PropertyInfo pi   = t.GetProperty(FileId);
                byte[]       file = (byte[])pi.GetValue(tbNetVirtualGroup);
                if (file != null)
                {
                    List <FileMetaData> mdfiles = JsonConvert.DeserializeObject <List <FileMetaData> >(tbNetVirtualGroup.JsonMetadata);
                    string content_type         = mdfiles.Where(m => m.FileId == FileId).Select(m => m.ContentType).First();
                    return(File(file, content_type));
                }
                else
                {
                    var dir  = Server.MapPath("/Images");
                    var path = Path.Combine(dir, "Personajes.png");
                    return(File(path, "image/png"));
                }
            }
            else
            {
                return(null);
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (!(AspNetUsersRoles.IsUserInRole("Administrator", User.Identity.Name) || AspNetUsersRoles.IsUserInRole("Maestro", User.Identity.Name)))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ViewBag.ControllerName = "tbNetVirtualGroups";
            tbNetVirtualGroup tbNetVirtualGroup = db.tbNetVirtualGroup.Find(id);

            db.tbNetVirtualGroup.Remove(tbNetVirtualGroup);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        // GET: tbNetVirtualGroups/Details/5
        public ActionResult Details(int?id)
        {
            ViewBag.ControllerName = "tbNetVirtualGroups";
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            tbNetVirtualGroup tbNetVirtualGroup = db.tbNetVirtualGroup.Find(id);

            if (tbNetVirtualGroup == null)
            {
                return(HttpNotFound());
            }
            return(View(tbNetVirtualGroup));
        }
        public ActionResult Create([Bind(Include = "id,name,description")] tbNetVirtualGroup tbNetVirtualGroup)
        {
            if (!(AspNetUsersRoles.IsUserInRole("Administrator", User.Identity.Name) || AspNetUsersRoles.IsUserInRole("Maestro", User.Identity.Name)))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ViewBag.ControllerName = "tbNetVirtualGroups";
            if (ModelState.IsValid)
            {
                List <FileMetaData> mdfiles = new List <FileMetaData>();
                DateTime            dn      = System.DateTime.Now;
                foreach (string item in Request.Files)
                {
                    HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;
                    int length = file.ContentLength;
                    if (length > 0 && file != null)
                    {
                        byte[] buffer = new byte[length];
                        file.InputStream.Read(buffer, 0, length);
                        PropertyInfo propInfo = typeof(tbNetVirtualGroup).GetProperty(item);
                        propInfo.SetValue(tbNetVirtualGroup, buffer);
                        FileMetaData fmd = new FileMetaData()
                        {
                            FileId = item, CreatedOn = dn, ModifiedOn = dn, ContentType = file.ContentType, Size = length / 1024
                        };
                        mdfiles.Add(fmd);
                    }
                }
                tbNetVirtualGroup.state        = false;
                tbNetVirtualGroup.JsonMetadata = JsonConvert.SerializeObject(mdfiles);
                tbNetVirtualGroup.createDate   = System.DateTime.Now;
                db.tbNetVirtualGroup.Add(tbNetVirtualGroup);
                //---------------------------------
                Guid userid = new Guid(AspNetUsers.GetUserId(User.Identity.Name));
                tbNetVirtualUserGroup nvug = new tbNetVirtualUserGroup();
                nvug.idNetVirtualGroup   = tbNetVirtualGroup.id;
                nvug.idNetVirtualUser    = userid;
                nvug.isOwner             = true;
                nvug.StateUserAceptGroup = 0;
                db.tbNetVirtualUserGroup.Add(nvug);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(tbNetVirtualGroup));
        }
        // GET: tbNetVirtualGroups/Delete/5
        public ActionResult Delete(int?id)
        {
            if (!(AspNetUsersRoles.IsUserInRole("Administrator", User.Identity.Name) || AspNetUsersRoles.IsUserInRole("Maestro", User.Identity.Name)))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ViewBag.ControllerName = "tbNetVirtualGroups";
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            tbNetVirtualGroup tbNetVirtualGroup = db.tbNetVirtualGroup.Find(id);

            if (tbNetVirtualGroup == null)
            {
                return(HttpNotFound());
            }
            return(View(tbNetVirtualGroup));
        }
        public ActionResult Edit([Bind(Include = "id,name,description")] tbNetVirtualGroup tbNetVirtualGroup)
        {
            if (!(AspNetUsersRoles.IsUserInRole("Administrator", User.Identity.Name) || AspNetUsersRoles.IsUserInRole("Maestro", User.Identity.Name)))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ViewBag.ControllerName = "tbNetVirtualGroups";
            if (ModelState.IsValid)
            {
                var q = (from m in db.tbNetVirtualGroup where m.id == tbNetVirtualGroup.id select new { m.createDate, m.photo, m.JsonMetadata }).FirstOrDefault();
                if (q != null)
                {
                    tbNetVirtualGroup.createDate   = q.createDate;
                    tbNetVirtualGroup.photo        = q.photo;
                    tbNetVirtualGroup.JsonMetadata = q.JsonMetadata;
                }
                List <FileMetaData> mdfiles = JsonConvert.DeserializeObject <List <FileMetaData> >(tbNetVirtualGroup.JsonMetadata);
                DateTime            dn      = System.DateTime.Now;
                foreach (string item in Request.Files)
                {
                    HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;
                    int length = file.ContentLength;
                    if (length > 0 && file != null)
                    {
                        byte[] buffer = new byte[length];
                        file.InputStream.Read(buffer, 0, length);
                        PropertyInfo propInfo = typeof(tbNetVirtualGroup).GetProperty(item);
                        propInfo.SetValue(tbNetVirtualGroup, buffer);
                        FileMetaData fmd = mdfiles.Find(m => m.FileId == item);
                        fmd.ModifiedOn  = System.DateTime.Now;
                        fmd.ContentType = file.ContentType;
                        fmd.Size        = length / 1024;
                    }
                }

                tbNetVirtualGroup.JsonMetadata = JsonConvert.SerializeObject(mdfiles);

                db.Entry(tbNetVirtualGroup).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(tbNetVirtualGroup));
        }