コード例 #1
0
        public async Task CreatePost_Post_ModelError()
        {
            var context = MakeContext();

            var controller = new OperatorController(
                context.CurrentUserService,
                context.BranchesDao,
                context.MailDaoMock.Object)
            {
                ControllerContext = context.ControllerContext,
                TempData          = context.TempDataDictionary
            };

            var destinationBranch = context.Branches[0];
            var vm = new CreatePostViewModel
            {
                PersonFrom          = "personFrom",
                PersonTo            = "personTo",
                DestinationBranchId = destinationBranch.Id,
                AddressTo           = "addressTo"
            };

            controller.ModelState.AddModelError("", "error");
            var r = await controller.CreatePost(vm) as ViewResult;

            Assert.NotNull(r);
            Assert.Null(r.ViewName);
            var returnedVm = r.Model as CreatePostViewModel;

            Assert.NotNull(returnedVm);
            Assert.Equal(context.Branches, returnedVm.AllBranches);
            context.MailDaoMock.Verify(
                m => m.CreateAsync(It.IsAny <Post>(), It.IsAny <User>()),
                Times.Never);
        }
コード例 #2
0
        public IActionResult Create()
        {
            var tags      = this.tagRepository.GetAll();
            var viewModel = new CreatePostViewModel(tags);

            return(View(viewModel));
        }
コード例 #3
0
ファイル: Post.cs プロジェクト: Zach20/School-Projects
        // Functions

        public static NewsFeedViewModel CreatePost(CreatePostViewModel creatPostViewModel, HttpPostedFileBase postPhoto)
        {
            using (BewanderContext db = new BewanderContext())
            {
                // GET: Models needed for CreatePostViewModel
                string userID         = creatPostViewModel.UserID;
                User   user           = db.Users.Find(userID);
                Image  profilePicture = Image.GetProfileImages(userID, FileType.ProfilePicture);

                Post newPost = new Post {
                    DatePosted = DateTime.Now, Caption = creatPostViewModel.Caption, UserID = userID
                };
                Image postedPhoto = new Image();

                if (postPhoto != null)
                {
                    Image.SavePhotos(user, postPhoto);
                    postedPhoto     = (Image)db.Users.Find(userID).Files.Last();
                    newPost.PhotoID = postedPhoto.ID;
                }

                db.Posts.Add(newPost);
                db.Entry(user).State = EntityState.Modified;
                db.SaveChanges();

                NewsFeedViewModel postDisplayViewModel = new NewsFeedViewModel(user, profilePicture, postedPhoto, newPost);

                return(postDisplayViewModel);
            }
        }
コード例 #4
0
        public async Task <IActionResult> CreatePost(CreatePostViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user.");
            }

            await _applicationDbContext.Posts.AddAsync(new Post
            {
                Id          = Guid.NewGuid().ToString(),
                Title       = model.Title,
                TitleUrl    = model.TitleUrl,
                Description = model.Description,
                PostedOn    = DateTime.UtcNow,
                Author      = user.Email
            });

            await _applicationDbContext.SaveChangesAsync();

            return(View());
        }
コード例 #5
0
        //Creation
        public static void CreatePost(CreatePostViewModel newPostInfo)
        {
            try
            {
                var location = new GeoLocation();
                location.Latitude  = 2.43M;
                location.Longitude = 3.44M;

                var setDateTime = DateTime.Now;
                var newPost     = new Post();
                newPost.User         = CurrentUser.Storage().UserDb;
                newPost.GeoLocation  = location;
                newPost.Community    = DbManager.GetInstance().Community.Single(c => c.CommunityId == CurrentUser.Storage().UserDb.CommunityId);
                newPost.TaskType     = DbManager.GetInstance().Task.Single(t => t.TaskTypeId == newPostInfo.TaskTypeId);
                newPost.DatePosted   = setDateTime;
                newPost.DateModified = setDateTime;
                newPost.CommentTxt   = newPostInfo.UserComment;
                newPost.DoneFlag     = false;

                DbManager.GetInstance().Post.Add(newPost);

                DbManager.GetInstance().SaveChanges();
            }
            catch (System.Exception)
            {
                throw;
            }
        }
コード例 #6
0
        public async Task <int> CreatePostAsync(CreatePostViewModel post, User creator)
        {
            var message = new Message
            {
                Author  = creator,
                Text    = post.Message,
                Created = DateTime.Now
            };

            var discussion = new Discussion
            {
                Author   = creator,
                Topic    = post.Topic,
                Created  = DateTime.Now,
                Messages = new List <Message>
                {
                    message
                }
            };

            var entry = await _context.Discussions.AddAsync(discussion);

            await _context.SaveChangesAsync();

            _logger.LogInformation("New discussion was created: {0}", entry);

            return(entry.Entity.DiscussionId);
        }
