docs: #302 UI for finding duplicates
This commit is contained in:
parent
53520d2976
commit
e6ffd70d6b
@ -21,19 +21,31 @@ else
|
||||
</tr>
|
||||
|
||||
@foreach (var poem in Model.Poems)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<a href="@poem.SrcPoemFullUrl">@poem.SrcPoemFullTitle</a>
|
||||
</td>
|
||||
<td>
|
||||
@if(!string.IsNullOrEmpty(poem.DestPoemFullUrl))
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<a href="@poem.SrcPoemFullUrl">@poem.SrcPoemFullTitle</a>
|
||||
</td>
|
||||
<td>
|
||||
@if (!string.IsNullOrEmpty(poem.DestPoemFullUrl))
|
||||
{
|
||||
<a href="@poem.DestPoemFullUrl">@poem.DestPoemFullTitle</a>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>مشابهیابی در بخش:</td>
|
||||
<td>
|
||||
<form method="post" action="/Admin/CatTrans?Handler=FindDuplicates&id=@Model.CatId">
|
||||
<input asp-for="DestCatId" />
|
||||
<input type="submit" value="شروع مشابهیابی" />
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
}
|
||||
|
||||
|
||||
@ -27,6 +27,18 @@ namespace GanjooRazor.Areas.Admin.Pages
|
||||
/// </summary>
|
||||
public GanjoorDuplicateViewModel[] Poems { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// cat id
|
||||
/// </summary>
|
||||
public int CatId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// dest cat Id
|
||||
/// </summary>
|
||||
[BindProperty]
|
||||
public int DestCatId { get; set; }
|
||||
|
||||
private async Task<bool> _GetCatDuplicatesAsync()
|
||||
{
|
||||
if (string.IsNullOrEmpty(Request.Query["id"]))
|
||||
@ -34,12 +46,12 @@ namespace GanjooRazor.Areas.Admin.Pages
|
||||
LastMessage = "شناسهٔ بخش مشخص نیست.";
|
||||
return false;
|
||||
}
|
||||
var id = Request.Query["id"];
|
||||
CatId = int.Parse(Request.Query["id"]);
|
||||
using (HttpClient secureClient = new HttpClient())
|
||||
{
|
||||
if(await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
|
||||
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
|
||||
{
|
||||
HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/duplicates/{id}");
|
||||
HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/duplicates/{CatId}");
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LastMessage = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
|
||||
@ -67,5 +79,33 @@ namespace GanjooRazor.Areas.Admin.Pages
|
||||
|
||||
return Page();
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnPostFindDuplicatesAsync()
|
||||
{
|
||||
CatId = int.Parse(Request.Query["id"]);
|
||||
using (HttpClient secureClient = new HttpClient())
|
||||
{
|
||||
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
|
||||
{
|
||||
HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/ganjoor/duplicates/{CatId}/{DestCatId}", null);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LastMessage = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
|
||||
return Page();
|
||||
}
|
||||
else
|
||||
{
|
||||
LastMessage = "فرایند شروع شد.";
|
||||
return Page();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LastMessage = "لطفا از گنجور خارج و مجددا به آن وارد شوید.";
|
||||
return Page();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,14 +1,9 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Newtonsoft.Json;
|
||||
using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RMuseum.Models.GanjoorAudio.ViewModels;
|
||||
|
||||
namespace GanjooRazor.Pages
|
||||
{
|
||||
|
||||
@ -197,21 +197,26 @@ namespace RMuseum.Services.Implementation
|
||||
if (found) continue;
|
||||
foreach (var probable in targetPoems)
|
||||
{
|
||||
var meVerse = await context.GanjoorVerses.AsNoTracking().Where(p => p.PoemId == probable.Id).OrderBy(v => v.VOrder).FirstAsync();
|
||||
if (_AreSimilar(firstVerse.Text, meVerse.Text, false))
|
||||
var targetVerses = await context.GanjoorVerses.AsNoTracking().Where(p => p.PoemId == probable.Id).OrderBy(v => v.VOrder).ToListAsync();
|
||||
foreach (var targetVerse in targetVerses)
|
||||
{
|
||||
context.GanjoorDuplicates.Add
|
||||
(
|
||||
new GanjoorDuplicate()
|
||||
{
|
||||
SrcCatId = srcCatId,
|
||||
SrcPoemId = poem.Id,
|
||||
DestPoemId = probable.Id
|
||||
}
|
||||
);
|
||||
await context.SaveChangesAsync();
|
||||
break;
|
||||
if (_AreSimilar(firstVerse.Text, targetVerse.Text, false))
|
||||
{
|
||||
context.GanjoorDuplicates.Add
|
||||
(
|
||||
new GanjoorDuplicate()
|
||||
{
|
||||
SrcCatId = srcCatId,
|
||||
SrcPoemId = poem.Id,
|
||||
DestPoemId = probable.Id
|
||||
}
|
||||
);
|
||||
await context.SaveChangesAsync();
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found) break;
|
||||
}
|
||||
}
|
||||
return new RServiceResult<bool>(true);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user