#396 changing internal api call from form to post to fix the issue

This commit is contained in:
Hamid Reza Mohammadi 2023-07-15 09:25:44 +03:30
parent 92abc3662b
commit a3659f565c
2 changed files with 82 additions and 48 deletions

View File

@ -92,28 +92,28 @@
$('#savecorrections').hide();
$('#saving').text('در حال ذخیره ...');
var pcs = {};
pcs.poemid = id;
pcs.verseOrderText = verseOrderText;
pcs.verseOrderMarkedForDelete = verseOrderMarkedForDelete;
pcs.versePositions = versePositions;
pcs.rhythm = rhythm_new;
pcs.rhythm2 = rhythm_new2;
pcs.rhyme = rhyme_letters;
pcs.format = section_format;
pcs.verseOrderSummaries = verseOrderSummaries;
pcs.verseLanguages = verseLanguages;
pcs.note = $('#note').val();
pcs.hideMyName = $('#hide-my-name').is(":checked");
var url = '?handler=SendPoemCorrections';
$.ajax({
type: "POST",
url: url,
data: {
poemid: id,
verseOrderText: verseOrderText,
verseOrderMarkedForDelete: verseOrderMarkedForDelete,
versePositions: versePositions,
rhythm: rhythm_new,
rhythm2: rhythm_new2,
rhyme: rhyme_letters,
format: section_format,
verseOrderSummaries: verseOrderSummaries,
verseLanguages: verseLanguages,
note: $('#note').val(),
hideMyName: $('#hide-my-name').is(":checked")
},
data: JSON.stringify(pcs),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function () {
location.reload(true);
},

View File

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
@ -147,7 +148,7 @@ namespace GanjooRazor.Areas.User.Pages
}
MyLastEdit = JsonConvert.DeserializeObject<GanjoorPoemCorrectionViewModel>(await editResponse.Content.ReadAsStringAsync());
var rhythmResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/rhythms?sortOnVerseCount=true");
@ -189,7 +190,7 @@ namespace GanjooRazor.Areas.User.Pages
return Page();
}
PageInformation = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject<GanjoorPageCompleteViewModel>();
if (PageInformation.Poem.Sections.Where(s => s.SectionType == PoemSectionType.WholePoem && !string.IsNullOrEmpty(s.RhymeLetters)).Any())
{
@ -293,13 +294,37 @@ namespace GanjooRazor.Areas.User.Pages
return new BadRequestObjectResult("لطفاً از گنجور خارج و مجددا به آن وارد شوید.");
}
public async Task<IActionResult> OnPostSendPoemCorrectionsAsync(int poemid, string[] verseOrderText, int[] verseOrderMarkedForDelete, VersePosition[] versePositions, string rhythm, string rhythm2, string rhyme, GanjoorPoemFormat? format, string[] verseOrderSummaries, int[] verseLanguages, string note, bool hideMyName)
public class PoemCorrectionStructue
{
public int poemid { get; set; }
public string[] verseOrderText { get; set; }
public int[] verseOrderMarkedForDelete { get; set; }
public string[] versePositions { get; set; }
public string rhythm { get; set; }
public string rhythm2 { get; set; }
public string rhyme { get; set; }
public string format { get; set; }
public string[] verseOrderSummaries { get; set; }
public string[] verseLanguages { get; set; }
public string note { get; set; }
public bool hideMyName { get; set; }
}
public async Task<IActionResult> OnPostSendPoemCorrectionsAsync([FromBody] PoemCorrectionStructue pcs)
{
if (pcs == null)
{
return new BadRequestObjectResult("خطای پیش‌بینی نشده");
}
using (HttpClient secureClient = new HttpClient())
{
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
var pageUrlResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/pageurl?id={poemid}");
var pageUrlResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/pageurl?id={pcs.poemid}");
if (!pageUrlResponse.IsSuccessStatusCode)
{
FatalError = JsonConvert.DeserializeObject<string>(await pageUrlResponse.Content.ReadAsStringAsync());
@ -313,28 +338,37 @@ namespace GanjooRazor.Areas.User.Pages
FatalError = JsonConvert.DeserializeObject<string>(await pageQuery.Content.ReadAsStringAsync());
return new BadRequestObjectResult(FatalError);
}
var pageInformation = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject<GanjoorPageCompleteViewModel>();
var pageInformation = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject<GanjoorPageCompleteViewModel>();
string title = null;
List<GanjoorVerseVOrderText> vOrderTexts = new List<GanjoorVerseVOrderText>();
foreach (string v in verseOrderText)
List<VersePosition?> versePositions = new List<VersePosition?>();
foreach (var versePosition in pcs.versePositions)
{
var vParts = v.Split("TextSeparator", System.StringSplitOptions.RemoveEmptyEntries);
if(versePosition != null)
{
versePositions.Add((VersePosition)Enum.Parse(typeof(VersePosition), versePosition));
}
}
foreach (string v in pcs.verseOrderText)
{
var vParts = v.Split("TextSeparator", StringSplitOptions.RemoveEmptyEntries);
int vOrder = int.Parse(vParts[0]);
if (vOrder == 0)
title = vParts[1].Replace("ۀ", "هٔ").Replace("ك", "ک");
else
{
int? langaugeId = null;
if (!(verseLanguages[vOrder - 1] == 1 && pageInformation.Poem.Verses.Single(v => v.VOrder == vOrder).LanguageId == null))
if (!(int.Parse(pcs.verseLanguages[vOrder - 1]) == 1 && pageInformation.Poem.Verses.Single(v => v.VOrder == vOrder).LanguageId == null))
{
langaugeId = verseLanguages[vOrder - 1];
langaugeId = int.Parse(pcs.verseLanguages[vOrder - 1]);
}
string verseText = pageInformation.Poem.Verses.Where(verse => verse.VOrder == vOrder).Single().Text == vParts[1] ? null : vParts[1].Replace("ۀ", "هٔ").Replace("ك", "ک");
VersePosition? versePos = pageInformation.Poem.Verses.Single(v => v.VOrder == vOrder).VersePosition == versePositions[vOrder - 1] ? null : versePositions[vOrder - 1];
bool markedForDelete = verseOrderMarkedForDelete.Any(v => v == vOrder);
if(verseText != null || markedForDelete || versePos != null || langaugeId != null)
bool markedForDelete = pcs.verseOrderMarkedForDelete.Any(v => v == vOrder);
if (verseText != null || markedForDelete || versePos != null || langaugeId != null)
{
vOrderTexts.Add
(
@ -348,12 +382,12 @@ namespace GanjooRazor.Areas.User.Pages
}
);
}
}
}
string poemSummary = null;
foreach ( string v in verseOrderSummaries )
foreach (string v in pcs.verseOrderSummaries)
{
var vParts = v.Split("TextSeparator", System.StringSplitOptions.RemoveEmptyEntries);
int vOrder = int.Parse(vParts[0]);
@ -363,7 +397,7 @@ namespace GanjooRazor.Areas.User.Pages
}
else
{
if(vOrderTexts.Where(t => t.VORder == vOrder).Any())
if (vOrderTexts.Where(t => t.VORder == vOrder).Any())
{
vOrderTexts.First(t => t.VORder == vOrder).CoupletSummary = vParts[1].Replace("ۀ", "هٔ").Replace("ك", "ک");
}
@ -384,18 +418,18 @@ namespace GanjooRazor.Areas.User.Pages
}
}
if (title == null && poemSummary == null && vOrderTexts.Count == 0 && rhythm == null && rhythm2 == null && rhyme == null && format == null)
if (title == null && poemSummary == null && vOrderTexts.Count == 0 && pcs.rhythm == null && pcs.rhythm2 == null && pcs.rhyme == null && pcs.format == null)
return new BadRequestObjectResult("شما هیچ تغییری در اطلاعات نداده‌اید!");
if (rhythm == "null")
rhythm = "";
if (pcs.rhythm == "null")
pcs.rhythm = "";
if (rhythm2 == "null")
rhythm2 = "";
if (pcs.rhythm2 == "null")
pcs.rhythm2 = "";
if (rhythm2 != null)
if (pcs.rhythm2 != null)
{
if (rhythm == rhythm2)
if (pcs.rhythm == pcs.rhythm2)
return new BadRequestObjectResult("وزن اول و دوم یکسانند!");
}
@ -403,16 +437,16 @@ namespace GanjooRazor.Areas.User.Pages
GanjoorPoemCorrectionViewModel correction = new GanjoorPoemCorrectionViewModel()
{
PoemId = poemid,
PoemId = pcs.poemid,
Title = title,
VerseOrderText = vOrderTexts.ToArray(),
Rhythm = rhythm,
Rhythm2 = rhythm2,
RhymeLetters = rhyme,
PoemFormat = format,
Rhythm = pcs.rhythm,
Rhythm2 = pcs.rhythm2,
RhymeLetters = pcs.rhyme,
PoemFormat = string.IsNullOrEmpty(pcs.format) ? (GanjoorPoemFormat?) null : (GanjoorPoemFormat)Enum.Parse(typeof(GanjoorPoemFormat), pcs.format),
PoemSummary = poemSummary,
Note = note,
HideMyName = hideMyName
Note = pcs.note,
HideMyName = pcs.hideMyName
};
HttpResponseMessage response = await secureClient.PostAsync(
@ -511,7 +545,7 @@ namespace GanjooRazor.Areas.User.Pages
}
}
public async Task<IActionResult> OnGetComputeRhymeAsync(int id)
{