コード例 #7
0
ファイル: HomeController.cs プロジェクト: sys920/MVC_Blog
        //Display Post in the input box for editing
        public ActionResult Edit(int?id)
        {
            if (!id.HasValue)
            {
                return(RedirectToAction(nameof(HomeController.Index)));
            }

            var post = DbContext.Posts.FirstOrDefault(
                p => p.Id == id);

            if (post == null)
            {
                return(RedirectToAction(nameof(HomeController.Index)));
            }

            var model = new CreatePostViewModel();

            model.Title     = post.Title;
            model.Body      = post.Body;
            model.Published = post.Published;
            model.MainSlide = post.MainSlide;
            model.MediaUrl  = post.MediaUrl;

            return(View(model));
        }
コード例 #8
0
        public async Task <IActionResult> Post([FromBody] CreatePostViewModel createPostView)
        {
            var postDto = _mapper.Map <CreatePostViewModel, PostDto>(createPostView);
            await _postService.CreateAsync(postDto);

            return(Ok());
        }
コード例 #9
0
        public async Task <IActionResult> Create(CreatePostViewModel model)
        {
            if (ModelState.IsValid)
            {
                User user = await _userManager.FindByNameAsync(User.Identity.Name);

                if (user is null)
                {
                    throw new InvalidOperationException("There is no current user.");
                }
                var post = new Post
                {
                    User     = user,
                    Title    = model.Title,
                    Text     = model.Text,
                    Time     = DateTime.Now,
                    Comments = null
                };
                if (String.IsNullOrWhiteSpace(model.Title) || String.IsNullOrWhiteSpace(model.Text))
                {
                    ModelState.AddModelError(String.Empty, "Both title and text must be provided.");
                }
                else
                {
                    await _context.PostModels.AddAsync(post);

                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Index"));
                }
            }
            return(View(model));
        }
コード例 #10
0
        public async Task <IActionResult> Add([FromForm] CreatePostDto createPostDto)
        {
            try
            {
                string createdFilePath = _fileService.CreateLocalFile(createPostDto.PhotoFile, PostPhotosFolder);

                var user = await _userManager.GetUserAsync(User);

                if (user == null)
                {
                    return(BadRequest());
                }

                createPostDto.AuthorId = user.Id;

                CreatePostViewModel createPostViewModel = CustomMapper.GetCreatePostViewModel(createPostDto, createdFilePath);
                var result = await _postService.Add(createPostViewModel);

                if (result.IsValid)
                {
                    return(Ok());
                }

                return(BadRequest(result.Errors));
            }
            catch (IOException) { }

            return(BadRequest());
        }
コード例 #11
0
ファイル: PostsController.cs プロジェクト: FightCore/Backend
        public async Task <IActionResult> CreatePost(CreatePostViewModel viewModel)
        {
            var userId = GetUserIdFromClaims(User);

            if (userId == null)
            {
                return(Unauthorized(new UnauthorizedErrorViewModel()));
            }

            var post = Mapper.Map <Post>(viewModel);

            post.AuthorId = userId.Value;
            // Automatically like your own post.
            post.Likes = new List <Like>
            {
                new Like
                {
                    UserId = userId.Value
                }
            };
            post.Posted = DateTime.Now;
            _postService.Add(post);
            await _context.SaveChangesAsync();

            return(CreatedAtRoute(new { id = post.Id }, null));
        }
コード例 #12
0
        public async Task <IActionResult> Edit(CreatePostViewModel model, int?id)
        {
            if (model != null && id != null)
            {
                List <string> _tags = null;

                if (model.Tags != null)
                {
                    // Работа с тэгами.
                    _tags = model.Tags
                            .ToLower()        // В нижний регистр.
                            .Replace(" ", "") // Удалить все пробелы.
                            .Split(',')       // Сделать массив подстрок.
                            .ToList();        // В List<string>.
                }
                else
                {
                    _tags = new List <string>()
                    {
                        "default"
                    };
                }

                Post post = await db.Posts.FirstOrDefaultAsync(p => p.Id == id);

                post.Title = model.Title;
                post.Tags  = _tags;
                post.Topic = model.Topic;
                post.Text  = model.Text;
                await db.SaveChangesAsync();

                return(Redirect("~/Post/Question/" + id));
            }
            return(NotFound());
        }
