private string getUniqueUrl(PageTranslation pageTranslation, string pageUrl, Guid pageId)
        {
            var duplicateTranslation = _pageRepository.GetPageTranslation(pageUrl.ToLower());

            if (duplicateTranslation != null && duplicateTranslation.PageId != pageId)
            {
                while (duplicateTranslation != null && duplicateTranslation.URL.ToLower() == pageUrl.ToLower())
                {
                    pageUrl += "1";
                    pageTranslation.Name += "1";
                    duplicateTranslation  = _pageRepository.GetPageTranslation(pageUrl);
                }
            }
            return(pageUrl);
        }
Exemple #2
0
        private string GetUniqueUrl(PageTranslation pageTranslation, string pageUrl, Guid pageId)
        {
            var duplicateTranslation = _pageRepository.GetPageTranslation(pageUrl.ToLower());

            if (duplicateTranslation == null || duplicateTranslation.PageId == pageId)
            {
                return(pageUrl);
            }
            while (duplicateTranslation != null && string.Equals(duplicateTranslation.URL, pageUrl, StringComparison.CurrentCultureIgnoreCase))
            {
                pageUrl += "1";
                pageTranslation.Name += "1";
                duplicateTranslation  = _pageRepository.GetPageTranslation(pageUrl);
            }
            return(pageUrl);
        }
        private string GetLocalizedUrl(string cultureCode)
        {
            if (_scopeService.PageContext?.CurrentPage?.PageTranslation == null)
            {
                return("");
            }

            PageTranslation translation = null;

            if (_scopeService.PageContext.CurrentPage.PageTranslation.All(t => t.Locale.ToLower() != cultureCode.ToLower()))
            {
                return("");
            }

            translation = _scopeService.PageContext.CurrentPage.PageTranslation.Get(cultureCode.ToLower());
            return("/" + translation.URL);
        }
