예제 #1
0
        public ActionResult Add()
        {
            Models.TomeViewModel newTomeViewModel = new TomeViewModel();


            var SelectListItems = db.Tags.Select(x => new SelectListItem {
                Value = x.TagId.ToString(), Text = x.TagTitle
            });

            var TagList = new List <SelectListItem>(SelectListItems);


            newTomeViewModel.TagList = TagList;

            String          currentUserId = User.Identity.GetUserId();
            ApplicationUser currentUser   = db.Users.FirstOrDefault(x => x.Id == currentUserId);
            var             roleName      = (from userroles in db.UserRoles
                                             join roles in db.Roles on userroles.RoleId equals roles.Id
                                             where userroles.UserId == currentUserId
                                             select roles.Name).FirstOrDefault();

            ViewBag.roleAccount = roleName;
            return(View(newTomeViewModel));
        }
예제 #2
0
        public ActionResult Edit(TomeViewModel editedTome)
        {
            string path = Server.MapPath("../..");

            try
            {
                string          currentUserId = User.Identity.GetUserId();
                ApplicationUser currentUser   = db.Users.FirstOrDefault(x => x.Id == currentUserId);


                Models.Tome tome = db.Tomes.Find(editedTome.ReferredTome.TomeId);
                tome.CreationDate = DateTime.Now;
                tome.IsPrivate    = editedTome.ReferredTome.IsPrivate;

                TomeHistory tomeHistory = new TomeHistory
                {
                    Tome     = tome,
                    FilePath = path + BASE_PATH + TOME_IDENTIFIER +
                               (User.Identity.GetUserName().IsEmpty() ? ("anonymous" + Request.AnonymousID) : User.Identity.GetUserName()) +
                               "-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".html",
                    ModificationDate = DateTime.Now,
                    ApplicationUser  = currentUser
                };



                if (!Request.IsAuthenticated && tome.IsPrivate)
                {
                    return(RedirectToAction("NotFound", "Error"));
                }


                Models.TomeViewModel editTomeViewModel = new TomeViewModel();

                var selectedTag = (from tag in db.TagReferences
                                   where tag.TomeId == tome.TomeId
                                   select tag).SingleOrDefault();



                var SelectListItems = db.Tags.Select(x => new SelectListItem {
                    Value = x.TagId.ToString(), Text = x.TagTitle
                });
                var TagList = new List <SelectListItem>(SelectListItems);

                editTomeViewModel.TagList = TagList;

                if (selectedTag != null)
                {
                    selectedTag.TagId = editedTome.SelectedTag;
                    db.SaveChanges();
                }
                else
                {
                    TagReference newTagRef = new TagReference();
                    newTagRef.TomeId = editedTome.ReferredTome.TomeId;
                    newTagRef.TagId  = editedTome.SelectedTag;
                    db.TagReferences.Add(newTagRef);
                }

                // insert into db
                db.TomeHistories.Add(tomeHistory);
                db.SaveChanges();


                // create file and fill with content
                string content = editedTome.TomeContent.Content.Replace("\"../uploads/", "\"../../uploads/");;
                System.IO.File.WriteAllText(tomeHistory.FilePath, content);


                // update curent version

                var currentVersion = db.CurrentVersions.SingleOrDefault(m => m.Tome.TomeId == editedTome.ReferredTome.TomeId);
                currentVersion.TomeHistory = tomeHistory;
                db.SaveChanges();
            }
            catch (Exception e)
            {
                TempData["Alert"] = "An error occured: TomeController Edit Post";
                Console.WriteLine(e);
                throw;
            }


            return(RedirectToAction("Index"));
        }
