From 6612ca7b5449ab9c049150ab0433202c2413fdfe Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Thu, 10 Mar 2022 17:24:24 +0330 Subject: [PATCH] docs: #292 improvements on redirect from url --- .../Services/Implementation/GanjoorService.cs | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/RMuseum/Services/Implementation/GanjoorService.cs b/RMuseum/Services/Implementation/GanjoorService.cs index 9b4d7adf..70d70c27 100644 --- a/RMuseum/Services/Implementation/GanjoorService.cs +++ b/RMuseum/Services/Implementation/GanjoorService.cs @@ -387,11 +387,26 @@ namespace RMuseum.Services.Implementation url = url.Replace("//", "/"); //duplicated slashes would be merged - var dbPage = await _context.GanjoorPages.Where(p => p.RedirectFromFullUrl == url).AsNoTracking().SingleOrDefaultAsync(); - if (dbPage == null) + var pages = await _context.GanjoorPages.Where(p => url.StartsWith(p.RedirectFromFullUrl)).AsNoTracking().ToListAsync(); + if (pages.Count == 0) return new RServiceResult(null); //not found - return new RServiceResult(dbPage.FullUrl); + var dbPage = pages[0]; + for (int i= 1; i < pages.Count; i++) + { + if(pages[i].RedirectFromFullUrl.Length > dbPage.RedirectFromFullUrl.Length) + { + dbPage = pages[i]; + } + } + + var target = dbPage.FullUrl; + if(url != dbPage.RedirectFromFullUrl) + { + target = dbPage.FullUrl + url.Substring(dbPage.RedirectFromFullUrl.Length); + } + + return new RServiceResult(target); } ///