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)); } } }
public NewsDetailsPage(NewsDto article) { InitializeComponent(); BindingContext = model = new NewsDetailsViewModel { Article = article }; }
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)); }
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")); } }
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)); }
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); }
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)); }
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)); }
public NewsDetailsPage(Data.Model.News news) { InitializeComponent(); BindingContext = model = new NewsDetailsViewModel { news = news }; }
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)); }
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)); }
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)); }
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)); }
// 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)); }
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)); }
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)); }
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() + ");"); }); }
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; }
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); }
// 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)); }
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); }
public NewsDetailsView(NewsDetailsViewModel viewModel) { InitializeComponent(); BindingContext = this.viewModel = viewModel; this.viewModel.LoadNewsDetailsCommand.CanExecuteChanged += HandleNewsLoaded; }