diff --git a/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml b/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml
index 71f97b6b..2f6eb609 100644
--- a/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml
+++ b/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml
@@ -166,3 +166,10 @@
بازسازی نقشهٔسایت
بازسازی صفحات آمار و اوزان عروضی
+
+
+
diff --git a/GanjooRazor/Areas/Admin/Pages/PageDel.cshtml b/GanjooRazor/Areas/Admin/Pages/PageDel.cshtml
new file mode 100644
index 00000000..231d2f5a
--- /dev/null
+++ b/GanjooRazor/Areas/Admin/Pages/PageDel.cshtml
@@ -0,0 +1,40 @@
+@page
+@model GanjooRazor.Areas.Admin.Pages.PageDelModel
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
+@{
+ Layout = "_AdminLayout";
+ ViewData["Title"] = "حذف صفحه";
+}
+
+@ViewData["Title"]
+
+@if (!string.IsNullOrEmpty(Model.LastResult))
+{
+
+ @Model.LastResult
+
+
+ برگشت
+
+}
+else
+{
+
+
+ |
+ آیا از حذف @Model.PageInformation.FullTitle اطمینان دارید؟
+ |
+
+
+ |
+
+ |
+
+ خیر / برگشت
+ |
+
+
+}
+
diff --git a/GanjooRazor/Areas/Admin/Pages/PageDel.cshtml.cs b/GanjooRazor/Areas/Admin/Pages/PageDel.cshtml.cs
new file mode 100644
index 00000000..1adce0a8
--- /dev/null
+++ b/GanjooRazor/Areas/Admin/Pages/PageDel.cshtml.cs
@@ -0,0 +1,86 @@
+using System.Net.Http;
+using System.Threading.Tasks;
+using GanjooRazor.Utils;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Microsoft.Extensions.Caching.Memory;
+using Newtonsoft.Json.Linq;
+using RMuseum.Models.Ganjoor.ViewModels;
+
+namespace GanjooRazor.Areas.Admin.Pages
+{
+ [IgnoreAntiforgeryToken(Order = 1001)]
+ public class PageDelModel : PageModel
+ {
+ ///
+ /// HttpClient instance
+ ///
+ private readonly HttpClient _httpClient;
+
+ ///
+ /// memory cache
+ ///
+ private readonly IMemoryCache _memoryCache;
+
+ ///
+ /// constructor
+ ///
+ ///
+ ///
+ public PageDelModel(HttpClient httpClient, IMemoryCache memoryCache)
+ {
+ _httpClient = httpClient;
+ _memoryCache = memoryCache;
+ }
+
+ ///
+ /// page
+ ///
+ public GanjoorPageCompleteViewModel PageInformation { get; set; }
+
+
+ ///
+ /// last result
+ ///
+ public string LastResult { get; set; }
+
+ public async Task OnGetAsync()
+ {
+ var pageQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/page?url={Request.Query["url"]}");
+ pageQuery.EnsureSuccessStatusCode();
+
+ PageInformation = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject();
+
+ return Page();
+ }
+
+ public async Task OnPostAsync()
+ {
+ LastResult = "";
+ using (HttpClient secureClient = new HttpClient())
+ {
+ await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response);
+
+ HttpResponseMessage response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/page/cache/{Request.Query["id"]}");
+ response.EnsureSuccessStatusCode();
+
+
+ response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/page/{Request.Query["id"]}");
+
+ if(!response.IsSuccessStatusCode)
+ {
+ LastResult = await response.Content.ReadAsStringAsync();
+ }
+ else
+ {
+ response.EnsureSuccessStatusCode();
+ LastResult = "عملیات حذف صفحه انجام شد.";
+ }
+
+
+ return Page();
+
+ }
+ }
+ }
+}
diff --git a/RMuseum/Services/Implementation/GanjoorService.cs b/RMuseum/Services/Implementation/GanjoorService.cs
index 0c46f380..a41712bb 100644
--- a/RMuseum/Services/Implementation/GanjoorService.cs
+++ b/RMuseum/Services/Implementation/GanjoorService.cs
@@ -2775,6 +2775,11 @@ namespace RMuseum.Services.Implementation
{
return new RServiceResult(false, "Poem related page can nor be deleted.");
}
+ var cat = await _context.GanjoorCategories.Where(c => c.FullUrl == page.FullUrl).FirstOrDefaultAsync();
+ if(cat != null)
+ {
+ return new RServiceResult(false, "Cat related page can nor be deleted.");
+ }
_context.GanjoorPages.Remove(page);
await _context.SaveChangesAsync();
return new RServiceResult(true);