/// <summary> /// add numbering /// </summary> /// <param name="numbering"></param> /// <returns></returns> public async Task <RServiceResult <GanjoorNumbering> > AddNumberingAsync(GanjoorNumbering numbering) { numbering.Name = numbering.Name == null ? numbering.Name : numbering.Name.Trim(); if (string.IsNullOrEmpty(numbering.Name)) { return(new RServiceResult <GanjoorNumbering>(null, "ورود نام طرح شمارهگذاری اجباری است.")); } var existing = await _context.GanjoorNumberings.Where(l => l.Name == numbering.Name && l.StartCatId == numbering.StartCatId).FirstOrDefaultAsync(); if (existing != null) { return(new RServiceResult <GanjoorNumbering>(null, "نام در این بخش تکراری است.")); } try { _context.GanjoorNumberings.Add(numbering); await _context.SaveChangesAsync(); Recount(numbering.Id); //start counting return(new RServiceResult <GanjoorNumbering>(numbering)); } catch (Exception exp) { return(new RServiceResult <GanjoorNumbering>(null, exp.ToString())); } }
public async Task <IActionResult> OnPostNumberingAsync(GanjoorNumbering NumberingModel) { using (HttpClient secureClient = new HttpClient()) { await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/numberings", new StringContent(JsonConvert.SerializeObject(NumberingModel), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject <string>(await response.Content.ReadAsStringAsync()); } } await GetInformationAsync(); NamingModel = new GanjoorBatchNamingModel() { StartWithNotIncludingSpaces = "شمارهٔ ", RemovePreviousPattern = true, RemoveSetOfCharacters = ".-", Simulate = true }; return(Page()); }
/// <summary> /// تغییر عنوان گروهی /// </summary> /// <param name="NamingModel"></param> /// <returns></returns> public async Task <IActionResult> OnPostAsync(GanjoorBatchNamingModel NamingModel) { await GetInformationAsync(); NumberingModel = new GanjoorNumbering() { Name = Cat.Cat.Title, StartCatId = Cat.Cat.Id, EndCatId = Cat.Cat.Id }; using (HttpClient secureClient = new HttpClient()) { await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/recaptionpoems/{Cat.Cat.Id}", new StringContent(JsonConvert.SerializeObject(NamingModel), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject <string>(await response.Content.ReadAsStringAsync()); } else { RenamingOutput = JsonConvert.DeserializeObject <string[]>(await response.Content.ReadAsStringAsync()); } NamingModel.Simulate = false; } return(Page()); }
public async Task <IActionResult> OnGetAsync() { if (string.IsNullOrEmpty(Request.Cookies["Token"])) { return(Redirect("/")); } LastMessage = Request.Query["edit"] == "true" ? "ویرایش انجام شد." : ""; if (string.IsNullOrEmpty(Request.Query["url"])) { return(StatusCode(StatusCodes.Status500InternalServerError, "نشانی صفحه مشخص نیست.")); } await GetInformationAsync(); NamingModel = new GanjoorBatchNamingModel() { StartWithNotIncludingSpaces = "شمارهٔ ", RemovePreviousPattern = true, RemoveSetOfCharacters = ".-", Simulate = true }; NumberingModel = new GanjoorNumbering() { Name = Cat.Cat.Title, StartCatId = Cat.Cat.Id, EndCatId = Cat.Cat.Id }; return(Page()); }
public async Task <IActionResult> UpdateNumberingAsync([FromBody] GanjoorNumbering numbering) { if (ReadOnlyMode) { return(BadRequest("سایت به دلایل فنی مثل انتقال سرور موقتاً در حالت فقط خواندنی قرار دارد. لطفاً ساعاتی دیگر مجدداً تلاش کنید.")); } var res = await _numberingService.UpdateNumberingAsync(numbering); if (!string.IsNullOrEmpty(res.ExceptionString)) { return(BadRequest(res.ExceptionString)); } return(Ok(res.Result)); }
/// <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> /// update an existing numbering (only name) /// </summary> /// <param name="updated"></param> /// <returns></returns> public async Task <RServiceResult <bool> > UpdateNumberingAsync(GanjoorNumbering updated) { try { var numbering = await _context.GanjoorNumberings.Where(l => l.Id == updated.Id).SingleOrDefaultAsync(); if (numbering == null) { return(new RServiceResult <bool>(false, "اطلاعات طرح شماره گذاری یافت نشد.")); } numbering.Name = updated.Name; _context.Update(numbering); await _context.SaveChangesAsync(); return(new RServiceResult <bool>(true)); } catch (Exception exp) { return(new RServiceResult <bool>(false, exp.ToString())); } }