diff --git a/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml b/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml index ebc7623c..02d72600 100644 --- a/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml +++ b/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml @@ -74,8 +74,86 @@ else }, }); } + + function switchOption(start) { + if(start == false){ + + document.getElementById('switch-tracking-button').style.visibility = 'hidden'; + document.getElementById('processing').innerHTML = 'در حال پردازش ...'; + + $.ajax({ + type: "POST", + url: '?handler=StopKeeping', + error: function() { + alert('خطا رخ داد.'); + location.reload(); + }, + success: function () { + location.reload(); + }, + }); + return; + } + + document.getElementById('switch-tracking-button').style.visibility = 'hidden'; + document.getElementById('processing').innerHTML = 'در حال پردازش ...'; + + $.ajax({ + type: "POST", + url: '?handler=StartKeeping', + error: function() { + alert('خطا رخ داد.'); + location.reload(); + }, + success: function () { + location.reload(); + }, + }); + } + + + @if (Model.Comments.Count == 0) + { +

+ موردی وجود ندارد. +

+ } + @foreach (var comment in Model.Comments) { if (color == "gray") @@ -96,8 +174,8 @@ else

- 🗑 - انتشار + +

diff --git a/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml.cs b/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml.cs index 6c8b7de6..0438806a 100644 --- a/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml.cs +++ b/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml.cs @@ -33,99 +33,111 @@ namespace GanjooRazor.Areas.User.Pages /// pagination links /// public List PaginationLinks { get; set; } + + /// + /// keep comments + /// + public bool KeepFirstTimeUsersComments { get; set; } public async Task OnGetAsync() { LastError = ""; using (HttpClient secureClient = new HttpClient()) if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { + + var responseKeepFirstTimeUsersComments = await secureClient.GetAsync($"{APIRoot.Url}/api/options/global/KeepFirstTimeUsersComments"); + if (!responseKeepFirstTimeUsersComments.IsSuccessStatusCode) { + LastError = JsonConvert.DeserializeObject(await responseKeepFirstTimeUsersComments.Content.ReadAsStringAsync()); + return Page(); + } - int pageNumber = 1; - if (!string.IsNullOrEmpty(Request.Query["page"])) - { - pageNumber = int.Parse(Request.Query["page"]); - } - var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/comments/awaiting?PageNumber={pageNumber}&PageSize=20"); - if (!response.IsSuccessStatusCode) - { - LastError = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); - return Page(); - } + KeepFirstTimeUsersComments = JsonConvert.DeserializeObject(await responseKeepFirstTimeUsersComments.Content.ReadAsStringAsync()) == true.ToString(); - Comments = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); + int pageNumber = 1; + if (!string.IsNullOrEmpty(Request.Query["page"])) + { + pageNumber = int.Parse(Request.Query["page"]); + } + var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/comments/awaiting?PageNumber={pageNumber}&PageSize=20"); + if (!response.IsSuccessStatusCode) + { + LastError = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + return Page(); + } - string paginnationMetadata = response.Headers.GetValues("paging-headers").FirstOrDefault(); - if (!string.IsNullOrEmpty(paginnationMetadata)) + Comments = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); + + string paginnationMetadata = response.Headers.GetValues("paging-headers").FirstOrDefault(); + if (!string.IsNullOrEmpty(paginnationMetadata)) + { + PaginationMetadata paginationMetadata = JsonConvert.DeserializeObject(paginnationMetadata); + PaginationLinks = new List(); + if (paginationMetadata.totalPages > 1) { - PaginationMetadata paginationMetadata = JsonConvert.DeserializeObject(paginnationMetadata); - PaginationLinks = new List(); - if (paginationMetadata.totalPages > 1) + if (paginationMetadata.currentPage > 3) { - if (paginationMetadata.currentPage > 3) - { - PaginationLinks.Add - ( - new NameIdUrlImage() - { - Name = "صفحهٔ اول", - Url = "/User/AwaitingComments/?page=1" - } - ); - } - for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++) - { - if (i >= 1 && i <= paginationMetadata.totalPages) + PaginationLinks.Add + ( + new NameIdUrlImage() + { + Name = "صفحهٔ اول", + Url = "/User/AwaitingComments/?page=1" + } + ); + } + for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++) + { + if (i >= 1 && i <= paginationMetadata.totalPages) + { + if (i == paginationMetadata.currentPage) { - if (i == paginationMetadata.currentPage) - { - PaginationLinks.Add - ( - new NameIdUrlImage() - { - Name = i.ToPersianNumbers(), - } - ); - } - else - { + PaginationLinks.Add + ( + new NameIdUrlImage() + { + Name = i.ToPersianNumbers(), + } + ); + } + else + { - PaginationLinks.Add - ( - new NameIdUrlImage() - { - Name = i.ToPersianNumbers(), - Url = $"/User/AwaitingComments/?page={i}" - } - ); - } + PaginationLinks.Add + ( + new NameIdUrlImage() + { + Name = i.ToPersianNumbers(), + Url = $"/User/AwaitingComments/?page={i}" + } + ); } } - if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2)) - { + } + if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2)) + { - PaginationLinks.Add - ( - new NameIdUrlImage() - { - Name = "... ", - } - ); + PaginationLinks.Add + ( + new NameIdUrlImage() + { + Name = "... ", + } + ); - PaginationLinks.Add - ( - new NameIdUrlImage() - { - Name = "صفحهٔ آخر", - Url = $"/User/AwaitingComments/?page={paginationMetadata.totalPages}" - } - ); - } + PaginationLinks.Add + ( + new NameIdUrlImage() + { + Name = "صفحهٔ آخر", + Url = $"/User/AwaitingComments/?page={paginationMetadata.totalPages}" + } + ); } } - } + } else { @@ -175,5 +187,45 @@ namespace GanjooRazor.Areas.User.Pages } return new JsonResult(true); } + + public async Task OnPostStopKeepingAsync() + { + using (HttpClient secureClient = new HttpClient()) + { + if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + { + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/options/global/KeepFirstTimeUsersComments", new StringContent(JsonConvert.SerializeObject(false.ToString()), Encoding.UTF8, "application/json")); + if (response.StatusCode != HttpStatusCode.OK) + { + return new BadRequestObjectResult(JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync())); + } + } + else + { + return new BadRequestObjectResult("لطفا از گنجور خارج و مجددا به آن وارد شوید."); + } + } + return new JsonResult(true); + } + + public async Task OnPostStartKeepingAsync() + { + using (HttpClient secureClient = new HttpClient()) + { + if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + { + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/options/global/KeepFirstTimeUsersComments", new StringContent(JsonConvert.SerializeObject(true.ToString()), Encoding.UTF8, "application/json")); + if (response.StatusCode != HttpStatusCode.OK) + { + return new BadRequestObjectResult(JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync())); + } + } + else + { + return new BadRequestObjectResult("لطفا از گنجور خارج و مجددا به آن وارد شوید."); + } + } + return new JsonResult(true); + } } } diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index 8b0a9567..33d32e48 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -12443,7 +12443,12 @@ http client - + + + options service + + + constructor @@ -12455,6 +12460,7 @@ + diff --git a/RMuseum/Services/Implementation/GanjoorService.cs b/RMuseum/Services/Implementation/GanjoorService.cs index ec23a3dc..08b4fb6f 100644 --- a/RMuseum/Services/Implementation/GanjoorService.cs +++ b/RMuseum/Services/Implementation/GanjoorService.cs @@ -745,7 +745,8 @@ namespace RMuseum.Services.Implementation } PublishStatus status = PublishStatus.Published; - if (bool.Parse(Configuration.GetSection("Ganjoor")["KeepFirstTimeUsersComments"])) + var keepFirstTimeUsersComments = await _optionsService.GetValueAsync("KeepFirstTimeUsersComments", null); + if (keepFirstTimeUsersComments.Result == true.ToString()) { if((await _context.GanjoorComments.AsNoTracking().Where(c => c.UserId == userId && c.Status == PublishStatus.Published).AnyAsync()) == false)//First time commenter { @@ -3871,6 +3872,12 @@ namespace RMuseum.Services.Implementation /// protected readonly HttpClient _httpClient; + /// + /// options service + /// + + protected readonly IRGenericOptionsService _optionsService; + /// /// constructor /// @@ -3882,7 +3889,8 @@ namespace RMuseum.Services.Implementation /// /// /// - public GanjoorService(RMuseumDbContext context, IConfiguration configuration, IBackgroundTaskQueue backgroundTaskQueue, IAppUserService appUserService, IRNotificationService notificationService, IImageFileService imageFileService, IMemoryCache memoryCache, HttpClient httpClient) + /// + public GanjoorService(RMuseumDbContext context, IConfiguration configuration, IBackgroundTaskQueue backgroundTaskQueue, IAppUserService appUserService, IRNotificationService notificationService, IImageFileService imageFileService, IMemoryCache memoryCache, HttpClient httpClient, IRGenericOptionsService optionsService) { _context = context; _backgroundTaskQueue = backgroundTaskQueue; @@ -3892,6 +3900,7 @@ namespace RMuseum.Services.Implementation _memoryCache = memoryCache; Configuration = configuration; _httpClient = httpClient; + _optionsService = optionsService; } } } diff --git a/RMuseum/appsettings.json b/RMuseum/appsettings.json index 07c9aa59..41804b7c 100644 --- a/RMuseum/appsettings.json +++ b/RMuseum/appsettings.json @@ -84,8 +84,7 @@ "GDBStorage": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\sgdb", "GDBStorageImageSource": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\img", "GDBListXMLFile": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\sitepoets.xml", - "GDBPreExisitingListXMLFile": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\programpoets.xml", - "KeepFirstTimeUsersComments": "True" + "GDBPreExisitingListXMLFile": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\programpoets.xml" }, "WebServiceUrl": "http://localhost:3439", "ReadOnlyMode": "False",