From 894569e86cd0a1e5cf94bbefe93eb14d9c5165be Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Thu, 17 Jun 2021 19:22:40 +0430 Subject: [PATCH] #154 toc geneeration in UI --- .../Areas/Admin/Pages/ModifyPage.cshtml | 20 +++++- .../Areas/Admin/Pages/ModifyPage.cshtml.cs | 69 ++++++++++++++----- RMuseum/Controllers/GanjoorController.cs | 1 + 3 files changed, 70 insertions(+), 20 deletions(-) diff --git a/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml b/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml index 329c9931..018e36b6 100644 --- a/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml +++ b/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml @@ -8,7 +8,7 @@

@ViewData["Title"]

-

@Model.LastMessage

+

@Html.Raw(Model.LastMessage)

@@ -129,3 +129,21 @@
+ +
+ + + + + +
+ بر اساس تحلیل بخش
+ فقط عناوین
+ عنوان و مصرع اول
+ الفبایی با مصرع اول
+ الفبایی با مصرع دوم
+ الفبایی با بیت اول
+
+ +
+
diff --git a/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml.cs b/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml.cs index 1609d209..43463e42 100644 --- a/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml.cs +++ b/GanjooRazor/Areas/Admin/Pages/ModifyPage.cshtml.cs @@ -49,18 +49,19 @@ namespace GanjooRazor.Areas.Admin.Pages /// public GanjoorPageCompleteViewModel PageInformation { get; set; } + /// + /// ganjoor toc + /// + [BindProperty] + public GanjoorTOC GanjoorTOC { get; set; } /// /// last message /// public string LastMessage { get; set; } - public async Task OnGetAsync() + private async Task PreparePage() { - LastMessage = Request.Query["edit"] == "true" ? "ویرایش انجام شد." : ""; - if (string.IsNullOrEmpty(Request.Query["id"])) - { - return StatusCode(StatusCodes.Status500InternalServerError, "شناسهٔ صفحه مشخص نیست."); - } + var rhythmResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/rhythms"); rhythmResponse.EnsureSuccessStatusCode(); @@ -70,20 +71,13 @@ namespace GanjooRazor.Areas.Admin.Pages var pageUrlResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/pageurl?id={Request.Query["id"]}"); - if (!pageUrlResponse.IsSuccessStatusCode) - { - return StatusCode(StatusCodes.Status500InternalServerError, await pageUrlResponse.Content.ReadAsStringAsync()); - } - pageUrlResponse.EnsureSuccessStatusCode(); var pageUrl = JsonConvert.DeserializeObject(await pageUrlResponse.Content.ReadAsStringAsync()); var pageQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/page?url={pageUrl}"); - if (!pageQuery.IsSuccessStatusCode) - { - return StatusCode(StatusCodes.Status500InternalServerError, await pageQuery.Content.ReadAsStringAsync()); - } + pageQuery.EnsureSuccessStatusCode(); + PageInformation = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject(); ModifyModel = new GanjoorModifyPageViewModel() @@ -99,11 +93,21 @@ namespace GanjooRazor.Areas.Admin.Pages RhymeLetters = PageInformation.Poem == null ? null : PageInformation.Poem.RhymeLetters, Rhythm = PageInformation.Poem == null ? null : PageInformation.Poem.GanjoorMetre == null ? null : PageInformation.Poem.GanjoorMetre.Rhythm }; + } + public async Task OnGetAsync() + { + LastMessage = Request.Query["edit"] == "true" ? "ویرایش انجام شد." : ""; + if (string.IsNullOrEmpty(Request.Query["id"])) + { + return StatusCode(StatusCodes.Status500InternalServerError, "شناسهٔ صفحه مشخص نیست."); + } + GanjoorTOC = GanjoorTOC.Analyse; + await PreparePage(); return Page(); } - public async Task OnPostAsync() + public async Task OnPostAsync(GanjoorModifyPageViewModel ModifyModel) { using (HttpClient secureClient = new HttpClient()) { @@ -117,12 +121,39 @@ namespace GanjooRazor.Areas.Admin.Pages { LastMessage = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } - } - - return Page(); + } + public async Task OnPostGenerateCatPageAsync(GanjoorTOC GanjoorTOC) + { + await PreparePage(); + + var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/cat?url={PageInformation.FullUrl}&poems=true"); + + response.EnsureSuccessStatusCode(); + + var Cat = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + + using (HttpClient secureClient = new HttpClient()) + { + if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + { + var htmlRes = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/cat/toc/{Cat.Cat.Id}/{(int)GanjoorTOC}"); + htmlRes.EnsureSuccessStatusCode(); + + ModifyModel.HtmlText = await htmlRes.Content.ReadAsStringAsync(); + + LastMessage = $"متن تولیدی دریافت شد. لطفا آن را کپی کنید و سپس اینجا کلیک کنید و آن را درج نمایید."; + + + } + else + { + LastMessage = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; + } + } + return Page(); } } } diff --git a/RMuseum/Controllers/GanjoorController.cs b/RMuseum/Controllers/GanjoorController.cs index 8b3319ad..5bccde79 100644 --- a/RMuseum/Controllers/GanjoorController.cs +++ b/RMuseum/Controllers/GanjoorController.cs @@ -476,6 +476,7 @@ namespace RMuseum.Controllers /// [HttpGet] [Route("cat/toc/{id}/{options}")] + [Produces("text/plain")] [Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)] [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(string))] [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]