예제 #3
0
        public ActionResult Edit(int id)
        {
            try
            {
                ViewBag.canMakeProtected = false;


                String filePath;

                Models.Tome          tome = db.Tomes.Find(id);
                Models.TomeViewModel editTomeViewModel = new TomeViewModel();


                Tag selectedTag = (from tag in db.TagReferences
                                   where tag.TomeId == id
                                   select tag.Tag).SingleOrDefault();


                var SelectListItems = db.Tags.Select(x => new SelectListItem {
                    Value = x.TagId.ToString(), Text = x.TagTitle
                });

                var TagList = new List <SelectListItem>(SelectListItems);

                editTomeViewModel.TagList = TagList;

                ApplicationUser tomeOwner = (from selectedTome in db.Tomes
                                             where selectedTome.TomeId == id
                                             select selectedTome.ApplicationUser).SingleOrDefault();

                if (tomeOwner.Id == User.Identity.GetUserId() || User.IsInRole("Administrator") || User.IsInRole("Moderator"))
                {
                    ViewBag.canMakeProtected = true;
                }


                // Find current version and get the file path
                int currentVersionId = (from version in db.CurrentVersions
                                        where version.TomeId == id
                                        select version.TomeHistoryId).SingleOrDefault();

                filePath = (from history in db.TomeHistories
                            where history.Id == currentVersionId
                            select history.FilePath).SingleOrDefault();


                if (!Request.IsAuthenticated && tome.IsPrivate)
                {
                    return(RedirectToAction("AccessDenied", "Error"));
                }


                String tomeContent = System.IO.File.ReadAllText(filePath);
                editTomeViewModel.ReferredTome = tome;
                Debug.WriteLine(filePath);
                Debug.WriteLine(tomeContent);

                editTomeViewModel.ReferredTome = tome;
                TomeContent content = new TomeContent();
                content.Content = tomeContent;
                editTomeViewModel.TomeContent = content;


                String          currentUserId = User.Identity.GetUserId();
                ApplicationUser currentUser   = db.Users.FirstOrDefault(x => x.Id == currentUserId);
                var             roleName      = (from userroles in db.UserRoles
                                                 join roles in db.Roles on userroles.RoleId equals roles.Id
                                                 where userroles.UserId == currentUserId
                                                 select roles.Name).FirstOrDefault();
                ViewBag.roleAccount = roleName;

                return(View(editTomeViewModel));
            }
            catch (Exception e)
            {
                TempData["Alert"] = "An error occured: TomeController Edit Get";
                Debug.WriteLine("An error occured: " + e);
                return(RedirectToAction("Index"));
            }
        }
예제 #4
0
        public ActionResult Show(int id)
        {
            try
            {
                String currentUserId = User.Identity.GetUserId();

                ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);

                var roleName = (from userroles in db.UserRoles
                                join roles in db.Roles on userroles.RoleId equals roles.Id
                                where userroles.UserId == currentUserId
                                select roles.Name).FirstOrDefault();

                var currentTome = (from tome in db.Tomes
                                   where tome.TomeId == id
                                   select tome).SingleOrDefault();

                var tagRef = (from tome in db.Tomes
                              join tagR in db.TagReferences on tome.TomeId equals tagR.TomeId
                              where tome.TomeId == id
                              select tagR.Tag.TagTitle).FirstOrDefault();


                /*
                 * if (currentTome.IsPrivate == true && (currentUserId == null ||
                 *                                    (currentUser != currentTome.ApplicationUser &&
                 *                                     roleName != "Moderator" && roleName != "Administrator")))
                 * {
                 *  //Denied Access ( bc ori nu e logat ori nu e detinatorul ori nu e moderator / administrator)
                 *  return RedirectToAction("Index");
                 * }
                 */

                int currentHistory = (from version in db.CurrentVersions
                                      where version.TomeId == id
                                      select version.TomeHistoryId).SingleOrDefault();


                var currentTomeHistory = (from tomeHistory in db.TomeHistories
                                          where tomeHistory.Id == currentHistory
                                          select tomeHistory).SingleOrDefault();

                TomeViewModel currentTomeViewModel = new TomeViewModel();

                currentTomeViewModel.ReferredTome = db.Tomes.Find(id);
                currentTomeViewModel.TomeContent  = new TomeContent();

                currentTomeViewModel.TomeContent.Content = currentTomeHistory.FilePath;

                if (currentUser == currentTome.ApplicationUser)
                {
                    ViewBag.AuthUser = true;
                }
                else
                {
                    ViewBag.AuthUser = false;
                }


                ViewBag.roleAccount = roleName;
                ViewBag.TagTome     = tagRef;
                return(View(currentTomeViewModel));
            }
            catch (Exception e)
            {
                TempData["Alert"] = "An error occured: TomeController Add Get";
                Debug.WriteLine("An error occured: " + e);
                return(RedirectToAction("Index"));
            }
        }