コード例 #13
0
        public async Task <IActionResult> Edit(int id)
        {
            Post post = await db.Posts
                        .Include(p => p.Sender)
                        .FirstOrDefaultAsync(p => p.Id == id);

            if (post.Sender.Login == User.Identity.Name && post != null)
            {
                string _tags = "";

                foreach (string tag in post.Tags)
                {
                    _tags += tag + ", ";
                }

                CreatePostViewModel viewModel = new CreatePostViewModel
                {
                    Title = post.Title,
                    Tags  = _tags,
                    Topic = post.Topic,
                    Text  = post.Text,
                    Id    = id
                };

                return(View(viewModel));
            }
            return(NotFound());
        }
コード例 #14
0
        public async Task <IActionResult> Create(CreatePostViewModel postModel)
        {
            Post post = new Post
            {
                Title = postModel.Title
            };

            foreach (var doc in postModel.Documents)
            {
                var document = await CreateDocumentAsync(doc).ConfigureAwait(false);

                post.PostDocuments.Add(document);
            }
            var user = await _userManager.FindByIdAsync(postModel.AuthorId);

            user.Posts.Add(post);
            var result = await _userManager.UpdateAsync(user);

            if (result.Succeeded)
            {
                RedirectToAction("Index", "Profile");
            }
            else
            {
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            return(View(postModel));
        }
コード例 #15
0
 public async Task <IActionResult> CreatePost(CreatePostViewModel createPostViewModel)
 {
     try
     {
         if (ModelState.IsValid)
         {
             var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "Images", createPostViewModel.FileUrl.FileName);
             using (var stream = new FileStream(path, FileMode.Create))
             {
                 await createPostViewModel.FileUrl.CopyToAsync(stream);
             }
             Post post = new Post()
             {
                 UserId       = HttpContext.Session.GetString("UserId"),
                 FileUrl      = "/Images/" + Path.GetFileName(path),
                 Description  = htmlEncoder.Encode(createPostViewModel.Description),
                 CreationDate = DateTime.Now
             };
             postService.Create(post);
         }
         return(RedirectToAction(nameof(Details), new { id = HttpContext.Session.GetString("UserId") }));
     }
     catch (Exception ex)
     {
         _logger.LogError(ex.Message);
         return(View("Error", new ErrorViewModel()));
     }
 }
        public ActionResult Create([Bind(Include = "Title,Body,AuthorId,Tags")] CreatePostViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                Post post = new Post
                {
                    Author   = db.Users.FirstOrDefault(u => u.Id == viewModel.AuthorId),
                    Title    = viewModel.Title,
                    Body     = viewModel.Body,
                    AuthorId = viewModel.AuthorId,
                };

                var existingTags = db.Tags.ToList();
                var inputTags    = viewModel.GetTags();
                if (inputTags[0] != string.Empty)
                {
                    post.AddTags(inputTags, existingTags);
                }

                db.Posts.Add(post);
                db.SaveChanges();

                this.AddNotification("Post created successfully.", NotificationType.SUCCESS);
                return(RedirectToAction("Details", new { id = post.Id }));
            }

            this.AddNotification("Error while creating the post.", NotificationType.ERROR);
            return(View());
        }
コード例 #17
0
        // GET: Posts/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Error", "Error"));
            }

            var post = await _context.Post.Include("PostTags.Category").
                       FirstOrDefaultAsync(p => p.Id == id);

            if (post == null)
            {
                return(RedirectToAction("Error", "Error"));
            }
            CreatePostViewModel createPostViewModel = new CreatePostViewModel(await _context.Category.ToListAsync());

            createPostViewModel.Post = post;
            List <int> cat = new List <int>();

            foreach (var item in post.Categories)
            {
                cat.Add(item.Id);
            }
            createPostViewModel.SelectedCategories = cat;
            return(View(createPostViewModel));
        }
コード例 #18
0
        public ActionResult Create(CreatePostViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.ImageList        = _imageService.Get();
                model.PostCategoryList = _postCategoryService.Get();
                model.UserList         = _userService.Get(new List <string>()
                {
                    "Admin", "Editor"
                });
                model.RoleList = _roleService.Get();

                return(View("_Create", model));
            }

            var postId = _postService.Create(model.PostTitle, model.PostCategoryId, model.PostAuthorUserId, model.PostDescription, model.PostBody);

            if (model.PublicationState == PublicationState.Published)
            {
                _postService.Publish(postId);
            }

            UpdateBanner(postId, model.BannerImageId);
            UpdateGallery(postId, model.GalleryImageList);

            _postService.Roles(postId, model.SelectedRoleList);

            return(this.Content("Blog"));
        }
