예제 #1
0
        public async Task <IActionResult> CreateThread([FromForm] CreateThreadViewModel model, [FromForm] string unparsedContent)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }
            if (string.IsNullOrWhiteSpace(unparsedContent))
            {
                return(new ContentResult
                {
                    ContentType = "text/html",
                    StatusCode = (int)HttpStatusCode.BadRequest,
                    Content = "Content can't be empty"
                });
            }

            var createResult = await _threadsManagementService.CreateThreadAsync(model.Title, model.Content, model.SectionName, User.Identity.Name);

            if (!createResult.IsSuccess)
            {
                var errorMessage = GetErrorMessage(createResult.ErrorType);

                return(new ContentResult
                {
                    ContentType = "text/html",
                    StatusCode = (int)HttpStatusCode.BadRequest,
                    Content = errorMessage
                });
            }

            return(Ok());
        }
예제 #2
0
        public IActionResult CreateThread(int id)
        {
            CreateThreadViewModel model = new CreateThreadViewModel {
                id = id
            };

            return(View(model));
        }
예제 #3
0
        public ViewResult CreateThread(int boardId)
        {
            CreateThreadViewModel model = new CreateThreadViewModel();

            model.BoardTitle = _boardRepository.GetById(boardId).Title;
            model.BoardId    = boardId;
            return(View(model));
        }
예제 #4
0
        public CreateThreadPage(CreateThreadViewModel viewModel)
        {
            BindingContext = viewModel;
            InitializeComponent();

            MessagingCenter.Subscribe <CreateThreadViewModel, string>(viewModel, "Error", (sender, data) =>
            {
                DisplayAlert("Error", data, "Ok");
            });
        }
예제 #5
0
        public ActionResult Create(int forumId)
        {
            Forum theForum             = db.Forums.Single(f => f.ForumId == forumId);
            CreateThreadViewModel ctvm = new CreateThreadViewModel
            {
                TheForum = theForum
            };

            return(View(ctvm));
        }
예제 #6
0
        public ActionResult Delete(int threadId, int forumId)
        {
            Thread theThread = db.Threads.SingleOrDefault(t => t.ThreadId == threadId);
            Forum  theForum  = db.Forums.SingleOrDefault(f => f.ForumId == forumId);
            CreateThreadViewModel viewModel = new CreateThreadViewModel
            {
                TheThread = theThread,
                TheForum  = theForum
            };

            return(View(viewModel));
        }
        public async Task <ActionResult <int> > PostThreadCreate(CreateThreadViewModel createThreadEntryViewModel)
        {
            ThreadEntry threadEntry = new ThreadEntry();

            if (ModelState.IsValid)
            {
                string          currentUserId = User.FindFirstValue(ClaimTypes.NameIdentifier);
                ApplicationUser currentUser   = await _context.Users.FirstOrDefaultAsync(x => x.Id == currentUserId).ConfigureAwait(false);

                threadEntry.Author = currentUser;

                threadEntry.InjectFrom(createThreadEntryViewModel);

                threadEntry.CreatedAt = DateTime.Now;
                threadEntry.UpdatedAt = DateTime.Now;
                threadEntry.Locked    = false;

                if (createThreadEntryViewModel.ForumId == -1)
                {
                    threadEntry.PostNumber = 1;
                }
                else
                {
                    threadEntry.Forum = await _context.Fora.FirstOrDefaultAsync(forum => forum.Id == createThreadEntryViewModel.ForumId);

                    threadEntry.Parent = await _context.ForumThreadEntrys.Include(te => te.Root).Include(te => te.Children).FirstOrDefaultAsync(thread => thread.Id == createThreadEntryViewModel.parentId);

                    threadEntry.Root = threadEntry.Parent.Root;
                }

                _context.ForumThreadEntrys.Add(threadEntry);

                try
                {
                    await _context.SaveChangesAsync().ConfigureAwait(false);
                }
                catch (DbUpdateException exception)
                {
                    Console.WriteLine($"SaveChangesAsync threw an exception Message: {exception.Message}");
                }

                if (threadEntry.Parent == null && threadEntry.Root != null)
                {
                    threadEntry.UpdatedAt = threadEntry.CreatedAt;

                    threadEntry.Root.Id = threadEntry.Id;
                    await _context.SaveChangesAsync().ConfigureAwait(false);
                }
            }

            return(threadEntry.PostNumber);
        }
예제 #8
0
        public async Task <ActionResult> Post([FromBody] CreateThreadViewModel threadViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var threadDto = _mapper.Map <CreateThreadViewModel, ThreadDto>(threadViewModel);

            await _threadService.CreateAsync(threadDto);

            return(Ok());
        }
예제 #9
0
        public ActionResult Create(CreateThreadViewModel model)
        {
            try
            {
                return(RedirectToAction("Preview", new { id = threadService.Create(model) }));
            }
            catch (NoCategoryException e)
            {
                return(View("NoCategory"));
            }
            catch (CouldntCreateThread e) {
            }

            return(RedirectToAction("Index", "Home", new { }));
        }
