Esempio n. 1
0
        /// <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()));
            }
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        /// <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());
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        /// <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));
        }
Esempio n. 7
0
        /// <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()));
            }
        }