コード例 #19
0
        public IActionResult Create(CreatePostViewModel postViewModel)
        {
            _uow.BeginTransaction();
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View());
                }
                var post = _mapper.Map <Post>(postViewModel);
                post.UserId = UserId;
                if (postViewModel.Photo != null)
                {
                    var path = "/Files" + postViewModel.Photo.FileName;
                    using var fileStream = new FileStream(_environment.WebRootPath + path, FileMode.Create);
                    postViewModel.Photo.CopyTo(fileStream);

                    post.Photo = path;
                }
                _uow.Posts.Create(post);
                _uow.Save();
                _uow.Commit();
                return(RedirectToAction("Index"));
            }
            catch
            {
                _uow.Rollback();
                return(View());
            }
        }
コード例 #20
0
        public async Task <IActionResult> Create(CreatePostViewModel newPostViewModel)
        {
            if (newPostViewModel.post.CategoryId == 0)
            {
                ModelState.AddModelError("", "Select Category");
            }
            else
            {
                long SelectedValue = newPostViewModel.post.CategoryId;
                //ViewBag.SelectedValue =category.id;

                newPostViewModel.post.Likes    = 0;
                newPostViewModel.post.Approved = false;
                newPostViewModel.post.PostedAt = DateTime.Now;
                newPostViewModel.post.Edited   = false;
                var userName = _userManager.GetUserName(User);
                newPostViewModel.post.UserName = userName;
                ApplicationUser userId = await _userManager.GetUserAsync(User);

                newPostViewModel.post.UserId           = userId;
                newPostViewModel.post.CategoryId       = SelectedValue;
                newPostViewModel.post.approvedByUser   = null;
                newPostViewModel.post.approvedByUserId = null;
            }

            await _postService.Insert(newPostViewModel.post);

            return(RedirectToAction("Index", "Home"));
        }
コード例 #21
0
        public async void Create_New_Post_Success()
        {
            IPostService postService = new PostService(_mockPostRepository.Object);


            CreatePostViewModel createPostViewModel = new CreatePostViewModel
            {
                Text   = PostText,
                Title  = PostTitle,
                FromId = Guid.NewGuid()
            };

            Post post = new Post(new Content(createPostViewModel.Text), new Title(createPostViewModel.Title), createPostViewModel.FromId);

            _mockPostRepository.Setup(repo => repo.AddAsync(It.Is <Post>(p => p.FromId == post.FromId))).Returns(Task.CompletedTask);
            _mockPostRepository.Setup(repo => repo.AddAsync(It.Is <Post>(p => p.FromId != post.FromId)));
            _mockPostRepository.Setup(repo => repo.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(post);


            var returnedPost = await postService.CreatePostAsync(createPostViewModel);

            Assert.NotNull(returnedPost);
            Assert.Equal(post.Title.Text, createPostViewModel.Title);
            Assert.Equal(post.Content.Text, createPostViewModel.Text);
            Assert.Equal(post.FromId, createPostViewModel.FromId);
        }
コード例 #22
0
        public ActionResult Create(CreatePostViewModel postView)
        {
            string tags = postView.Tags;
            var    post = Mapper.Map <CreatePostViewModel, Post>(postView);

            post.AuthorId = ((Student)Session["User"]).Id;
            db.Posts.Add(post);
            post.Created = DateTime.Now;
            if (post.Tags == null)
            {
                post.Tags = new List <Tags>();
            }
            foreach (var tag in tags.Split(' ').Distinct())
            {
                var buf = db.Tags.Where(a => a.Name == tag).SingleOrDefault();
                if (buf == null)
                {
                    buf = new Tags()
                    {
                        Name = tag
                    };
                    db.Tags.Add(buf);
                }
                post.Tags.Add(buf);
            }
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #23
0
        public ActionResult CreatePost(CreatePostViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            else
            {
                Post newPost = new Post();

                newPost.Text         = model.Text;
                newPost.DiscussionId = model.DiscussionId;
                newPost.UserId       = User.Identity.GetUserId();
                newPost.CreatedDate  = DateTime.Now;


                context.Posts.Add(newPost);
                ApplicationUser user = context.Users.SingleOrDefault(u => u.Id == newPost.UserId);
                user.PostsCount = user.PostsCount + 1;

                Discussion discussion = context.Discussions.SingleOrDefault(d => d.DiscussionId == newPost.DiscussionId);
                discussion.PostCount = discussion.PostCount + 1;

                context.SaveChanges();

                return(RedirectToAction("Discussion", new { discussionid = newPost.DiscussionId }));
            }
        }
コード例 #24
0
        public async Task <IActionResult> CreateNewPost(CreatePostViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("CreatePost", "Post", new { categoryId = model.Post.CategoryId }));
            }
            var user = await _userManager.GetUserAsync(User);

            if (user is null)
            {
                return(NotFound());
            }
            var entry = await _dbContext.Posts.AddAsync(new Post
            {
                AuthorId    = user.Id,
                CategoryId  = model.Post.CategoryId,
                Title       = model.Post.Title,
                Content     = model.Post.Content,
                DateCreated = DateTime.Now
            });

            var ok = await _dbContext.SaveChangesAsync();

            if (ok == 0)
            {
                return(StatusCode(500));
            }
            return(RedirectToAction("Post", "Post", new { id = entry.Entity.Id }));
        }
