Ejemplo n.º 1
0
        public async Task <IActionResult> NewsDetails(string newsId, string url)
        {
            if (!newsId.HasValue())
            {
                return(NotFound());
            }
            else
            {
                int userId = User.Identity.GetUserId <int>();
                var news   = await _uw.NewsRepository.GetNewsByIdAsync(newsId, userId);

                if (news == null)
                {
                    return(NotFound());
                }
                else
                {
                    string ipAddress = _accessor.HttpContext?.Connection?.RemoteIpAddress.ToString();
                    await _uw.NewsRepository.InsertVisitOfUserAsync(newsId, ipAddress);

                    var newsComments = await _uw.NewsRepository.GetNewsCommentsAsync(newsId);

                    var nextAndPreviousNews = await _uw.NewsRepository.GetNextAndPreviousNews(news.PublishDateTime);

                    var newsRelated = await _uw.NewsRepository.GetRelatedNewsAsync(2, news.TagIdsList, newsId);

                    var newsDetailsViewModel = new NewsDetailsViewModel(news, newsComments, newsRelated, nextAndPreviousNews);
                    return(View(newsDetailsViewModel));
                }
            }
        }
Ejemplo n.º 2
0
 public NewsDetailsPage(NewsDto article)
 {
     InitializeComponent();
     BindingContext = model = new NewsDetailsViewModel {
         Article = article
     };
 }