예제 #10
0
        public ActionResult Index([Bind(Include = "Title, Content, SectionId")] CreateThreadViewModel threadViewModel)
        {
            if (ModelState.IsValid)
            {
                var thread = this.mappingService.Map <Thread>(threadViewModel);
                thread.Published = DateTime.Now;
                thread.IsVisible = true;
                thread.UserId    = User.Identity.GetUserId();
                this.data.Threads.Add(thread);
                this.data.SaveChanges();
                return(RedirectToAction(WebConstants.IndexAction, WebConstants.ThreadController, new { id = thread.Id, title = thread.Title }));
            }

            return(this.View(threadViewModel));
        }
예제 #11
0
        public async Task <IActionResult> CreateThread(CreateThreadViewModel model)
        {
            if (ModelState.IsValid)
            {
                Thread thread = new Thread();
                Match  match  = db.Match.Find(model.id);
                thread.match = match;
                thread.name  = model.name;
                thread.user  = await _userManager.GetUserAsync(User);

                db.Thread.Add(thread);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index", "Match", new { id = model.id }));
            }
            return(View(model));
        }
예제 #12
0
        public int Create(CreateThreadViewModel model)
        {
            using (ApplicationDbContext db = new ApplicationDbContext()) {
                Kategoria category = db.Kategorie.Where(w => w.Id == model.CategoryId).FirstOrDefault();

                if (category == null)
                {
                    throw new NoCategoryException();
                }

                Watek newThread = new Watek()
                {
                    Tytul         = model.Title,
                    SlowaKluczowe = model.Keywords,
                    Aktywny       = true,
                    DataDodania   = DateTime.Now,
                    Grafika       = "",
                    IdKategorii   = category.Id,
                    IdUzytkownika = "123"//HttpContext.Current.User.Identity.Name
                };

                db.Watki.Add(newThread);

                if (db.SaveChanges() > 0)
                {
                    Post newPost = new Post()
                    {
                        IdWatku       = newThread.Id,
                        Tresc         = model.Content,
                        DataDodania   = DateTime.Now,
                        IdUzytkownika = HttpContext.Current.User.Identity.Name
                    };

                    db.Posty.Add(newPost);

                    if (db.SaveChanges() > 0)
                    {
                        return(newThread.Id);
                    }
                }

                throw new CouldntCreateThread();
            }
        }
        public void Forum_CreateController_Index_Post_ShouldCallRedirectToActionWithCorrectRouteParams()
        {
            //Arrange
            var data             = new Mock <IUowData>();
            var threadRepository = new Mock <IRepository <Thread> >();
            var mappingService   = new Mock <IMappingService>();

            data.Setup(d => d.Threads).Returns(threadRepository.Object);

            var claim = new Claim("test", "asd-123");

            var identity = new Mock <ClaimsIdentity>();

            identity.Setup(i => i.FindFirst(It.IsAny <string>())).Returns(claim);

            var principal = new Mock <IPrincipal>();

            principal.Setup(p => p.Identity).Returns(identity.Object);

            var context = new Mock <ControllerContext>();

            context.Setup(c => c.HttpContext.User).Returns(principal.Object);

            mappingService.Setup(m => m.Map <Thread>(It.IsAny <CreateThreadViewModel>())).Returns(new Thread()
            {
                Id = 3
            });

            CreateController controller = new CreateController(data.Object, mappingService.Object)
            {
                ControllerContext = context.Object
            };

            var thread = new CreateThreadViewModel();

            //Act
            RedirectToRouteResult redirectResult = controller.Index(thread) as RedirectToRouteResult;

            //Assert
            Assert.AreEqual(3, redirectResult.RouteValues["id"]);
        }
예제 #14
0
        public async Task <IActionResult> CreateThread([FromQuery] string sectionName)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }

            var model = new CreateThreadViewModel
            {
                SectionName = sectionName
            };

            var content = await this.RenderViewToStringAsync("/Views/Threads/CreateThread.cshtml", model);

            return(new ContentResult
            {
                ContentType = "text/html",
                StatusCode = (int)HttpStatusCode.OK,
                Content = content
            });
        }
        public void Forum_CreateController_Index_Post_ShouldAddInstanceOfAThread()
        {
            //Arrange
            var data           = new Mock <IUowData>();
            var mappingService = new Mock <IMappingService>();

            var threadRepository = new Mock <IRepository <Thread> >();

            data.Setup(d => d.Threads).Returns(threadRepository.Object);

            var claim = new Claim("test", "asd-123");

            var identity = new Mock <ClaimsIdentity>();

            identity.Setup(i => i.FindFirst(It.IsAny <string>())).Returns(claim);

            var principal = new Mock <IPrincipal>();

            principal.Setup(p => p.Identity).Returns(identity.Object);

            var context = new Mock <ControllerContext>();

            context.Setup(c => c.HttpContext.User).Returns(principal.Object);

            mappingService.Setup(m => m.Map <Thread>(It.IsAny <CreateThreadViewModel>())).Returns(new Thread());

            CreateController controller = new CreateController(data.Object, mappingService.Object)
            {
                ControllerContext = context.Object
            };

            var thread = new CreateThreadViewModel();

            //Act
            var result = controller.Index(thread) as ViewResult;

            //Assert
            threadRepository.Verify(d => d.Add(It.IsAny <Thread>()));
        }
