public void Can_save_and_load_newsItem() { var news = new NewsItem { Title = "Title 1", Short = "Short 1", Full = "Full 1", AllowComments = true, Published = true, CreatedOnUtc = new DateTime(2010, 01, 01), Language = new Language() { Name = "English", LanguageCulture = "en-Us", } }; var fromDb = SaveAndLoadEntity(news); fromDb.ShouldNotBeNull(); fromDb.Title.ShouldEqual("Title 1"); fromDb.Short.ShouldEqual("Short 1"); fromDb.Full.ShouldEqual("Full 1"); fromDb.AllowComments.ShouldEqual(true); fromDb.Published.ShouldEqual(true); fromDb.CreatedOnUtc.ShouldEqual(new DateTime(2010, 01, 01)); fromDb.Language.ShouldNotBeNull(); fromDb.Language.Name.ShouldEqual("English"); }
public void Can_save_and_load_newsItem_with_comments() { var news = new NewsItem { Title = "Title 1", Short = "Short 1", Full = "Full 1", AllowComments = true, Published = true, CreatedOnUtc = new DateTime(2010, 01, 01), Language = new Language { Name = "English", LanguageCulture = "en-Us", } }; news.NewsComments.Add ( new NewsComment { CommentText = "Comment text 1", CreatedOnUtc = new DateTime(2010, 01, 03), Customer = GetTestCustomer() } ); var fromDb = SaveAndLoadEntity(news); fromDb.ShouldNotBeNull(); fromDb.NewsComments.ShouldNotBeNull(); (fromDb.NewsComments.Count == 1).ShouldBeTrue(); fromDb.NewsComments.First().CommentText.ShouldEqual("Comment text 1"); }
/// <summary> /// Deletes a news /// </summary> /// <param name="newsItem">News item</param> public virtual void DeleteNews(NewsItem newsItem) { if (newsItem == null) throw new ArgumentNullException("newsItem"); _newsItemRepository.Delete(newsItem); //event notification _eventPublisher.EntityDeleted(newsItem); }
/// <summary> /// Deletes a news /// </summary> /// <param name="newsItem">News item</param> public virtual void DeleteNews(NewsItem newsItem) { if (newsItem == null) throw new ArgumentNullException("newsItem"); _newsItemRepository.Delete(newsItem); _cacheManager.RemoveByPattern(NEWS_PATTERN_KEY); //event notification _eventPublisher.EntityDeleted(newsItem); }
private NewsItemModel MapNewsItemModel(NewsItem newsItem) { if (newsItem == null) throw new ArgumentNullException("newsItem"); return new NewsItemModel { Id = newsItem.Id, SeName = newsItem.GetSeName(newsItem.LanguageId, ensureTwoPublishedLanguages: false), Title = newsItem.Title, Short = newsItem.Short, CreatedOn = _dateTimeHelper.ConvertToUserTime(newsItem.CreatedOnUtc, DateTimeKind.Utc) }; }
protected virtual void PrepareStoresMappingModel(NewsItemModel model, NewsItem newsItem, bool excludeProperties) { if (model == null) throw new ArgumentNullException("model"); model.AvailableStores = _storeService .GetAllStores() .Select(s => s.ToModel()) .ToList(); if (!excludeProperties) { if (newsItem != null) { model.SelectedStoreIds = _storeMappingService.GetStoresIdsWithAccess(newsItem); } } }
protected virtual void PrepareStoresMappingModel(NewsItemModel model, NewsItem newsItem, bool excludeProperties) { if (model == null) throw new ArgumentNullException("model"); if (!excludeProperties && newsItem != null) model.SelectedStoreIds = _storeMappingService.GetStoresIdsWithAccess(newsItem).ToList(); var allStores = _storeService.GetAllStores(); foreach (var store in allStores) { model.AvailableStores.Add(new SelectListItem { Text = store.Name, Value = store.Id.ToString(), Selected = model.SelectedStoreIds.Contains(store.Id) }); } }
public void Can_save_and_load_newsItem() { var news = new NewsItem { Title = "Title 1", Short = "Short 1", Full = "Full 1", Published = true, StartDateUtc = new DateTime(2010, 01, 01), EndDateUtc = new DateTime(2010, 01, 02), AllowComments = true, CommentCount = 1, LimitedToStores = true, CreatedOnUtc = new DateTime(2010, 01, 03), MetaTitle = "MetaTitle 1", MetaDescription = "MetaDescription 1", MetaKeywords = "MetaKeywords 1", Language = new Language { Name = "English", LanguageCulture = "en-Us", } }; var fromDb = SaveAndLoadEntity(news); fromDb.ShouldNotBeNull(); fromDb.Title.ShouldEqual("Title 1"); fromDb.Short.ShouldEqual("Short 1"); fromDb.Full.ShouldEqual("Full 1"); fromDb.Published.ShouldEqual(true); fromDb.StartDateUtc.ShouldEqual(new DateTime(2010, 01, 01)); fromDb.EndDateUtc.ShouldEqual(new DateTime(2010, 01, 02)); fromDb.AllowComments.ShouldEqual(true); fromDb.CommentCount.ShouldEqual(1); fromDb.LimitedToStores.ShouldEqual(true); fromDb.CreatedOnUtc.ShouldEqual(new DateTime(2010, 01, 03)); fromDb.MetaTitle.ShouldEqual("MetaTitle 1"); fromDb.MetaDescription.ShouldEqual("MetaDescription 1"); fromDb.MetaKeywords.ShouldEqual("MetaKeywords 1"); fromDb.Language.ShouldNotBeNull(); fromDb.Language.Name.ShouldEqual("English"); }
protected virtual void SaveStoreMappings(NewsItem newsItem, NewsItemModel model) { var existingStoreMappings = _storeMappingService.GetStoreMappings(newsItem); var allStores = _storeService.GetAllStores(); foreach (var store in allStores) { if (model.SelectedStoreIds != null && model.SelectedStoreIds.Contains(store.Id)) { //new store if (existingStoreMappings.Count(sm => sm.StoreId == store.Id) == 0) _storeMappingService.InsertStoreMapping(newsItem, store.Id); } else { //remove store var storeMappingToDelete = existingStoreMappings.FirstOrDefault(sm => sm.StoreId == store.Id); if (storeMappingToDelete != null) _storeMappingService.DeleteStoreMapping(storeMappingToDelete); } } }
/// <summary> /// Updates the news item /// </summary> /// <param name="news">News item</param> public virtual void UpdateNews(NewsItem news) { if (news == null) throw new ArgumentNullException("news"); _newsItemRepository.Update(news); //event notification _eventPublisher.EntityUpdated(news); }
protected virtual void PrepareNewsItemModel(NewsItemModel model, NewsItem newsItem, bool prepareComments) { if (newsItem == null) throw new ArgumentNullException("newsItem"); if (model == null) throw new ArgumentNullException("model"); model.Id = newsItem.Id; model.MetaTitle = newsItem.MetaTitle; model.MetaDescription = newsItem.MetaDescription; model.MetaKeywords = newsItem.MetaKeywords; model.SeName = newsItem.GetSeName(newsItem.LanguageId, ensureTwoPublishedLanguages: false); model.Title = newsItem.Title; model.Short = newsItem.Short; model.Full = newsItem.Full; model.AllowComments = newsItem.AllowComments; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(newsItem.CreatedOnUtc, DateTimeKind.Utc); model.NumberOfComments = newsItem.CommentCount; model.AddNewComment.DisplayCaptcha = _captchaSettings.Enabled && _captchaSettings.ShowOnNewsCommentPage; if (prepareComments) { var newsComments = newsItem.NewsComments.OrderBy(pr => pr.CreatedOnUtc); foreach (var nc in newsComments) { var commentModel = new NewsCommentModel() { Id = nc.Id, CustomerId = nc.CustomerId, CustomerName = nc.Customer.FormatUserName(), CommentTitle = nc.CommentTitle, CommentText = nc.CommentText, CreatedOn = _dateTimeHelper.ConvertToUserTime(nc.CreatedOnUtc, DateTimeKind.Utc), AllowViewingProfiles = _customerSettings.AllowViewingProfiles && nc.Customer != null && !nc.Customer.IsGuest(), }; if (_customerSettings.AllowCustomersToUploadAvatars) { commentModel.CustomerAvatarUrl = _pictureService.GetPictureUrl( nc.Customer.GetAttribute<int>(SystemCustomerAttributeNames.AvatarPictureId), _mediaSettings.AvatarPictureSize, _customerSettings.DefaultAvatarEnabled, defaultPictureType:PictureType.Avatar); } model.Comments.Add(commentModel); } } }
public static NewsItem ToEntity(this NewsItemModel model, NewsItem destination) { return Mapper.Map(model, destination); }
protected void PrepareNewsItemModel(NewsItemModel model, NewsItem newsItem, bool prepareComments) { if (newsItem == null) throw new ArgumentNullException("newsItem"); if (model == null) throw new ArgumentNullException("model"); model.Id = newsItem.Id; model.SeName = newsItem.GetSeName(); model.Title = newsItem.Title; model.Short = newsItem.Short; model.Full = newsItem.Full; model.AllowComments = newsItem.AllowComments; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(newsItem.CreatedOnUtc, DateTimeKind.Utc); model.NumberOfComments = newsItem.NewsComments.Count; if (prepareComments) { var newsComments = newsItem.NewsComments.Where(pr => pr.IsApproved).OrderBy(pr => pr.CreatedOnUtc); foreach (var nc in newsComments) { var commentModel = new NewsCommentModel() { Id = nc.Id, CustomerId = nc.CustomerId, CustomerName = nc.Customer.FormatUserName(), CommentTitle = nc.CommentTitle, CommentText = nc.CommentText, CreatedOn = _dateTimeHelper.ConvertToUserTime(nc.CreatedOnUtc, DateTimeKind.Utc), AllowViewingProfiles = _customerSettings.AllowViewingProfiles && nc.Customer != null && !nc.Customer.IsGuest(), }; if (_customerSettings.AllowCustomersToUploadAvatars) { var customer = nc.Customer; string avatarUrl = _pictureService.GetPictureUrl(customer.GetAttribute<int>(SystemCustomerAttributeNames.AvatarPictureId), _mediaSettings.AvatarPictureSize, false); if (String.IsNullOrEmpty(avatarUrl) && _customerSettings.DefaultAvatarEnabled) avatarUrl = _pictureService.GetDefaultPictureUrl(_mediaSettings.AvatarPictureSize, PictureType.Avatar); commentModel.CustomerAvatarUrl = avatarUrl; } model.Comments.Add(commentModel); } } }
/// <summary> /// Update news item comment totals /// </summary> /// <param name="newsItem">News item</param> public virtual void UpdateCommentTotals(NewsItem newsItem) { if (newsItem == null) throw new ArgumentNullException("newsItem"); int approvedCommentCount = 0; int notApprovedCommentCount = 0; var newsComments = newsItem.NewsComments; foreach (var nc in newsComments) { if (nc.IsApproved) approvedCommentCount++; else notApprovedCommentCount++; } newsItem.ApprovedCommentCount = approvedCommentCount; newsItem.NotApprovedCommentCount = notApprovedCommentCount; UpdateNews(newsItem); }
protected virtual void PrepareNewsModel(NewsItemModel model, NewsItem newsItem) { if (model == null) throw new ArgumentNullException("model"); if (newsItem != null) { var allCategories = _catalogueService.GetAllCatalogues(showHidden: true); foreach (var category in allCategories) { model.AvailableCatalogues.Add(new SelectListItem { Text = category.Name, Value = category.Id.ToString() }); } } }
protected virtual void PrepareNewsItemModel(NewsItemModel model, NewsItem newsItem, bool prepareComments, bool preparePictureModel = true, int? newsThumbPictureSize = null) { if (newsItem == null) throw new ArgumentNullException("newsItem"); if (model == null) throw new ArgumentNullException("model"); model.Id = newsItem.Id; model.MetaTitle = newsItem.MetaTitle; model.MetaDescription = newsItem.MetaDescription; model.MetaKeywords = newsItem.MetaKeywords; model.SeName = newsItem.GetSeName(newsItem.LanguageId, ensureTwoPublishedLanguages: false); model.Title = newsItem.Title; model.Short = newsItem.Short; model.Full = newsItem.Full; model.AllowComments = newsItem.AllowComments; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(newsItem.CreatedOnUtc, DateTimeKind.Utc); model.NumberOfComments = newsItem.CommentCount; model.AddNewComment.DisplayCaptcha = _captchaSettings.Enabled && _captchaSettings.ShowOnNewsCommentPage; if(preparePictureModel) { #region Prepare news picture //If a size has been set in the view, we use it in priority int pictureSize = newsThumbPictureSize.HasValue ? newsThumbPictureSize.Value : _mediaSettings.NewsThumbPictureSize; //prepare picture model var defaultNewsPictureCacheKey = string.Format(ModelCacheEventConsumer.PRODUCT_DEFAULTPICTURE_MODEL_KEY, newsItem.Id, pictureSize, true, _workContext.WorkingLanguage.Id, _webHelper.IsCurrentConnectionSecured(), _storeContext.CurrentStore.Id); model.DefaultPictureModel = _cacheManager.Get(defaultNewsPictureCacheKey, () => { var picture = _pictureService.GetPicturesByNewsId(newsItem.Id, 1).FirstOrDefault(); var pictureModel = new PictureModel { ImageUrl = _pictureService.GetPictureUrl(picture, pictureSize), FullSizeImageUrl = _pictureService.GetPictureUrl(picture), Title = string.Format(_localizationService.GetResource("Media.News.ImageLinkTitleFormat"), model.Title), AlternateText = string.Format(_localizationService.GetResource("Media.News.ImageAlternateTextFormat"), model.Title) }; return pictureModel; }); #endregion } if (prepareComments) { var newsComments = newsItem.NewsComments.OrderBy(pr => pr.CreatedOnUtc); foreach (var nc in newsComments) { var commentModel = new NewsCommentModel { Id = nc.Id, CustomerId = nc.CustomerId, CustomerName = nc.Customer.FormatUserName(), CommentTitle = nc.CommentTitle, CommentText = nc.CommentText, CreatedOn = _dateTimeHelper.ConvertToUserTime(nc.CreatedOnUtc, DateTimeKind.Utc), AllowViewingProfiles = _customerSettings.AllowViewingProfiles && nc.Customer != null && !nc.Customer.IsGuest(), }; if (_customerSettings.AllowCustomersToUploadAvatars) { commentModel.CustomerAvatarUrl = _pictureService.GetPictureUrl( nc.Customer.GetAttribute<int>(SystemCustomerAttributeNames.AvatarPictureId), _mediaSettings.AvatarPictureSize, _customerSettings.DefaultAvatarEnabled, defaultPictureType:PictureType.Avatar); } model.Comments.Add(commentModel); } } }
/// <summary> /// Inserts a news item /// </summary> /// <param name="news">News item</param> public virtual void InsertNews(NewsItem news) { if (news == null) throw new ArgumentNullException("news"); _newsItemRepository.Insert(news); _cacheManager.RemoveByPattern(NEWS_PATTERN_KEY); //event notification _eventPublisher.EntityInserted(news); }
/// <summary> /// Get a value indicating whether a news item is available now (availability dates) /// </summary> /// <param name="newsItem">News item</param> /// <returns>Result</returns> public static bool IsAvailable(this NewsItem newsItem) { return(IsAvailable(newsItem, DateTime.UtcNow)); }
protected virtual void PrepareAclModel(NewsItemModel model, NewsItem newsItem, bool excludeProperties) { if (model == null) throw new ArgumentNullException("model"); model.AvailableCustomerRoles = _customerService .GetAllCustomerRoles(true) .Select(cr => cr.ToModel()) .ToList(); if (!excludeProperties) { if (newsItem != null) { model.SelectedCustomerRoleIds = newsItem.CustomerRoles.ToArray(); } } }