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);