#217 generate missing default numberings
This commit is contained in:
parent
eec576cfda
commit
11e00e8923
@ -203,6 +203,25 @@
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function regenMissingNumbering() {
|
||||
|
||||
if (!confirm('آیا از تولید الگوهای شمارهگذاری ناموجود اطمینان دارید؟'))
|
||||
return;
|
||||
|
||||
var url = '?handler=RegenerateNumberings';
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url,
|
||||
error: function () {
|
||||
alert('خطا رخ داد.');
|
||||
},
|
||||
success: function () {
|
||||
alert('تولید الگوهای شمارهگذاری ناموجود شروع شد.')
|
||||
},
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<table>
|
||||
<tr>
|
||||
@ -246,6 +265,11 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<a role="button" onclick="regenMissingNumbering()" class="actionlink" title="تولید کلی الگوهای ناموجود">تولید کلی الگوهای ناموجود</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<form method="post" action="?Handler=Numbering&url=@Model.Cat.Cat.FullUrl">
|
||||
|
||||
@ -248,5 +248,19 @@ namespace GanjooRazor.Areas.Admin.Pages
|
||||
return new OkObjectResult(false);
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnPostRegenerateNumberingsAsync(int id)
|
||||
{
|
||||
using (HttpClient secureClient = new HttpClient())
|
||||
{
|
||||
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
|
||||
{
|
||||
HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/numberings/generatemissing", null);
|
||||
response.EnsureSuccessStatusCode();
|
||||
return new OkObjectResult(true);
|
||||
}
|
||||
}
|
||||
return new OkObjectResult(false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -176,6 +176,25 @@ namespace RMuseum.Controllers
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// generate missing default numberings and start counting
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost("generatemissing")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(bool))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
public IActionResult GenerateMissingDefaultNumberings()
|
||||
{
|
||||
if (ReadOnlyMode)
|
||||
return BadRequest("سایت به دلایل فنی مثل انتقال سرور موقتاً در حالت فقط خواندنی قرار دارد. لطفاً ساعاتی دیگر مجدداً تلاش کنید.");
|
||||
var res = _numberingService.GenerateMissingDefaultNumberings();
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// readonly mode
|
||||
/// </summary>
|
||||
|
||||
@ -1430,6 +1430,12 @@
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.NumberingController.GenerateMissingDefaultNumberings">
|
||||
<summary>
|
||||
generate missing default numberings and start counting
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:RMuseum.Controllers.NumberingController.ReadOnlyMode">
|
||||
<summary>
|
||||
readonly mode
|
||||
@ -8432,6 +8438,12 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorNumberingService.GenerateMissingDefaultNumberings">
|
||||
<summary>
|
||||
generate missing default numberings and start counting
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.IGanjoorService">
|
||||
<summary>
|
||||
Ganjoor Poems Content Privider Service
|
||||
@ -10127,6 +10139,12 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorNumberingService.GenerateMissingDefaultNumberings">
|
||||
<summary>
|
||||
generate missing default numberings and start counting
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:RMuseum.Services.Implementation.GanjoorNumberingService._context">
|
||||
<summary>
|
||||
Database Context
|
||||
|
||||
@ -69,5 +69,11 @@ namespace RMuseum.Services
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> Recount(int numberingId);
|
||||
|
||||
/// <summary>
|
||||
/// generate missing default numberings and start counting
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> GenerateMissingDefaultNumberings();
|
||||
}
|
||||
}
|
||||
|
||||
@ -329,6 +329,59 @@ namespace RMuseum.Services.Implementation
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// generate missing default numberings and start counting
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public RServiceResult<bool> GenerateMissingDefaultNumberings()
|
||||
{
|
||||
_backgroundTaskQueue.QueueBackgroundWorkItem
|
||||
(
|
||||
async token =>
|
||||
{
|
||||
using (RMuseumDbContext context = new RMuseumDbContext(new DbContextOptions<RMuseumDbContext>())) //this is long running job, so _context might be already been freed/collected by GC
|
||||
{
|
||||
LongRunningJobProgressServiceEF jobProgressServiceEF = new LongRunningJobProgressServiceEF(context);
|
||||
var job = (await jobProgressServiceEF.NewJob("GenerateMissingDefaultNumberings", "Query")).Result;
|
||||
|
||||
try
|
||||
{
|
||||
var cats = await context.GanjoorCategories.Where(c => c.ParentId != null).ToListAsync();
|
||||
|
||||
foreach (var cat in cats)
|
||||
{
|
||||
var numbering = await context.GanjoorNumberings.Where(n => n.StartCatId == cat.Id && n.Name == cat.Title).FirstOrDefaultAsync();
|
||||
if(numbering == null)
|
||||
{
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 0, cat.FullUrl);
|
||||
numbering = new GanjoorNumbering()
|
||||
{
|
||||
Name = cat.Title,
|
||||
StartCatId = cat.Id,
|
||||
EndCatId = cat.Id
|
||||
};
|
||||
context.GanjoorNumberings.Add(numbering);
|
||||
await context.SaveChangesAsync();
|
||||
Recount(numbering.Id); //start counting
|
||||
}
|
||||
}
|
||||
|
||||
await context.SaveChangesAsync();
|
||||
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 100, "", true);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 100, "", false, exp.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Database Context
|
||||
/// </summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user