Ejemplo n.º 3
0
        public async Task <IActionResult> Details(Guid id)
        {
            //var n = HttpContext.User.Identity.Name;

            if (id == null)
            {
                return(NotFound());
            }

            NewsDTO newsDTObyId = await _newsService.GetByIdAsync(id, HomeController.cancellationToken);

            if (newsDTObyId == null)
            {
                return(NotFound());
            }

            NewsDetailsViewModel _newsDetailsViewModel = new NewsDetailsViewModel()
            {
                Id            = newsDTObyId.Id,
                Title         = newsDTObyId.Title,
                Body          = newsDTObyId.Body,
                SourseURL     = newsDTObyId.SourseURL,
                CreatedOnDate = newsDTObyId.CreatedOnDate,
                EditedOnDate  = newsDTObyId.EditedOnDate,
            };

            return(View(_newsDetailsViewModel));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> GetById(Guid id)
        {
            try
            {
                var newsDetails = await mediator.Send(new GetNewsByIdQueryModel(id));

                //var newsCategory = await mediator.Send(new GetCategoryByIdQueryModel(newsDetails.CategoryID));
                var newsComments = await mediator.Send(new GetNewsCommentsQueryModel(id));

                newsComments = newsComments.OrderByDescending(c => c.Added);
                var news = new NewsDetailsViewModel()
                {
                    News = newsDetails,
                    //Category = newsCategory,
                    NewsComments = newsComments
                };
                Log.Information("Get news model by newsId was successfully");
                return(Ok(news));
            }
            catch (Exception ex)
            {
                Log.Error($"Get news model by newsId was fail with exception:{Environment.NewLine}{ex.Message}");

                return(StatusCode(500, "Internal server error"));
            }
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var news = await _context.News
                       .Include(n => n.Match)
                       .FirstOrDefaultAsync(m => m.NewsID == id);

            if (news == null)
            {
                return(NotFound());
            }

            var vm = new NewsDetailsViewModel();

            vm.News = news;
            vm.Next = await _context.News.OrderBy(n => n.Date).Where(n => n.Date > news.Date).FirstOrDefaultAsync();

            vm.Previous = await _context.News.OrderByDescending(n => n.Date).Where(n => n.Date < news.Date).FirstOrDefaultAsync();

            return(View(vm));
        }
Ejemplo n.º 6
0
        public void _Return_View_With_Model(string cloud, string apiKey, string apiSecret, int newsId)
        {
            //Arrange
            var model = new NewsDetailsViewModel();
            var news  = new Models.News();

            var mockedAuthProvider = new Mock <IAuthenticationProvider>();

            var mockedNewsService = new Mock <INewsService>();

            mockedNewsService.Setup(n => n.GetNewsById(newsId)).Returns(news);

            var mockedViewModelFactory = new Mock <IViewModelFactory>();

            mockedViewModelFactory.Setup(v => v.CreateNewsDetailsViewModel(It.IsAny <Models.News>())).Returns(model);

            var fakeAcc          = new CloudinaryDotNet.Account(cloud, apiKey, apiSecret);
            var mockedCloudinary = new Mock <Cloudinary>(fakeAcc);

            var newsControllerSUT = new NewsController(mockedAuthProvider.Object, mockedNewsService.Object, mockedViewModelFactory.Object, mockedCloudinary.Object);

            //Act
            var res = newsControllerSUT.Details(newsId) as ViewResult;

            //Assert
            Assert.AreEqual(model, res.Model);
        }
        public async Task CheckIfGetNewsViewModelByIdAsyncWorksCorrectly()
        {
            this.SeedDatabase();

            var expectedModel = new NewsDetailsViewModel
            {
                Id           = this.firstNews.Id,
                Title        = this.firstNews.Title,
                CreatedOn    = this.firstNews.CreatedOn,
                Description  = this.firstNews.Description,
                UserUserName = this.firstNews.User.UserName,
                ImagePath    = this.firstNews.ImagePath,
                NewsComments = new HashSet <PostNewsCommentViewModel>(),
                ViewsCounter = this.firstNews.ViewsCounter,
            };

            expectedModel.CreatedOn = expectedModel.CreatedOn.ToLocalTime();

            var viewModel = await this.newsService.GetViewModelByIdAsync <NewsDetailsViewModel>(this.firstNews.Id);

            viewModel.CreatedOn = viewModel.CreatedOn.ToLocalTime();

            var expectedObj     = JsonConvert.SerializeObject(expectedModel);
            var actualResultObj = JsonConvert.SerializeObject(viewModel);

            Assert.Equal(expectedObj, actualResultObj);
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> Edit(NewsDetailsViewModel newsFromView)
        {
            NewsDTO newsDTOToChange = await _newsService.GetByIdAsync(newsFromView.Id, HomeController.cancellationToken);

            if (newsFromView.Id != newsDTOToChange.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    newsDTOToChange.Title        = newsFromView.Title;
                    newsDTOToChange.Body         = newsFromView.Body;
                    newsDTOToChange.SourseURL    = newsFromView.SourseURL;
                    newsDTOToChange.EditedOnDate = DateTime.Now;

                    await _newsService.UpdateAsync(newsDTOToChange);
                }
                catch
                {
                    return(NotFound());
                }
                return(RedirectToAction("Index", "Home"));
            }
            return(View(newsFromView));
        }
Ejemplo n.º 9
0
 public NewsDetailsPage(INavigation _navi, News _news)
 {
     Title = _news.Title;
     InitializeComponent();
     NavigationPage.SetHasNavigationBar(this, false);
     BindingContext = new NewsDetailsViewModel(_navi, _news, this);
 }
        public ActionResult AddNewsComment(NewsDetailsViewModel model)
        {
            var news = this.newsService.FindById(model.NewsId);

            if (ModelState.IsValid)
            {
                try
                {
                    var username = User.Identity.Name;
                    var date     = this.dateProvider.GetDate();
                    var comment  = this.newsCommentFactory.CreateNewsComment(model.Content, username, date);

                    news.Comments.Add(comment);

                    this.newsService.Save();

                    TempData[GlobalMessages.AddNewsCommentSuccessKey] = GlobalMessages.AddNewsCommentSuccessMessage;

                    return(RedirectToAction("News", new { newsId = news.Id }));
                }
                catch (System.Exception)
                {
                    ModelState.AddModelError("", GlobalMessages.AddNewsCommentErrorMessage);
                    TempData.Remove(GlobalMessages.AddNewsCommentSuccessKey);
                }
            }
            else
            {
                TempData.Remove(GlobalMessages.AddNewsCommentSuccessKey);
            }

            model.News = this.newsService.GetNewsById(news.Id);
            return(View("News", model));
        }
Ejemplo n.º 11
0
 public NewsDetailsPage(Data.Model.News news)
 {
     InitializeComponent();
     BindingContext = model = new NewsDetailsViewModel
     {
         news = news
     };
 }
Ejemplo n.º 12
0
        public async Task <IActionResult> Details(string id)
        {
            NewsDetailsViewModel model = await this.newsService.GetDetailsForNewByIdAsync <NewsDetailsViewModel>(id);

            string referer = this.Request.Headers["Referer"].ToString();

            model.Referer = referer;

            return(this.View(model));
        }
Ejemplo n.º 13
0
        public ActionResult Details(int id, string title)
        {
            var blogPost  = _blogPostRepository.Get(id);
            var viewModel = new NewsDetailsViewModel
            {
                EnableCommentsOnContent = _featureService.EnableCommentsOnContent.IsEnabledForUser(LoggedInUser),
                BlogPost = Mapper.Map(blogPost)
            };

            return(View(viewModel));
        }
Ejemplo n.º 14
0
        public ActionResult Details(int id)
        {
            NewsDetailsViewModel vm = this.service.GetDetails(id);

            if (vm == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
            }
            Response.StatusCode = 200;
            return(this.View(vm));
        }
Ejemplo n.º 15
0
        public ActionResult NewsDetails(int id)
        {
            NewsDataStore        Obj  = new NewsDataStore();
            DealsDataStore       Obj2 = new DealsDataStore();
            NewsDetailsViewModel n    = new NewsDetailsViewModel();

            n.News     = Obj.GetNewsByid(id);
            n.NewsList = Obj.GetNewsList();
            n.DealList = Obj2.GetDealsList();
            return(View(n));
        }
Ejemplo n.º 16
0
        // News/Details
        public IActionResult Details(int id)
        {
            var model     = GetListFromDatabase().First(r => r.Id == id);
            var viewModel = new NewsDetailsViewModel();

            viewModel.Headline     = model.Headline;
            viewModel.NewsText     = model.NewsText;
            viewModel.CurrentGrade = model.Grade;

            return(View(viewModel));
        }
Ejemplo n.º 17
0
        public ActionResult Delete(int id)
        {
            News news = _newsContext.Get(id);

            var config = new MapperConfiguration(cfg => cfg.CreateMap <Food, NewsDetailsViewModel>());
            var mapper = config.CreateMapper();

            //Copy values
            NewsDetailsViewModel newsDetails = mapper.Map <NewsDetailsViewModel>(news);

            return(View(newsDetails));
        }
Ejemplo n.º 18
0
        public async Task <IActionResult> Details(string id)
        {
            NewsDetailsViewModel newsDetailsViewModel = (await this.newsService.GetById(id)).To <NewsDetailsViewModel>();

            if (newsDetailsViewModel == null)
            {
                //TODO: Error Handling
                return(this.Redirect("/"));
            }

            return(this.View(newsDetailsViewModel));
        }
 public NewsCommentPopupPage(News news, Action <NewsComments> result, NewsComments comments = null)
 {
     this.news     = news;
     this.comments = comments;
     this.result   = result;
     InitializeComponent();
     BindingContext = new NewsDetailsViewModel(news);
     if (comments != null)
     {
         this.Comment.Text = comments.CommentContent;
     }
     this.Comment.Focus();
 }
        public ActionResult News(string newsId)
        {
            var news = this.newsService.GetNewsById(newsId);

            news.Comments = news.Comments.ToList().OrderByDescending(c => c.PostedOn);

            var model = new NewsDetailsViewModel()
            {
                News = news
            };

            return(View(model));
        }
Ejemplo n.º 21
0
        public NewsDetailsPage(News news)
        {
            InitializeComponent();
            Xamarin.Forms.PlatformConfiguration.iOSSpecific.Page.SetUseSafeArea(this, true);
            this.news      = news;
            BindingContext = new NewsDetailsViewModel(news);

            var cancel = new ToolbarItem
            {
                Text    = "Share",
                Command = new Command(() =>
                {
                    DependencyService.Get <IShares>().SharesIcon("https://news.cnblogs.com/n/" + news.Id + "/", news.Title, news.TopicIcon);
                })
            };

            ToolbarItems.Add(cancel);

            if (Device.Android == Device.RuntimePlatform)
            {
                cancel.Icon = "toolbar_share.png";
            }

            formsWebView.OnContentLoaded += delegate(object sender, EventArgs e)
            {
                RefreshNews();
            };
            formsWebView.AddLocalCallback("reload", async delegate(string obj)
            {
                if (formsWebView.LoadStatus == LoadMoreStatus.StausDefault || formsWebView.LoadStatus == LoadMoreStatus.StausError || formsWebView.LoadStatus == LoadMoreStatus.StausFail)
                {
                    var newsComments = JsonConvert.SerializeObject(await ViewModel.ReloadCommentsAsync());
                    await formsWebView.InjectJavascriptAsync("updateComments(" + newsComments + ");");
                }
            });
            formsWebView.AddLocalCallback("editItem", delegate(string id)
            {
                var newsComments = ViewModel.NewsComments.Where(n => n.CommentID == int.Parse(id)).FirstOrDefault();
                Device.BeginInvokeOnMainThread(async() =>
                {
                    var page = new NewsCommentPopupPage(news, new Action <NewsComments>(OnResult), newsComments);
                    await Navigation.PushPopupAsync(page);
                });
            });
            formsWebView.AddLocalCallback("deleteItem", async delegate(string id)
            {
                var result = await ViewModel.DeleteCommentAsync(int.Parse(id));
                await formsWebView.InjectJavascriptAsync("deleteComment(" + id + "," + result.ToString().ToLower() + ");");
            });
        }
Ejemplo n.º 22
0
 public NewsCommentPopupPage(News news, Action <NewsComments> result, NewsComments comments = null)
 {
     InitializeComponent();
     Xamarin.Forms.PlatformConfiguration.iOSSpecific.Page.SetUseSafeArea(this, true);
     this.news      = news;
     this.comments  = comments;
     this.result    = result;
     BindingContext = new NewsDetailsViewModel(news);
     if (comments != null)
     {
         this.Comment.Text = comments.CommentContent;
     }
     this.Comment.Focus();
     ViewModel.IsBusy = false;
 }
Ejemplo n.º 23
0
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var news = await _context.News
                       .Include(n => n.Group)
                       .Include(n => n.Medias)
                       .Include(n => n.User)
                       .Include(n => n.Comments)
                       .SingleOrDefaultAsync(n => n.NewsId == id);

            if (news == null)
            {
                return(NotFound());
            }

            var newsResult = new NewsDetailsViewModel()
            {
                CreateDate = news.CreateDate.ToSolar(),

                Description = news.Description,

                GroupName = news.Group?.Name ?? "بدون گروه",

                InSlider = "در اسلایدر " + ((news.InSlider) ? "است" : "نیست"),

                NameMedias = news.Medias.Select(m => m.Name).ToList(),

                NewsId = news.NewsId,

                NumberOfComments = news.Comments.Count(),

                Tages = news.Tages.Split(",").ToList(),

                Text = news.Text,

                Title = news.Title,

                UserName = news.User.UserNaem ?? "مشخص نشده یا کاربر پاک شده است",

                Views = news.Views
            };

            return(View(newsResult));
        }
        public void AddCommentToNews_AndRedirectToNews_IfAddingCommentNotFailed()
        {
            // Arrange
            var mockedNews        = new News();
            var mockedNewsComment = new NewsComment();
            var mockedNewsService = new Mock <INewsService>();

            mockedNewsService.Setup(s => s.FindById(It.IsAny <string>())).Returns(mockedNews).Verifiable();
            mockedNewsService.Setup(s => s.Save()).Verifiable();

            var mockedNewsCommentFactory = new Mock <INewsCommentFactory>();

            mockedNewsCommentFactory.Setup(f => f.CreateNewsComment(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>())).Returns(mockedNewsComment).Verifiable();

            var mockedDateProvider = new Mock <IDateProvider>();

            mockedDateProvider.Setup(d => d.GetDate()).Verifiable();

            var mockedContext = new Mock <ControllerContext>();

            mockedContext.Setup(c => c.HttpContext.User.Identity.Name).Returns("test");

            var controller = new HomeController(mockedNewsService.Object, mockedNewsCommentFactory.Object, mockedDateProvider.Object);

            controller.ControllerContext = mockedContext.Object;
            var model = new NewsDetailsViewModel()
            {
                NewsId = mockedNews.Id
            };

            // Act
            var result = controller.AddNewsComment(model) as RedirectToRouteResult;

            // Assert
            Assert.IsTrue(result.RouteValues.ContainsKey("newsId"));
            Assert.AreEqual(mockedNews.Id, result.RouteValues["newsId"]);
            Assert.AreEqual("News", result.RouteValues["action"]);
            Assert.IsTrue(mockedNews.Comments.Count == 1);
            Assert.IsTrue(mockedNews.Comments.Contains(mockedNewsComment));

            mockedNewsService.Verify(s => s.FindById(model.NewsId), Times.Once);
            mockedNewsService.Verify(s => s.Save(), Times.Once);

            mockedNewsCommentFactory.Verify(f => f.CreateNewsComment(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>()), Times.Once);
        }
        public async Task CheckIfSetViewsCounterWorksCorrectly()
        {
            this.SeedDatabase();

            var expectedModel = new NewsDetailsViewModel
            {
                Id           = this.firstNews.Id,
                Title        = this.firstNews.Title,
                CreatedOn    = this.firstNews.CreatedOn,
                Description  = this.firstNews.Description,
                UserUserName = this.firstNews.User.UserName,
                ImagePath    = this.firstNews.ImagePath,
                ViewsCounter = this.firstNews.ViewsCounter,
                NewsComments = new HashSet <PostNewsCommentViewModel>(),
            };

            var viewModel = await this.newsService.SetViewsCounter(this.firstNews.Id);

            Assert.NotEqual(expectedModel.ViewsCounter, viewModel.ViewsCounter);
        }
        public void RemoveSuccessMessage_FromTempData_IfModelStateIsNotValid()
        {
            // Arrange
            var mockedNews        = new News();
            var mockedNewsService = new Mock <INewsService>();

            mockedNewsService.Setup(s => s.FindById(It.IsAny <string>())).Returns(mockedNews).Verifiable();
            mockedNewsService.Setup(s => s.Save()).Verifiable();

            var mockedNewsCommentFactory = new Mock <INewsCommentFactory>();

            mockedNewsCommentFactory.Setup(f => f.CreateNewsComment(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>())).Verifiable();

            var mockedDateProvider = new Mock <IDateProvider>();

            mockedDateProvider.Setup(d => d.GetDate()).Verifiable();

            var controller = new HomeController(mockedNewsService.Object, mockedNewsCommentFactory.Object, mockedDateProvider.Object);
            var model      = new NewsDetailsViewModel()
            {
                NewsId = mockedNews.Id
            };

            controller.ModelState.AddModelError("Test error", "test message");

            // Act
            var result    = controller.AddNewsComment(model) as ViewResult;
            var viewModel = result.ViewData.Model as NewsDetailsViewModel;

            // Assert
            Assert.AreEqual("News", result.ViewName);
            Assert.AreEqual(model, viewModel);
            Assert.IsNull(result.TempData[GlobalMessages.AddNewsCommentSuccessKey]);

            mockedNewsService.Verify(s => s.FindById(model.NewsId), Times.Once);
            mockedNewsService.Verify(s => s.Save(), Times.Never);

            mockedNewsCommentFactory.Verify(f => f.CreateNewsComment(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>()), Times.Never);

            mockedDateProvider.Verify(d => d.GetDate(), Times.Never);
        }
