public static NewsItemTagModel ToModel(this NewsItemTag a)
 {
     return(new NewsItemTagModel()
     {
         Id = a.Id,
         NewsItemId = a.NewsItemId,
         TagId = a.TagId,
         DisplayOrder = a.DisplayOrder,
         Tag = a.Tag.ToModel()
     });
 }
        public IActionResult Put(NewsItemModel entityModel)
        {
            #region validate
            //if (!ModelState.IsValid)
            //    return BadRequest();
            if (entityModel == null)
            {
                VerboseReporter.ReportError("Dữ liệu không hợp lệ.");
                return(RespondFailure());
            }
            DateTime publishDt = entityModel.StartDateStr.ToDateTime();

            //get
            var article = _newsItemService.Get(entityModel.Id,
                                               x => x.NewsItemCategories,
                                               x => x.NewsItemTags);
            if (article == null)
            {
                VerboseReporter.ReportError("Không tìm thấy tin này", "post");
                return(RespondFailure());
            }
            #endregion

            #region NewsItem
            article.Name  = entityModel.Name;
            article.Short = entityModel.Short.GetSubString(ConstantKey.SummaryMaxLength);

            article.Full = HttpUtility.HtmlDecode(entityModel.Full);

            article.StartDateUtc = publishDt;
            article.EndDateUtc   = entityModel.EndDateUtc ?? publishDt.AddDays(7);
            article.DisplayOrder = entityModel.DisplayOrder;
            article.Published    = entityModel.Published;
            article.UpdatedOnUtc = DateTime.Now;
            article.Version      = article.Version + 1;

            article.MetaTitle       = entityModel.MetaTitle ?? article.Name;
            article.MetaDescription = entityModel.MetaDescription ?? article.Short;
            article.MetaKeywords    = entityModel.MetaKeywords ?? article.Name;
            //save it
            _newsItemService.Update(article);

            VerboseReporter.ReportSuccess("Sửa tin tức thành công", "put");
            #endregion


            #region newsCategory
            if (entityModel.newsCategoryIds != null && entityModel.newsCategoryIds.Length > 0)
            {
                foreach (int newsCategoryId in entityModel.newsCategoryIds)
                {
                    // tim chuyen muc
                    var foundNewsCategory = article.NewsItemCategories.FirstOrDefault(x => x.NewsCategoryId == newsCategoryId);
                    // neu khong tim thay chuyen muc trong bang quan he thi them moi
                    if (foundNewsCategory == null)
                    {
                        NewsItemCategory newsItemCategory = new NewsItemCategory()
                        {
                            NewsItemId     = article.Id,
                            NewsCategoryId = newsCategoryId,
                        };
                        _newsPubsService.Insert(newsItemCategory);
                    }
                    //    foreach (var newsPub in article.NewsPubs)
                    //    {
                    //        if (Array.IndexOf(entityModel.newsCategoryIds, newsPub.cat_id) == -1)
                    //        {
                    //            NewsPubs newsPubs = new NewsPubs()
                    //            {
                    //                article_id = article.id,
                    //                cat_id = newsCategoryId,
                    //            };
                    //            if (article.news_status != (int) NewsItemStatus.Unpublish)
                    //            {
                    //                newsPubs.approve_date = DateTime.Now;
                    //                newsPubs.approver = CurrentUser.full_name;
                    //            }
                    //            article.NewsPubs.Add(newsPubs);
                    //        }
                    //    }
                }
                //_NewsItemService.Update(article);
                // find list newsPubs by article_id
                var newsItemCategories = _newsPubsService.Get(x => x.NewsCategoryId == entityModel.Id).ToList();
                foreach (var newsItemCategory in newsItemCategories)
                {
                    // tim chuyen muc
                    var foundNewsCategory = entityModel.newsCategoryIds.FirstOrDefault(x => x == newsItemCategory.NewsCategoryId);
                    // neu khong tim thay chuyen muc trong mang danh muc gui len thi xoa di
                    if (foundNewsCategory == 0)
                    {
                        _newsPubsService.Delete(newsItemCategory);
                    }
                }
            }
            #endregion

            #region TagIds

            if (entityModel.TagIds != null && entityModel.TagIds.Length > 0)
            {
                foreach (var entityModelTagId in entityModel.TagIds)
                {
                    var foundNewsItemTag =
                        article.NewsItemTags.FirstOrDefault(x => x.TagId == entityModelTagId);
                    if (foundNewsItemTag == null)
                    {
                        NewsItemTag tag = new NewsItemTag()
                        {
                            TagId      = entityModelTagId,
                            NewsItemId = article.Id
                        };
                        _newsItemTagService.Insert(tag);
                    }
                }

                var newsItemTags = _newsItemTagService.Get(x => x.NewsItemId == entityModel.Id).ToList();
                foreach (var newsItemTag in newsItemTags)
                {
                    var foundNewsItemTag = entityModel.TagIds.FirstOrDefault(x => x == newsItemTag.TagId);
                    if (foundNewsItemTag == 0)
                    {
                        _newsItemTagService.Delete(newsItemTag);
                    }
                }
            }
            else
            {
                var newsItemTags = _newsItemTagService.Get(x => x.NewsItemId == entityModel.Id).ToList();
                foreach (var newsItemTag in newsItemTags)
                {
                    _newsItemTagService.Delete(newsItemTag);
                }
            }

            #endregion

            #region SaveLocalizedValue
            UpdateLocales(article, entityModel);
            #endregion

            return(RespondSuccess(article));
        }
        public IActionResult Post(NewsItemModel entityModel)
        {
            //if (!ModelState.IsValid)
            //    return BadRequest();
            if (entityModel == null)
            {
                VerboseReporter.ReportError("Dữ liệu không hợp lệ.");
                return(RespondFailure());
            }
            DateTime publishDt = entityModel.StartDateStr.ToDateTime();

            #region save NewsItem
            var article = new NewsItem
            {
                Name      = entityModel.Name,
                Short     = entityModel.Short.GetSubString(ConstantKey.SummaryMaxLength),
                Full      = HttpUtility.HtmlDecode(entityModel.Full),
                Published = entityModel.Published,

                CreatedOnUtc = publishDt, // DateTime.Now,

                StartDateUtc = publishDt,
                EndDateUtc   = entityModel.EndDateUtc,

                MetaTitle    = entityModel.MetaTitle ?? entityModel.Name,
                MetaKeywords = entityModel.MetaKeywords ?? entityModel.Name,
            };

            article.MetaDescription = entityModel.MetaDescription ?? article.Short;

            //save it
            _newsItemService.Insert(article);

            VerboseReporter.ReportSuccess("Tạo tin tức thành công", "post");
            #endregion

            #region newsCategoryIds
            if (entityModel.newsCategoryIds != null && entityModel.newsCategoryIds.Length > 0)
            {
                article.NewsItemCategories = new List <NewsItemCategory>();

                foreach (int newsCategoryId in entityModel.newsCategoryIds)
                {
                    NewsItemCategory newsPubs = new NewsItemCategory()
                    {
                        NewsItemId     = article.Id,
                        NewsCategoryId = newsCategoryId,
                    };
                    article.NewsItemCategories.Add(newsPubs);
                }
                _newsItemService.Update(article);
            }
            #endregion

            #region TagIds

            if (entityModel.TagIds != null && entityModel.TagIds.Length > 0)
            {
                article.NewsItemTags = new List <NewsItemTag>();
                foreach (var entityModelTagId in entityModel.TagIds)
                {
                    NewsItemTag newsItemTag = new NewsItemTag()
                    {
                        NewsItemId = article.Id,
                        TagId      = entityModelTagId
                    };
                    article.NewsItemTags.Add(newsItemTag);
                }
                _newsItemService.Update(article);
            }

            #endregion


            InsertLocales(article, entityModel);


            return(RespondSuccess(article));
        }