예제 #16
0
        public IActionResult CreateThread(CreateThreadViewModel model)
        {
            if (ModelState.IsValid)
            {
                Thread newThread = new Thread
                {
                    Title   = model.Title,
                    BoardId = model.BoardId
                };
                _threadRepository.Add(newThread);

                Post newPost = new Post
                {
                    Content  = model.Content,
                    ThreadId = newThread.Id,
                    User     = User.Identity.Name
                };
                _postRepository.Add(newPost);

                return(RedirectToAction("index", new { boardId = model.BoardId }));
            }
            return(View(model));
        }
예제 #17
0
        // GET: PrivateMessage/Create
        public ActionResult CreateThread()
        {
            CreateThreadViewModel viewModel = new CreateThreadViewModel();
            var userId = User.Identity.GetUserId();

            viewModel.User = db.Users.ToList().Find(x => x.Id == userId);

            viewModel.PostsCount  = db.Posts.ToList().FindAll(x => x.UserID == viewModel.User.Id).Count();
            viewModel.TopicsCount = db.Topics.ToList().FindAll(x => x.UserID == viewModel.User.Id).Count();

            viewModel.Roles = new List <IdentityRole>();

            foreach (IdentityUserRole role in viewModel.User.Roles)
            {
                viewModel.Roles.Add(db.Roles.ToList().Find(x => x.Id == role.RoleId));
            }

            var lastRole = viewModel.User.Roles.Last();

            viewModel.UserRole = db.Roles.Find(lastRole.RoleId).Name;

            return(View(viewModel));
        }
예제 #18
0
        public ActionResult CreateThread(CreateThreadViewModel request)
        {
            try
            {
                var newThread = new PrivateThread();

                var userId = User.Identity.GetUserId();

                newThread.Recipient = db.Users.ToList().Find(x => x.UserName == request.Recipient);
                newThread.SenderID  = userId;
                newThread.Title     = request.Title;

                db.PrivateThreads.Add(newThread);
                db.SaveChanges();

                var newMessage = new PrivateMessage();

                newMessage.AuthorID      = userId;
                newMessage.Content       = Html.EditMarkers(request.Content);
                newMessage.Date          = DateTime.Now;
                newMessage.PrivateThread = newThread;


                if (Request.Files != null)
                {
                    bool error = false;
                    if (Request.Files.Count > 3)
                    {
                        error         = true;
                        ViewBag.Error = Resources.AttachmentCount;
                    }
                    for (int i = 0; i < Request.Files.Count; i++)
                    {
                        if (Request.Files[i].ContentLength > 512 * 1024)
                        {
                            ViewBag.Error = Resources.AttachmentSize;
                            error         = true;
                            break;
                        }
                    }
                    if (error)
                    {
                        request.User        = db.Users.ToList().Find(x => x.Id == userId);
                        request.PostsCount  = db.Posts.ToList().FindAll(x => x.UserID == request.User.Id).Count();
                        request.TopicsCount = db.Topics.ToList().FindAll(x => x.UserID == request.User.Id).Count();

                        request.Roles = new List <IdentityRole>();

                        foreach (IdentityUserRole role in request.User.Roles)
                        {
                            request.Roles.Add(db.Roles.ToList().Find(x => x.Id == role.RoleId));
                        }

                        return(View(request));
                    }
                    db.PrivateMessages.Add(newMessage);
                    db.SaveChanges();
                    for (int i = 0; i < Request.Files.Count; i++)
                    {
                        HttpPostedFileBase file = Request.Files[i];
                        if (file == null || file.FileName == "")
                        {
                            continue;
                        }
                        file.SaveAs(HttpContext.Server.MapPath("~/Content/Attachments/")
                                    + file.FileName);
                        MessageFile _messageFile = new MessageFile();
                        _messageFile.Filename       = "~/Content/Attachments/" + file.FileName;
                        _messageFile.PrivateMessage = newMessage;
                        db.MessageFiles.Add(_messageFile);
                        db.SaveChanges();
                    }
                }
                else
                {
                    db.PrivateMessages.Add(newMessage);
                    db.SaveChanges();
                }

                return(RedirectToAction("ViewThread", new { id = newThread.ID }));
            }
            catch
            {
                var userId = User.Identity.GetUserId();

                request.User        = db.Users.ToList().Find(x => x.Id == userId);
                request.PostsCount  = db.Posts.ToList().FindAll(x => x.UserID == request.User.Id).Count();
                request.TopicsCount = db.Topics.ToList().FindAll(x => x.UserID == request.User.Id).Count();

                request.Roles = new List <IdentityRole>();

                foreach (IdentityUserRole role in request.User.Roles)
                {
                    request.Roles.Add(db.Roles.ToList().Find(x => x.Id == role.RoleId));
                }

                return(View(request));
            }
        }