コード例 #25
0
        public async Task <ActionResult> Create()
        {
            var postCategories = await _postCategoryService.GetAsync();

            var imageList = await _imageService.GetAsync();

            var model = new CreatePostViewModel
            {
                PostCategoryId   = postCategories.First().PostCategoryId,
                PostAuthorUserId = UserHelper.Id,
                PostCategoryList = postCategories,
                UserList         = await _userService.GetByRoleAsync(new List <string> {
                    nameof(Admin), "Editor"
                }),
                PublicationState = PublicationState.Published,
                BannerImages     = new PaginationViewModel
                {
                    ImageList        = imageList.Where(x => x.ImageCategory == ImageCategory.General || x.ImageCategory == ImageCategory.Screenshot || x.ImageCategory == ImageCategory.Texture),
                    TargetInputField = BANNER_IMAGE_ID,
                    PaginationType   = BANNER
                },
                GalleryImages = new PaginationViewModel
                {
                    ImageList        = imageList.Where(x => x.ImageCategory == ImageCategory.General || x.ImageCategory == ImageCategory.Screenshot || x.ImageCategory == ImageCategory.Texture),
                    TargetInputField = GALLERY_IMAGE_LIST,
                    PaginationType   = GALLERY
                },
                RoleList = await _roleService.GetAsync()
            };

            return(View("_Create", model));
        }
コード例 #26
0
        public IActionResult UpdatePost([FromBody] CreatePostViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var post = postService.GetPostById(viewModel.Id);
                post.Tags.Clear();

                var updatedPost = ModelFactory.Create(post, viewModel);
                updatedPost.Modified = DateTime.UtcNow;

                if (updatedPost.Image.Base64 != null)
                {
                    updatedPost.Image.ToImage();
                }

                postService.UpdatePost(updatedPost);

                if (postService.SaveAll())
                {
                    return(Ok());
                }
            }

            return(BadRequest());
        }
コード例 #27
0
        public async Task <ActionResult> Create(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AlbumDTO albumDto = await albumService.FindByIdAsync((int)id);

            if (albumDto == null)
            {
                return(HttpNotFound());
            }
            string userId = albumDto.UserId;

            if (userId != User.Identity.GetUserId())
            {
                return(RedirectToAction("Index", "Home"));
            }

            CreatePostViewModel postVM = new CreatePostViewModel()
            {
                AlbumId = albumDto.Id
            };

            return(View(postVM));
        }
コード例 #28
0
        public ActionResult Create(CreatePostViewModel model)
        {
            if (ModelState.IsValid)
            {
                // save post
                var post = new Post
                {
                    Title  = model.Title,
                    Body   = model.Body,
                    Posted = DateTime.Now
                };

                // save tagPot
                var tagPost = new TagPost
                {
                    TagId  = model.SelectedTadId,
                    PostId = post.Id,
                    Place  = model.SelectedPlace
                };
                post.TagPost.Add(tagPost);

                db.Post.Add(post);
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
コード例 #29
0
        // GET: Post/Edit/5
        public ActionResult Edit(string forumName, string tagName, string postTitle)
        {
            if (postTitle == null)
            {
                return(PageNotFound());
            }

            var post = db.Post.First(m => m.Title == postTitle);

            if (post == null)
            {
                return(HttpNotFound());
            }

            var count = db.Post.Where(o => o.TagPost.Any(b => b.Tag.Name == tagName)).Count();
            var model = new CreatePostViewModel
            {
                Id          = post.Id,
                Title       = post.Title,
                Body        = post.Body,
                Tags        = db.Tag.ToList(),
                PlacesCount = count + 1
            };

            ViewBag.forumName = forumName;
            ViewBag.tagName   = tagName;
            ViewBag.postTitle = postTitle;

            return(View(model));
        }
コード例 #30
0
        public IActionResult Create()
        {
            var forumThreads = this.unitOfWork.ForumThreadRepository.GetAll().ToList();

            var model = new CreatePostViewModel(forumThreads);

            return(View(model));
        }