Esempio n. 1
0
        /// <summary>
        /// Remove NewsTranslation.
        /// </summary>
        /// <param name="request">The NewsTranslation Request Pivot to remove.</param>
        public void DeleteNewsTranslation(NewsTranslationRequestPivot request)
        {
            if (request.NewsTranslationPivot == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            NewsTranslation newsTranslation = _unitOfWork.NewsTranslationRepository.GetById(request.NewsTranslationPivot.TranslationId);

            _unitOfWork.NewsTranslationRepository.Delete(newsTranslation);
            _unitOfWork.Save();
        }
Esempio n. 2
0
        /// <summary>
        /// Change NewsTranslation values.
        /// </summary>
        /// <param name="request">The NewsTranslation Request Pivot to change.</param>
        public void UpdateNewsTranslation(NewsTranslationRequestPivot request)
        {
            if (request.NewsTranslationPivot == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            NewsTranslation newsTranslation = _unitOfWork.NewsTranslationRepository.GetById(request.NewsTranslationPivot.TranslationId);

            newsTranslation.NewsSummary     = request.NewsTranslationPivot.NewsSummary;
            newsTranslation.NewsTitle       = request.NewsTranslationPivot.NewsTitle;
            newsTranslation.NewsDescription = request.NewsTranslationPivot.NewsDescription;
            _unitOfWork.Save();
        }
Esempio n. 3
0
        /// <summary>
        /// Create new NewsTranslation.
        /// </summary>
        /// <param name="request">The NewsTranslation Request Pivot to add.</param>
        /// <returns>NewsTranslation Response Pivot created.</returns>
        public NewsTranslationResponsePivot CreateNewsTranslation(NewsTranslationRequestPivot request)
        {
            if (request.NewsTranslationPivot == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            NewsTranslation newsTranslation = request.NewsTranslationPivot.ToEntity();

            _unitOfWork.NewsTranslationRepository.Insert(newsTranslation);
            _unitOfWork.Save();
            return(new NewsTranslationResponsePivot()
            {
                NewsTranslationPivot = newsTranslation.ToPivot()
            });
        }
Esempio n. 4
0
        /// <summary>
        /// Change NewsTranslation values.
        /// </summary>
        /// <param name="request">The NewsTranslation Request Pivot to change.</param>
        public void UpdateNewsTranslationRange(NewsTranslationRequestPivot request)
        {
            if (request.NewsTranslationPivotList == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            foreach (var item in request.NewsTranslationPivotList)
            {
                NewsTranslation newsTranslation = _unitOfWork.NewsTranslationRepository.GetById(item.TranslationId);
                newsTranslation.NewsSummary     = item.NewsSummary;
                newsTranslation.NewsTitle       = item.NewsTitle;
                newsTranslation.NewsDescription = item.NewsDescription;
                _unitOfWork.Save();
            }
        }
Esempio n. 5
0
 /// <summary>
 /// From newsTranslation To newsTranslation Pivot.
 /// </summary>
 /// <param name="newsTranslation">newsTranslation TO ASSEMBLE</param>
 /// <returns>newsTranslationPivot result.</returns>
 public static NewsTranslationPivot ToPivot(this NewsTranslation newsTranslation)
 {
     if (newsTranslation == null)
     {
         return(null);
     }
     return(new NewsTranslationPivot
     {
         TranslationId = newsTranslation.TranslationId,
         NewsTitle = newsTranslation.NewsTitle,
         NewsSummary = newsTranslation.NewsSummary,
         NewsDescription = newsTranslation.NewsDescription,
         LanguageId = newsTranslation.LanguageId,
         Language = newsTranslation.Language.ToPivot(),
         NewsId = newsTranslation.NewsId,
         News = newsTranslation.News.ToPivot(),
     });
 }
Esempio n. 6
0
        public async Task <ActionResultResponse <string> > Insert(string tenantId, string creatorId,
                                                                  string creatorFullName, string creatorAvatar, NewsMeta newsMeta, bool isSend)
        {
            var newsId = Guid.NewGuid().ToString();
            var news   = new News
            {
                Id = newsId,
                ConcurrencyStamp = newsId,
                IsActive         = newsMeta.IsActive,
                FeatureImage     = newsMeta.FeatureImage,
                BannerImage      = newsMeta.BannerImage,
                AltImage         = newsMeta.AltImage,
                Source           = newsMeta.Source,
                Status           = isSend ? ApproverStatus.Pending : ApproverStatus.Draft,
                TenantId         = tenantId,
                CreatorId        = creatorId,
                CreatorFullName  = creatorFullName,
                CreatorAvatar    = creatorAvatar
            };

            if (news.Status == ApproverStatus.Pending)
            {
                news.SentTime = DateTime.Now;
            }

            if (newsMeta.IsHot.HasValue)
            {
                news.IsHot           = newsMeta.IsHot.Value;
                news.LastUpdateIsHot = DateTime.Now;
            }

            if (newsMeta.IsHomePage.HasValue)
            {
                news.IsHomePage           = newsMeta.IsHomePage.Value;
                news.LastUpdateIsHomePage = DateTime.Now;
            }
            var result = await _newsRepository.Insert(news);

            if (result <= 0)
            {
                return(new ActionResultResponse <string>(result,
                                                         _sharedResourceService.GetString(ErrorMessage.SomethingWentWrong)));
            }

            #region insert news Translation.

            if (newsMeta.NewsTranslations.Count > 0)
            {
                var resultInsertTranslation = await InsertNewsTranslation();

                if (resultInsertTranslation.Code <= 0)
                {
                    return(resultInsertTranslation);
                }
            }

            #endregion

            #region insert Categories News.

            if (newsMeta.CategoriesNews.Count > 0)
            {
                var resultInsertCategoriesNews = await InsertCategoriesNews();

                if (resultInsertCategoriesNews.Code <= 0)
                {
                    return(resultInsertCategoriesNews);
                }
            }

            #endregion

            return(new ActionResultResponse <string>(1,
                                                     _websiteResourceService.GetString("Add new news successful."),
                                                     string.Empty, newsId));

            #region Local functions

            async Task <ActionResultResponse <string> > InsertNewsTranslation()
            {
                var apiUrls = _configuration.GetApiUrl();

                if (apiUrls == null)
                {
                    return(new ActionResultResponse <string>(-5,
                                                             _sharedResourceService.GetString(
                                                                 "Missing some configuration. Please contact with administrator.")));
                }
                var newsTranslations = new List <NewsTranslation>();
                var newsTags         = new List <TagSubjectViewModel>();

                foreach (var newsTranslation in newsMeta.NewsTranslations)
                {
                    // Check name exists.
                    var isNameExists = await _newsTranslationRepository.CheckExists(tenantId, newsId,
                                                                                    newsTranslation.LanguageId, newsTranslation.Title);

                    if (isNameExists)
                    {
                        await RollbackInsertNews();

                        return(new ActionResultResponse <string>(-1,
                                                                 _websiteResourceService.GetString("News title: \"{0}\" already exists.",
                                                                                                   newsTranslation.Title)));
                    }

                    var newsTranslationInsert = new NewsTranslation
                    {
                        NewsId          = newsId,
                        TenantId        = tenantId,
                        LanguageId      = newsTranslation.LanguageId.Trim(),
                        Title           = newsTranslation.Title.Trim(),
                        MetaTitle       = newsTranslation.MetaTitle?.Trim(),
                        Description     = newsTranslation.Description?.Trim(),
                        MetaDescription = newsTranslation.MetaDescription?.Trim(),
                        MetaKeyword     = newsTranslation.MetaKeyword?.Trim(),
                        Content         = newsTranslation.Content?.Trim(),
                        SeoLink         = newsTranslation.SeoLink?.Trim(),
                        UnsignName      = newsTranslation.Title.StripVietnameseChars().ToUpper()
                    };

                    if (!string.IsNullOrEmpty(newsTranslation.SeoLink))
                    {
                        newsTranslationInsert.SeoLink = newsTranslation.SeoLink.ToUrlString();
                    }
                    else
                    {
                        newsTranslationInsert.SeoLink = newsTranslation.Title.ToUrlString();
                    }

                    // Check Seolink exists.
                    var isSeolinkExists = await _newsTranslationRepository.CheckSeoLinkExists(tenantId, newsId,
                                                                                              newsTranslation.LanguageId, newsTranslationInsert.SeoLink);

                    if (isSeolinkExists)
                    {
                        await RollbackInsertNews();

                        return(new ActionResultResponse <string>(-2,
                                                                 _websiteResourceService.GetString("Seo link: \"{0}\" already exists.",
                                                                                                   newsTranslationInsert.SeoLink)));
                    }

                    newsTranslations.Add(newsTranslationInsert);

                    var newsTagInsert = new TagSubjectViewModel
                    {
                        TenantId        = tenantId,
                        CreatorId       = creatorId,
                        CreatorFullName = creatorFullName,
                        CreatorAvata    = creatorAvatar,
                        Type            = TagType.News,
                        SubjectId       = newsId,
                        LanguageId      = newsTranslation.LanguageId.Trim(),
                        Tags            = newsTranslation.Tags
                    };
                    newsTags.Add(newsTagInsert);
                }

                var resultTag = await new HttpClientService()
                                .PostAsync <ActionResultResponse>($"{apiUrls.CoreApiUrl}/tags", newsTags);

                var resultTranslation = await _newsTranslationRepository.Inserts(newsTranslations);

                if (resultTranslation > 0)
                {
                    return(new ActionResultResponse <string>(resultTranslation,
                                                             _websiteResourceService.GetString("Add new news translation successful.")));
                }

                await RollbackInsertNewsTranslation();
                await RollbackInsertNews();

                return(new ActionResultResponse <string>(-3,
                                                         _websiteResourceService.GetString(
                                                             "Can not insert news translation. Please contact with administrator.")));
            }

            async Task <ActionResultResponse <string> > InsertCategoriesNews()
            {
                var categoriesNews = new List <CategoriesNews>();

                foreach (var categories in newsMeta.CategoriesNews)
                {
                    var iscategoriesNewExists =
                        await _categoriesNewsRepository.CheckExistsByNewsIdAndCategoryId(newsId,
                                                                                         categories);

                    if (iscategoriesNewExists)
                    {
                        continue;
                    }
                    var categoriesInsert = new CategoriesNews
                    {
                        NewsId     = newsId,
                        CategoryId = categories
                    };

                    var iscategoriesExists = await _categoryRepository.CheckExistsById(tenantId, categories);

                    if (iscategoriesExists)
                    {
                        categoriesNews.Add(categoriesInsert);
                    }
                }
                var resultCategoriesNews = await _categoriesNewsRepository.Inserts(categoriesNews);

                if (resultCategoriesNews > 0)
                {
                    return(new ActionResultResponse <string>(resultCategoriesNews,
                                                             _websiteResourceService.GetString("Add new categories news successful.")));
                }

                await RollbackInsertCategoriesNews();
                await RollbackInsertNewsTranslation();
                await RollbackInsertNews();

                return(new ActionResultResponse <string>(-3,
                                                         _websiteResourceService.GetString(
                                                             "Can not insert categories news. Please contact with administrator.")));
            }

            async Task RollbackInsertNews()
            {
                await _newsRepository.ForceDelete(newsId);
            }

            async Task RollbackInsertNewsTranslation()
            {
                await _newsTranslationRepository.Delete(newsId);
            }

            async Task RollbackInsertCategoriesNews()
            {
                await _categoriesNewsRepository.DeleteByNewsId(newsId);
            }

            #endregion Local functions
        }
Esempio n. 7
0
        public async Task <ActionResultResponse> Update(string tenantId, string lastUpdateUserId,
                                                        string lastUpdateFullName, string lastUpdateAvatar, string newsId,
                                                        NewsMeta newsMeta, bool isSend)
        {
            var apiUrls = _configuration.GetApiUrl();

            if (apiUrls == null)
            {
                return(new ActionResultResponse <string>(-5,
                                                         _sharedResourceService.GetString(
                                                             "Missing some configuration. Please contact with administrator.")));
            }
            var newsTags = new List <TagSubjectViewModel>();

            var info = await _newsRepository.GetInfo(newsId);

            if (info == null)
            {
                return(new ActionResultResponse(-1, _websiteResourceService.GetString("News does not exists.")));
            }

            if (info.TenantId != tenantId)
            {
                return(new ActionResultResponse(-2,
                                                _websiteResourceService.GetString(ErrorMessage.NotHavePermission)));
            }

            if (info.ConcurrencyStamp != newsMeta.ConcurrencyStamp)
            {
                return(new ActionResultResponse(-3,
                                                _websiteResourceService.GetString(
                                                    "The news already updated by other people. you are not allowed to edit the news information.")));
            }

            info.Status             = isSend ? ApproverStatus.Pending : ApproverStatus.Draft;
            info.IsActive           = newsMeta.IsActive;
            info.FeatureImage       = newsMeta.FeatureImage;
            info.BannerImage        = newsMeta.BannerImage;
            info.AltImage           = newsMeta.AltImage;
            info.Source             = newsMeta.Source;
            info.ConcurrencyStamp   = Guid.NewGuid().ToString();
            info.LastUpdate         = DateTime.Now;
            info.LastUpdateUserId   = lastUpdateUserId;
            info.LastUpdateFullName = lastUpdateFullName;
            info.LastUpdateAvatar   = lastUpdateAvatar;
            info.Source             = newsMeta.Source;

            if (newsMeta.IsHot.HasValue)
            {
                info.IsHot           = newsMeta.IsHot.Value;
                info.LastUpdateIsHot = DateTime.Now;
            }

            if (newsMeta.IsHomePage.HasValue)
            {
                info.IsHomePage           = newsMeta.IsHomePage.Value;
                info.LastUpdateIsHomePage = DateTime.Now;
            }

            if (info.Status == ApproverStatus.Approved)
            {
                info.Status = isSend ? ApproverStatus.Pending : ApproverStatus.Draft;
            }

            await _newsRepository.Update(info);

            #region news translation.
            if (newsMeta.NewsTranslations.Count > 0)
            {
                var resultUpdateTranslation = await UpdateNewTranslation();

                if (resultUpdateTranslation.Code <= 0)
                {
                    return(resultUpdateTranslation);
                }
            }
            #endregion

            #region CategoriesNews.
            if (newsMeta.CategoriesNews.Count > 0)
            {
                var resultUpdateCategoriesNews = await UpdateCategoriesNews();

                if (resultUpdateCategoriesNews.Code <= 0)
                {
                    return(resultUpdateCategoriesNews);
                }
            }
            #endregion

            return(new ActionResultResponse(1, _websiteResourceService.GetString("Update news successful.")));

            async Task <ActionResultResponse> UpdateNewTranslation()
            {
                foreach (var newsTranslation in newsMeta.NewsTranslations)
                {
                    var isNameExists = await _newsTranslationRepository.CheckExists(tenantId, info.Id,
                                                                                    newsTranslation.LanguageId, newsTranslation.Title);

                    if (isNameExists)
                    {
                        return(new ActionResultResponse(-4, _websiteResourceService.GetString("News name: \"{0}\" already exists.")));
                    }

                    var newsTranslationInfo =
                        await _newsTranslationRepository.GetInfo(info.Id, newsTranslation.LanguageId);

                    if (newsTranslationInfo != null)
                    {
                        newsTranslationInfo.Title           = newsTranslation.Title.Trim();
                        newsTranslationInfo.MetaTitle       = newsTranslation.MetaTitle?.Trim();
                        newsTranslationInfo.Description     = newsTranslation.Description?.Trim();
                        newsTranslationInfo.MetaDescription = newsTranslation.MetaDescription?.Trim();
                        newsTranslationInfo.MetaKeyword     = newsTranslation.MetaKeyword?.Trim();
                        newsTranslationInfo.UnsignName      = newsTranslation.Title?.StripVietnameseChars().ToUpper();
                        newsTranslationInfo.Content         = newsTranslation.Content?.Trim();

                        if (!string.IsNullOrEmpty(newsTranslation.SeoLink))
                        {
                            newsTranslationInfo.SeoLink = newsTranslation.SeoLink.ToPlainText();
                        }
                        else
                        {
                            newsTranslationInfo.SeoLink = newsTranslation.Title.ToPlainText();
                        }

                        // Check Seolink exists.
                        var isSeolinkExists = await _newsTranslationRepository.CheckSeoLinkExists(tenantId, newsId,
                                                                                                  newsTranslation.LanguageId, newsTranslationInfo.SeoLink);

                        if (isSeolinkExists)
                        {
                            return(new ActionResultResponse(-5,
                                                            _websiteResourceService.GetString("Seo link: \"{0}\" already exists.",
                                                                                              newsTranslationInfo.SeoLink)));
                        }

                        await _newsTranslationRepository.Update(newsTranslationInfo);
                    }
                    else
                    {
                        var newsTranslationInsert = new NewsTranslation
                        {
                            NewsId          = newsId,
                            TenantId        = tenantId,
                            LanguageId      = newsTranslation.LanguageId.Trim(),
                            Title           = newsTranslation.Title.Trim(),
                            MetaTitle       = newsTranslation.MetaTitle?.Trim(),
                            Description     = newsTranslation.Description?.Trim(),
                            MetaDescription = newsTranslation.MetaDescription?.Trim(),
                            MetaKeyword     = newsTranslation.MetaKeyword?.Trim(),
                            Content         = newsTranslation.Content?.Trim(),
                            UnsignName      = newsTranslation.Title?.StripVietnameseChars().ToUpper()
                        };

                        if (!string.IsNullOrEmpty(newsTranslation.SeoLink))
                        {
                            newsTranslationInsert.SeoLink = newsTranslation.SeoLink.ToUrlString();
                        }
                        else
                        {
                            newsTranslationInsert.SeoLink = newsTranslation.Title.ToUrlString();
                        }
                        // Check Seolink exists.
                        var isSeolinkExists = await _newsTranslationRepository.CheckSeoLinkExists(tenantId, newsId,
                                                                                                  newsTranslation.LanguageId, newsTranslationInsert.SeoLink);

                        if (isSeolinkExists)
                        {
                            return(new ActionResultResponse(-6,
                                                            _websiteResourceService.GetString("Seo link: \"{0}\" already exists.",
                                                                                              newsTranslationInsert.SeoLink)));
                        }
                        await _newsTranslationRepository.Insert(newsTranslationInsert);
                    }
                    var videoTagInsert = new TagSubjectViewModel
                    {
                        TenantId        = tenantId,
                        CreatorId       = lastUpdateUserId,
                        CreatorFullName = lastUpdateFullName,
                        CreatorAvata    = lastUpdateAvatar,
                        Type            = TagType.News,
                        SubjectId       = newsId,
                        LanguageId      = newsTranslation.LanguageId.Trim(),
                        Tags            = newsTranslation.Tags
                    };
                    newsTags.Add(videoTagInsert);
                }

                var resultTag = await new HttpClientService()
                                .PostAsync <ActionResultResponse>($"{apiUrls.CoreApiUrl}/tags", newsTags);

                return(new ActionResultResponse(1,
                                                _websiteResourceService.GetString("Update news translation successful.")));
            }

            async Task <ActionResultResponse> UpdateCategoriesNews()
            {
                var resultDelete = await _categoriesNewsRepository.DeleteByNewsId(newsId);

                var categoriesNews = new List <CategoriesNews>();

                foreach (var categories in newsMeta.CategoriesNews)
                {
                    var categoriesInsert = new CategoriesNews
                    {
                        NewsId     = newsId,
                        CategoryId = categories
                    };

                    var iscategoriesExists = await _categoryRepository.CheckExistsById(tenantId, categories);

                    if (iscategoriesExists)
                    {
                        categoriesNews.Add(categoriesInsert);
                    }
                }
                var resultcategories = await _categoriesNewsRepository.Inserts(categoriesNews);

                if (resultcategories > 0)
                {
                    return(new ActionResultResponse(resultcategories,
                                                    _websiteResourceService.GetString("Update categories news successful.")));
                }

                return(new ActionResultResponse(-7,
                                                _websiteResourceService.GetString("Can not update categories news. Please contact with administrator.")));
            }
        }
Esempio n. 8
0
 public async Task <int> Update(NewsTranslation newsTranslation)
 {
     return(await Context.SaveChangesAsync());
 }
Esempio n. 9
0
 public async Task <int> Insert(NewsTranslation newsTranslation)
 {
     _newsTranslationRepository.Create(newsTranslation);
     return(await Context.SaveChangesAsync());
 }
Esempio n. 10
0
        public JsonResult Save(NewsViewModel model)
        {
            var currentUser = GetAuthenticatedUser();

            try
            {
                DateTime?expiredDate = null;
                if (!string.IsNullOrEmpty(model.PersianExpiredDate))
                {
                    expiredDate = DateUtility.GetDateTime(model.PersianExpiredDate);
                }

                if (model.id != null && model.id > 0)
                {
                    if (string.IsNullOrEmpty(model.fileId) && Request.Files.Count == 0)
                    {
                        return(Error("وارد کردن تصویر الزامی است."));
                    }

                    var entity = _context.News.Single(x => x.StatusId != NewsStatus.Deleted.Id && x.Id == model.id);

                    if (Request.Files.Count > 0)
                    {
                        if (!string.IsNullOrEmpty(entity.FileId))
                        {
                            AsefianFileContextHelper.DeleteFile(entity.FileId, entity.FileName, currentUser.id, "admin", "news");
                        }

                        var fileEntity = AsefianFileContextHelper.Save(Request.Files[0], currentUser.id, GetCurrentIp(), "admin", "news");

                        model.fileId   = fileEntity.id;
                        model.fileName = fileEntity.fileName;
                    }
                    else if (string.IsNullOrEmpty(model.fileId) && !string.IsNullOrEmpty(entity.FileId))
                    {
                        if (!string.IsNullOrEmpty(entity.FileId))
                        {
                            AsefianFileContextHelper.DeleteFile(entity.FileId, entity.FileName, currentUser.id, "admin", "news");
                        }
                    }

                    entity.Sku          = model.translations.Single(x => x.languageId == Language.Persian.Id).title.ToStandardPersian();
                    entity.FileId       = model.fileId;
                    entity.FileName     = model.fileName;
                    entity.PublishDate  = string.IsNullOrEmpty(model.PersianPublishDate) ? GetDatetime() : DateUtility.GetDateTime(model.PersianPublishDate);
                    entity.ExpiredDate  = expiredDate;
                    entity.StatusId     = model.statusId;
                    entity.ModifyUserId = currentUser.id;
                    entity.ModifyDate   = GetDatetime();
                    entity.ModifyIp     = GetCurrentIp();

                    model.translations.ForEach(item =>
                    {
                        var entityItem = entity.TranslationList.SingleOrDefault(x => x.LanguageId == item.languageId);
                        if (entityItem != null)
                        {
                            entityItem.Title        = item.title?.ToStandardPersian();
                            entityItem.AbstractText = item.abstractText?.ToStandardPersian();
                            entityItem.Text         = item.text?.ToStandardPersian();
                            entityItem.Keywords     = item.keywords?.ToStandardPersian();
                        }
                        else
                        {
                            entityItem = new NewsTranslation()
                            {
                                NewsId       = entity.Id,
                                LanguageId   = item.languageId,
                                Title        = item.title.ToStandardPersian(),
                                AbstractText = item.abstractText?.ToStandardPersian(),
                                Text         = item.text?.ToStandardPersian(),
                                Keywords     = item.keywords?.ToStandardPersian(),
                            };
                            _context.NewsTranslation.Add(entityItem);
                        }
                    });


                    _context.SaveChanges();

                    // تایید تمام فایل های جدید ذخیره شده در نقد و بررسی
                    //VerifyHtmlImageFile(entity.Text);

                    return(Success("اطلاعات خبر با موفقیت ویرایش شد."));
                }
                else
                {
                    if (Request.Files.Count > 0)
                    {
                        var fileEntity = AsefianFileContextHelper.Save(Request.Files[0], currentUser.id, GetCurrentIp(), "admin", "service");

                        model.fileId   = fileEntity.id;
                        model.fileName = fileEntity.fileName;
                    }
                    else
                    {
                        return(Error("وارد کردن تصویر خبر الزامی است."));
                    }

                    var entity = new News()
                    {
                        Sku          = model.translations.Single(x => x.languageId == Language.Persian.Id).title.ToStandardPersian(),
                        FileId       = model.fileId,
                        FileName     = model.fileName,
                        View         = model.view,
                        PublishDate  = string.IsNullOrEmpty(model.PersianPublishDate) ? GetDatetime() : DateUtility.GetDateTime(model.PersianPublishDate),
                        ExpiredDate  = expiredDate,
                        StatusId     = model.statusId,
                        CreateUserId = currentUser.id,
                        ModifyUserId = currentUser.id,
                        CreateDate   = GetDatetime(),
                        ModifyDate   = GetDatetime(),
                        CreateIp     = GetCurrentIp(),
                        ModifyIp     = GetCurrentIp()
                    };
                    _context.News.Add(entity);
                    model.translations.ForEach(item =>
                    {
                        var entityItem = entity.TranslationList.SingleOrDefault(x => x.LanguageId == item.languageId);
                        if (entityItem != null)
                        {
                            entityItem.Title        = item.title?.ToStandardPersian();
                            entityItem.AbstractText = item.abstractText?.ToStandardPersian();
                            entityItem.Text         = item.text?.ToStandardPersian();
                            entityItem.Keywords     = item.keywords?.ToStandardPersian();
                        }
                        else
                        {
                            entityItem = new NewsTranslation()
                            {
                                NewsId       = entity.Id,
                                LanguageId   = item.languageId,
                                Title        = item.title.ToStandardPersian(),
                                AbstractText = item.abstractText?.ToStandardPersian(),
                                Text         = item.text?.ToStandardPersian(),
                                Keywords     = item.keywords?.ToStandardPersian(),
                            };
                            _context.NewsTranslation.Add(entityItem);
                        }
                    });
                    _context.SaveChanges();

                    // تایید تمام فایل های جدید ذخیره شده در نقد و بررسی
                    //VerifyHtmlImageFile(entity.Text);

                    return(Success("خبر با موفقیت ایجاد شد."));
                }
            }
            catch (Exception ex)
            {
                return(ServerError(ex));
            }
        }