Exemple #4
0
        public PageTranslation CreatePageTranslation(long languageID, string name, string seoName, string seoKeyword, string seoDescription, string text, string picture)
        {
            DateTime date = DateTime.Now;

            Page page = new Page
            {
                CreatedDate = date,
                UpdatedDate = date
            };

            context.Page.Add(page);

            PageTranslation pageTranslation = new PageTranslation
            {
                LanguageID     = languageID,
                Name           = name,
                PageID         = page.ID,
                Picture        = picture,
                SeoDescription = seoDescription,
                SeoKeyword     = seoKeyword,
                SeoName        = seoName,
                Text           = text,
                CreatedDate    = date,
                UpdatedDate    = date
            };

            context.PageTranslation.Add(pageTranslation);

            using (TransactionScope scope = new TransactionScope())
            {
                try
                {
                    context.SaveChanges();
                    scope.Complete();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            return(pageTranslation);
        }
        public async Task <ActionResultResponse> Save(PageTranslation pageTranslation)
        {
            var pageInfo = await _pageTranslationRepository.GetInfo(pageTranslation.PageId, pageTranslation.LanguageId);

            if (pageInfo == null)
            {
                var resultInsert = await _pageTranslationRepository.Insert(pageTranslation);

                return(new ActionResultResponse(resultInsert, resultInsert <= 0
                    ? _sharedResourceService.GetString("Something went wrong. Please contact with administrator.")
                    : _resourceService.GetString("Add new page successful.")));
            }

            pageInfo.Name        = pageTranslation.Name.Trim();
            pageInfo.Description = pageTranslation.Description?.Trim();
            pageInfo.UnsignName  = pageInfo.Name.StripVietnameseChars().ToUpper();
            var resultUpdate = await _pageTranslationRepository.Update(pageInfo);

            return(new ActionResultResponse(resultUpdate, resultUpdate <= 0
                ? _sharedResourceService.GetString("Something went wrong. Please contact with administrator.")
                : _resourceService.GetString("Update page successful.")));
        }
Exemple #6
0
        public PageEditModel LoadEdit(long pageID, long?languageID)
        {
            PageBusiness     pageBusiness     = new PageBusiness();
            LanguageBusiness languageBusiness = new LanguageBusiness();

            PageEditModel pageEditModel = new PageEditModel();

            Page            page            = pageBusiness.GetPage(pageID);
            PageTranslation pageTranslation = null;

            if (languageID.HasValue)
            {
                pageTranslation = page.PageTranslation.FirstOrDefault(z => z.LanguageID == languageID);
            }
            else
            {
                pageTranslation = page.PageTranslation.FirstOrDefault();
            }

            if (pageTranslation == null)
            {
                pageTranslation = new PageTranslation();
            }

            IEnumerable <Language> languageList = languageBusiness.LanguageList();

            pageEditModel.LanguageList   = new SelectList(languageList, "ID", "Name", languageID);
            pageEditModel.LanguageID     = pageTranslation.LanguageID;
            pageEditModel.Name           = pageTranslation.Name;
            pageEditModel.PageID         = page.ID;
            pageEditModel.Picture        = pageTranslation.Picture;
            pageEditModel.SeoDescription = pageTranslation.SeoDescription;
            pageEditModel.SeoKeyword     = pageTranslation.SeoKeyword;
            pageEditModel.SeoName        = pageTranslation.SeoName;
            pageEditModel.Text           = pageTranslation.Text;

            return(pageEditModel);
        }
Exemple #7
0
        public PageEditModel EditPage(PageEditModel request)
        {
            PageEditModel pageEditModel = new PageEditModel();

            LanguageBusiness languageBusiness = new LanguageBusiness();
            PageBusiness     pageBusiness     = new PageBusiness();

            IEnumerable <Language> languageList = languageBusiness.LanguageList();

            pageEditModel.LanguageList = new SelectList(languageList, "ID", "Name", request.LanguageID);
            pageEditModel.PageID       = request.PageID;

            bool existLanguage        = languageBusiness.ExistLanguage(request.LanguageID);
            long?existPageTranslation = pageBusiness.ExistPageTranslationByPageIDAndLanguageID(request.PageID, request.LanguageID);

            if (!existLanguage)
            {
                pageEditModel.Alerts.AlertList.Add("Dil bulunamadı!");
                pageEditModel.Alerts.AlertType = Model.Base.Alerts.AlertTypes.Error;

                return(request);
            }
            else
            {
                bool existSeoName = pageBusiness.ExistSeoName(request.SeoName, request.PageID);

                if (existSeoName)
                {
                    pageEditModel.Alerts.AlertList.Add("Seo adı daha önce kullanılmış!");
                    pageEditModel.Alerts.AlertType = Model.Base.Alerts.AlertTypes.Error;

                    return(pageEditModel);
                }
                else
                {
                    try
                    {
                        if (!existPageTranslation.HasValue)
                        {
                            PageTranslation pageTranslation = pageBusiness.CreatePageTranslation(request.LanguageID, request.PageID, request.Name, request.SeoName, request.SeoKeyword, request.SeoDescription, request.Text, request.Picture);


                            pageEditModel.Alerts.AlertList.Add("Sayfa başarıyla eklendi");
                            pageEditModel.Alerts.AlertType = Model.Base.Alerts.AlertTypes.Success;
                        }
                        else
                        {
                            PageTranslation pageTranslation = pageBusiness.UpdatePageTranslation(request.LanguageID, request.PageID, request.Name, request.SeoName, request.SeoKeyword, request.SeoDescription, request.Text, request.Picture);

                            pageEditModel.Alerts.AlertList.Add("Sayfa başarıyla güncellendi.");
                            pageEditModel.Alerts.AlertType = Model.Base.Alerts.AlertTypes.Success;
                        }
                    }
                    catch (Exception ex)
                    {
                        request.Alerts.AlertList.Add("Sayfa kaydedilemedi [ " + ex.Message + " ]");
                        request.Alerts.AlertType = Model.Base.Alerts.AlertTypes.Error;
                    }
                }
            }



            return(pageEditModel);
        }
Exemple #8
0
        private PageTranslation GetPageTranslation(long languageID, long pageID)
        {
            PageTranslation pageTranslation = context.PageTranslation.FirstOrDefault(z => z.LanguageID == languageID && z.PageID == pageID);

            return(pageTranslation);
        }
Exemple #9
0
 public async Task <int> Update(PageTranslation pageTranslation)
 {
     return(await Context.SaveChangesAsync());
 }
Exemple #10
0
 public async Task <int> Insert(PageTranslation pageTranslation)
 {
     _pageTranslationRepository.Create(pageTranslation);
     return(await Context.SaveChangesAsync());
 }
Exemple #11
0
        public async Task <ActionResultResponse> Insert(PageMeta pageMeta)
        {
            // Check Id exists.
            var isIdExists = await _pageRepository.CheckExists(pageMeta.Id);

            if (isIdExists)
            {
                return(new ActionResultResponse(-1, _resourceService.GetString("Page already exists.")));
            }

            if (pageMeta.PageTranslations == null || !pageMeta.PageTranslations.Any())
            {
                return(new ActionResultResponse(-2, _resourceService.GetString("Please add at least one language.")));
            }

            var page = new Page
            {
                Id       = pageMeta.Id,
                BgColor  = pageMeta.BgColor?.Trim(),
                Icon     = pageMeta.Icon?.Trim(),
                IsActive = pageMeta.IsActive,
                ParentId = pageMeta.ParentId,
                Order    = pageMeta.Order,
                Url      = pageMeta.Url?.Trim(),
                IdPath   = "-1"
            };

            if (pageMeta.ParentId.HasValue)
            {
                var parentInfo = await _pageRepository.GetInfo(pageMeta.ParentId.Value);

                if (parentInfo == null)
                {
                    return(new ActionResultResponse(-3, _resourceService.GetString("Parent page does not exists.")));
                }

                page.ParentId = parentInfo.Id;
                page.IdPath   = $"{parentInfo.IdPath}.-1";
            }

            var resultInsertPage = await _pageRepository.Insert(page);

            if (resultInsertPage <= 0)
            {
                return(new ActionResultResponse(resultInsertPage, _sharedResourceService.GetString("Something went wrong. Please contact with administrator.")));
            }

            #region Update page idPath.

            page.IdPath = page.IdPath.Replace("-1", page.Id.ToString());
            await _pageRepository.Update(page);

            #endregion

            // Insert page translation.
            foreach (var pageTranslation in pageMeta.PageTranslations)
            {
                var pageTranslate = new PageTranslation
                {
                    PageId      = page.Id,
                    Description = pageTranslation.Description?.Trim(),
                    LanguageId  = pageTranslation.LanguageId?.Trim(),
                    Name        = pageTranslation.Name.Trim(),
                    UnsignName  = pageTranslation.Name.Trim().StripVietnameseChars().ToUpper()
                };
                var resultPageTranslation = await _pageTranslationService.Save(pageTranslate);

                if (resultPageTranslation.Code <= 0)
                {
                    // Roleback insert.
                    await RollbackInsert(page.Id);
                }
            }

            return(new ActionResultResponse(resultInsertPage, _resourceService.GetString("Add new page successful.")));
        }
        private Page ConvertToSingePage(PageViewModel pageViewModel, bool isMultilingual, IList <Language> translateLanguages)
        {
            Page            page;
            PageTranslation pageTranslation;
            var             currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;

            if (pageViewModel.Parent != null)
            {
                pageViewModel.ParentId = pageViewModel.Parent.Id;
                pageViewModel.Parent   = null;
            }

            if (pageViewModel.ParentId == null || pageViewModel.ParentId == Guid.Empty)
            {
                return(_mapper.Map <Page>(pageViewModel));
            }

            if (pageViewModel.Id == Guid.Empty)
            {
                page            = new Page();
                pageTranslation = new PageTranslation();
            }
            else
            {
                page            = _navigation.GetPageAndDependencies(pageViewModel.Id);
                pageTranslation = page.PageTranslation.FirstOrDefault(pt => string.Equals(pt.Locale, currentCulture));
            }

            if (pageTranslation == null)
            {
                throw new InvalidOperationException($"Page does not have translation for default locale: {currentCulture}");
            }

            _mapper.Map(pageViewModel, page);
            page.PageTypeId = page.PageType?.Id;
            page.PageType   = null;

            pageTranslation.Name            = pageViewModel.Name;
            pageTranslation.Title           = pageViewModel.Title;
            pageTranslation.Locale          = currentCulture;
            pageTranslation.Description     = pageViewModel.Description;
            pageTranslation.PageHeaderTags  = pageViewModel.PageHeaderTags;
            pageTranslation.RedirectUrl     = pageViewModel.RedirectUrl;
            pageTranslation.IsLinkNewWindow = pageViewModel.IsLinkNewWindow;

            //Default page translation will be removed for both new and existing pages. Therefore, add it while updating a pge.
            page.PageTranslation.Add(pageTranslation);

            if (isMultilingual && page.PageTranslation.Count > 1)
            {
                foreach (var translation in page.PageTranslation)
                {
                    var selectedLanguage = translateLanguages.FirstOrDefault(t => string.Equals(t?.CultureCode, translation?.Language?.CultureCode,
                                                                                                StringComparison.InvariantCultureIgnoreCase));

                    if (selectedLanguage != null)
                    {
                        translation.Locale = selectedLanguage.CultureCode;
                    }
                }
            }

            if (pageViewModel.Module != null)
            {
                page.AdminPage = new AdminPage()
                {
                    ModuleId  = pageViewModel.Module.Id,
                    PageId    = pageViewModel.Id,
                    ModelName = pageViewModel.ModelName
                };
            }
            else
            {
                page.AdminPage = null;
            }

            page.ThemeSrc = pageViewModel.Theme?.Id;

            return(page);
        }