diff --git a/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml b/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml index a1076460..402ba8fc 100644 --- a/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml +++ b/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml @@ -21,19 +21,31 @@ else @foreach (var poem in Model.Poems) - { - - - @poem.SrcPoemFullTitle - - - @if(!string.IsNullOrEmpty(poem.DestPoemFullUrl)) + { + + + @poem.SrcPoemFullTitle + + + @if (!string.IsNullOrEmpty(poem.DestPoemFullUrl)) { @poem.DestPoemFullTitle } - - } + + } + + + + + + +
مشابه‌یابی در بخش: +
+ + +
+
} diff --git a/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml.cs b/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml.cs index 6aebd200..9b7906d6 100644 --- a/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml.cs +++ b/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml.cs @@ -27,6 +27,18 @@ namespace GanjooRazor.Areas.Admin.Pages /// public GanjoorDuplicateViewModel[] Poems { get; set; } + + /// + /// cat id + /// + public int CatId { get; set; } + + /// + /// dest cat Id + /// + [BindProperty] + public int DestCatId { get; set; } + private async Task _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(await response.Content.ReadAsStringAsync()); @@ -67,5 +79,33 @@ namespace GanjooRazor.Areas.Admin.Pages return Page(); } + + public async Task 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(await response.Content.ReadAsStringAsync()); + return Page(); + } + else + { + LastMessage = "فرایند شروع شد."; + return Page(); + } + } + else + { + LastMessage = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; + return Page(); + } + } + } } + } diff --git a/GanjooRazor/Pages/t6e.cshtml.cs b/GanjooRazor/Pages/t6e.cshtml.cs index 62c108c4..2d8ce5c3 100644 --- a/GanjooRazor/Pages/t6e.cshtml.cs +++ b/GanjooRazor/Pages/t6e.cshtml.cs @@ -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 { diff --git a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-DuplicateFinder.cs b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-DuplicateFinder.cs index 5af8b4df..414002fd 100644 --- a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-DuplicateFinder.cs +++ b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-DuplicateFinder.cs @@ -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(true);