Ejemplo n.º 27
0
        // GET: News/Details/5
        public IActionResult Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            News news = newsService.FindNewsByID(id);

            if (news == null)
            {
                return(NotFound());
            }

            var model = new NewsDetailsViewModel();
            NewsDetailsViewModel newsDetailsViewModel = Mapper.Map <NewsDetailsViewModel>(news);

            newsDetailsViewModel.SuggestedNews = newsService.GetNewsByCategory(news.Category.ToString()).Where(n => n.ID != news.ID);

            return(View(newsDetailsViewModel));
        }
Ejemplo n.º 28
0
        public NewsDetailsPage(News news)
        {
            this.news = news;
            InitializeComponent();
            BindingContext = new NewsDetailsViewModel(news);

            var cancel = new ToolbarItem
            {
                Text    = "分享",
                Command = new Command(() =>
                {
                    DependencyService.Get <IShares>().SharesIcon("https://news.cnblogs.com/n/" + news.Id + "/", news.Title, news.TopicIcon);
                })
            };

            ToolbarItems.Add(cancel);

            if (Device.Android == Device.RuntimePlatform)
            {
                cancel.Icon = "toolbar_share.png";
            }
        }
        public void SetErrorMessage_InModelState_IfAddingCommentFailed()
        {
            // Arrange
            var mockedNews        = new News();
            var mockedNewsService = new Mock <INewsService>();

            mockedNewsService.Setup(s => s.FindById(It.IsAny <string>())).Returns(mockedNews).Verifiable();
            mockedNewsService.Setup(s => s.Save()).Verifiable();

            var mockedNewsCommentFactory = new Mock <INewsCommentFactory>();

            mockedNewsCommentFactory.Setup(f => f.CreateNewsComment(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>())).Verifiable();

            var mockedDateProvider = new Mock <IDateProvider>();

            mockedDateProvider.Setup(d => d.GetDate()).Throws <Exception>();

            var controller = new HomeController(mockedNewsService.Object, mockedNewsCommentFactory.Object, mockedDateProvider.Object);
            var model      = new NewsDetailsViewModel()
            {
                NewsId = mockedNews.Id
            };

            // Act
            var result    = controller.AddNewsComment(model) as ViewResult;
            var viewModel = result.ViewData.Model as NewsDetailsViewModel;

            // Assert
            Assert.AreEqual("News", result.ViewName);
            Assert.AreEqual(model, viewModel);
            Assert.IsNull(result.TempData[GlobalMessages.AddNewsCommentSuccessKey]);
            Assert.IsTrue(result.ViewData.ModelState.ContainsKey(""));

            mockedNewsService.Verify(s => s.FindById(model.NewsId), Times.Once);
            mockedNewsService.Verify(s => s.Save(), Times.Never);

            mockedNewsCommentFactory.Verify(f => f.CreateNewsComment(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>()), Times.Never);
        }
Ejemplo n.º 30
0
 public NewsDetailsView(NewsDetailsViewModel viewModel)
 {
     InitializeComponent();
     BindingContext = this.viewModel = viewModel;
     this.viewModel.LoadNewsDetailsCommand.CanExecuteChanged += HandleNewsLoaded;
 }