/// <summary> /// comment /// </summary> /// <param name="comment"></param> /// <param name="poemId"></param> /// <param name="inReplytoId"></param> /// <param name="coupletIndex"></param> /// <returns></returns> public async Task <ActionResult> OnPostComment(string comment, int poemId, int inReplytoId, int coupletIndex) { using (HttpClient secureClient = new HttpClient()) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { var stringContent = new StringContent( JsonConvert.SerializeObject ( new GanjoorCommentPostViewModel() { HtmlComment = comment, InReplyToId = inReplytoId == 0 ? null : inReplytoId, PoemId = poemId, CoupletIndex = coupletIndex == -1 ? null : coupletIndex } ), Encoding.UTF8, "application/json"); var response = await secureClient.PostAsync($"{APIRoot.Url}/api/ganjoor/comment", stringContent); if (response.StatusCode == HttpStatusCode.OK) { GanjoorCommentSummaryViewModel resComment = JsonConvert.DeserializeObject <GanjoorCommentSummaryViewModel>(await response.Content.ReadAsStringAsync()); resComment.MyComment = true; return(new PartialViewResult() { ViewName = "_CommentPartial", ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { Model = new _CommentPartialModel() { Comment = resComment, Error = "", InReplyTo = inReplytoId == 0 ? null : new GanjoorCommentSummaryViewModel(), LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]) } } }); } else { return(new PartialViewResult() { ViewName = "_CommentPartial", ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { Model = new _CommentPartialModel() { Comment = null, Error = JsonConvert.DeserializeObject <string>(await response.Content.ReadAsStringAsync()), InReplyTo = null, LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]) } } }); } } else { return(new PartialViewResult() { ViewName = "_CommentPartial", ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { Model = new _CommentPartialModel() { Comment = null, Error = "لطفا از گنجور خارج و مجددا به آن وارد شوید.", InReplyTo = null } } }); } } }
/// <summary> /// get /// </summary> public async Task <IActionResult> OnGetAsync() { if (string.IsNullOrEmpty(Request.Cookies["Token"])) { return(Redirect("/")); } LastError = ""; TotalCount = 0; Skip = string.IsNullOrEmpty(Request.Query["skip"]) ? 0 : int.Parse(Request.Query["skip"]); EditMode = !string.IsNullOrEmpty(Request.Query["id"]); using (HttpClient secureClient = new HttpClient()) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { var trackResponse = await secureClient.GetAsync( EditMode? $"{APIRoot.Url}/api/ganjoor/song/{Request.Query["id"]}" : $"{APIRoot.Url}/api/ganjoor/song?skip={Skip}&onlyMine=false" ); if (!trackResponse.IsSuccessStatusCode) { LastError = JsonConvert.DeserializeObject <string>(await trackResponse.Content.ReadAsStringAsync()); } else { if (!EditMode) { string paginnationMetadata = trackResponse.Headers.GetValues("paging-headers").FirstOrDefault(); if (!string.IsNullOrEmpty(paginnationMetadata)) { TotalCount = JsonConvert.DeserializeObject <PaginationMetadata>(paginnationMetadata).totalCount; } } PoemMusicTrackViewModel = JsonConvert.DeserializeObject <PoemMusicTrackViewModel>(await trackResponse.Content.ReadAsStringAsync()); PoemMusicTrackViewModel.ArtistName = PoemMusicTrackViewModel.ArtistName.ToPersianNumbers().ApplyCorrectYeKe(); PoemMusicTrackViewModel.AlbumName = PoemMusicTrackViewModel.AlbumName.ToPersianNumbers().ApplyCorrectYeKe(); PoemMusicTrackViewModel.TrackName = PoemMusicTrackViewModel.TrackName.ToPersianNumbers().ApplyCorrectYeKe(); var poemResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{PoemMusicTrackViewModel.PoemId}?catInfo=false&rhymes=false&recitations=false&images=false&songs=false&comments=false&verseDetails=false&navigation=false"); if (poemResponse.IsSuccessStatusCode) { Poem = JsonConvert.DeserializeObject <GanjoorPoemCompleteViewModel>(await poemResponse.Content.ReadAsStringAsync()); } else { LastError = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } if (!EditMode) { var userHistoryResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/song/user/stats/{PoemMusicTrackViewModel.SuggestedById}"); if (userHistoryResponse.IsSuccessStatusCode) { UserSongSuggestionsHistory = JsonConvert.DeserializeObject <UserSongSuggestionsHistory>(await userHistoryResponse.Content.ReadAsStringAsync()); } else { LastError = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } } } } else { LastError = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } } return(Page()); }
public async Task <IActionResult> OnPostAsync() { Skip = string.IsNullOrEmpty(Request.Query["skip"]) ? 0 : int.Parse(Request.Query["skip"]); if (Request.Form["next"].Count == 1) { return(Redirect($"/User/ReviewSongs/?skip={Skip + 1}")); } EditMode = !string.IsNullOrEmpty(Request.Query["id"]); if (EditMode) { using (HttpClient secureClient = new HttpClient()) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { if (Request.Form["approve"].Count == 1) { PoemMusicTrackViewModel.Approved = true; var putResponse = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/song/update", new StringContent(JsonConvert.SerializeObject(PoemMusicTrackViewModel), Encoding.UTF8, "application/json")); if (!putResponse.IsSuccessStatusCode) { LastError = JsonConvert.DeserializeObject <string>(await putResponse.Content.ReadAsStringAsync()); } } else { var delResponse = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/song?id={Request.Query["id"]}"); if (!delResponse.IsSuccessStatusCode) { LastError = JsonConvert.DeserializeObject <string>(await delResponse.Content.ReadAsStringAsync()); } } } else { LastError = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } } } else { PoemMusicTrackViewModel.Approved = Request.Form["approve"].Count == 1; PoemMusicTrackViewModel.Rejected = (Request.Form["reject1"].Count + Request.Form["reject2"].Count + Request.Form["reject3"].Count) > 0; if (string.IsNullOrEmpty(PoemMusicTrackViewModel.RejectionCause)) { if (Request.Form["reject1"].Count == 1) { PoemMusicTrackViewModel.RejectionCause = "در آهنگ این شعر خوانده نشده"; } else if (Request.Form["reject2"].Count == 1) { PoemMusicTrackViewModel.RejectionCause = "لینک یا اطلاعات آهنگ ایراد دارد"; } } using (HttpClient secureClient = new HttpClient()) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { var putResponse = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/song", new StringContent(JsonConvert.SerializeObject(PoemMusicTrackViewModel), Encoding.UTF8, "application/json")); if (!putResponse.IsSuccessStatusCode) { LastError = JsonConvert.DeserializeObject <string>(await putResponse.Content.ReadAsStringAsync()); } } else { LastError = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } } } if (!string.IsNullOrEmpty(LastError)) { return(Page()); } return(Redirect($"/User/ReviewSongs/?skip={Skip}")); }
public async Task <IActionResult> OnGetAsync() { if (string.IsNullOrEmpty(Request.Cookies["Token"])) { return(Redirect("/")); } LastError = ""; using (HttpClient secureClient = new HttpClient()) if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { { int pageNumber = 1; if (!string.IsNullOrEmpty(Request.Query["page"])) { pageNumber = int.Parse(Request.Query["page"]); } int poemId = 0; if (!string.IsNullOrEmpty(Request.Query["id"])) { poemId = int.Parse(Request.Query["id"]); } var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{poemId}/corrections/effective?PageNumber={pageNumber}&PageSize=20"); if (!response.IsSuccessStatusCode) { LastError = JsonConvert.DeserializeObject <string>(await response.Content.ReadAsStringAsync()); return(Page()); } Corrections = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject <List <GanjoorPoemCorrectionViewModel> >(); string paginnationMetadata = response.Headers.GetValues("paging-headers").FirstOrDefault(); if (!string.IsNullOrEmpty(paginnationMetadata)) { PaginationMetadata paginationMetadata = JsonConvert.DeserializeObject <PaginationMetadata>(paginnationMetadata); PaginationLinks = new List <NameIdUrlImage>(); if (paginationMetadata.totalPages > 1) { if (paginationMetadata.currentPage > 3) { PaginationLinks.Add ( new NameIdUrlImage() { Name = "صفحهٔ اول", Url = "/User/PoemCorrectionsHistory?page=1" } ); } for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++) { if (i >= 1 && i <= paginationMetadata.totalPages) { if (i == paginationMetadata.currentPage) { PaginationLinks.Add ( new NameIdUrlImage() { Name = i.ToPersianNumbers(), } ); } else { PaginationLinks.Add ( new NameIdUrlImage() { Name = i.ToPersianNumbers(), Url = $"/User/PoemCorrectionsHistory?page={i}" } ); } } } if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2)) { PaginationLinks.Add ( new NameIdUrlImage() { Name = "... ", } ); PaginationLinks.Add ( new NameIdUrlImage() { Name = "صفحهٔ آخر", Url = $"/User/PoemCorrectionsHistory?page={paginationMetadata.totalPages}" } ); } } } } } else { LastError = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } return(Page()); }
public async Task <IActionResult> OnPostAsync() { RedirectUrl = Request.Query["redirect"]; if (string.IsNullOrEmpty(RedirectUrl)) { RedirectUrl = "/"; } if (!ModelState.IsValid) { return(Page()); } LoginViewModel.ClientAppName = "GanjooRazor"; LoginViewModel.Language = "fa-IR"; using (HttpClient client = new HttpClient()) { if (string.IsNullOrEmpty(LoginViewModel.Username)) { if (await GanjoorSessionChecker.PrepareClient(client, Request, Response)) { var logoutUrl = $"{APIRoot.Url}/api/users/delsession?userId={Request.Cookies["UserId"]}&sessionId={Request.Cookies["SessionId"]}"; await client.DeleteAsync(logoutUrl); } var cookieOption = new CookieOptions() { Expires = DateTime.Now.AddDays(-1) }; foreach (var cookieName in new string[] { "UserId", "SessionId", "Token", "Username", "Name", "Permissions" }) { if (Request.Cookies[cookieName] != null) { Response.Cookies.Append(cookieName, "", cookieOption); } } return(Page()); } else { var stringContent = new StringContent(JsonConvert.SerializeObject(LoginViewModel), Encoding.UTF8, "application/json"); var loginUrl = $"{APIRoot.Url}/api/users/login"; var response = await client.PostAsync(loginUrl, stringContent); if (response.StatusCode != HttpStatusCode.OK) { LastError = await response.Content.ReadAsStringAsync(); return(Page()); } LoggedOnUserModel loggedOnUser = JsonConvert.DeserializeObject <LoggedOnUserModel>(await response.Content.ReadAsStringAsync()); var cookieOption = new CookieOptions() { Expires = DateTime.Now.AddDays(365), }; Response.Cookies.Append("UserId", loggedOnUser.User.Id.ToString(), cookieOption); Response.Cookies.Append("SessionId", loggedOnUser.SessionId.ToString(), cookieOption); Response.Cookies.Append("Token", loggedOnUser.Token, cookieOption); Response.Cookies.Append("Username", loggedOnUser.User.Username, cookieOption); Response.Cookies.Append("Name", $"{loggedOnUser.User.FirstName} {loggedOnUser.User.SureName}", cookieOption); List <string> permissions = new List <string>(); foreach (var securableItem in loggedOnUser.SecurableItem) { foreach (var operation in securableItem.Operations) { if (operation.Status) { permissions.Add($"{securableItem.ShortName}-{operation.ShortName}"); } } } Response.Cookies.Append("Permissions", JsonConvert.SerializeObject(permissions.ToArray()), cookieOption); } } LastError = "Success!"; return(Redirect(RedirectUrl)); }
public async Task <IActionResult> OnGetAsync() { ErrorMessage = ""; CanTranslate = false; if (!string.IsNullOrEmpty(Request.Cookies["Token"])) { await GanjoorSessionChecker.ApplyPermissionsToViewData(Request, Response, ViewData); if (ViewData.ContainsKey($"{RMuseumSecurableItem.GanjoorEntityShortName}-{RMuseumSecurableItem.Translations}")) { CanTranslate = true; } } PoemId = int.Parse(Request.Query["p"]); ViewData["GoogleAnalyticsCode"] = _configuration["GoogleAnalyticsCode"]; HttpResponseMessage responseLanguages = await _httpClient.GetAsync($"{APIRoot.Url}/api/translations/languages"); if (!responseLanguages.IsSuccessStatusCode) { ErrorMessage = JsonConvert.DeserializeObject <string>(await responseLanguages.Content.ReadAsStringAsync()); return(Page()); } var allLanguages = JsonConvert.DeserializeObject <GanjoorLanguage[]>(await responseLanguages.Content.ReadAsStringAsync()); HttpResponseMessage response = await _httpClient.GetAsync($"{APIRoot.Url}/api/translations/poem/{PoemId}/published"); if (!response.IsSuccessStatusCode) { ErrorMessage = JsonConvert.DeserializeObject <string>(await response.Content.ReadAsStringAsync()); return(Page()); } Translations = JsonConvert.DeserializeObject <GanjoorPoemTranslationViewModel[]>(await response.Content.ReadAsStringAsync()); LanguageId = string.IsNullOrEmpty(Request.Query["lang"]) ? -1 : int.Parse(Request.Query["lang"]); List <GanjoorLanguage> poemLanguages = new List <GanjoorLanguage>(); foreach (var lang in allLanguages) { if (Translations.Where(t => t.Language.Id == lang.Id).FirstOrDefault() != null) { poemLanguages.Add(lang); } } if (LanguageId != -1) { if (!poemLanguages.Where(l => l.Id == LanguageId).Any()) { poemLanguages.Add(allLanguages.Where(l => l.Id == LanguageId).Single()); } } Languages = poemLanguages.ToArray(); if (LanguageId != -1) { Translations = Translations.Where(t => t.Language.Id == LanguageId).ToArray(); } Translation = Translations.Length > 0 ? Translations[0] : null; if (Translation != null) { LanguageId = Translation.Language.Id; } var responsePoem = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{PoemId}?verseDetails=true&catInfo=true&rhymes=false&recitations=false&images=false&songs=false&comments=false&navigation=true"); if (!responsePoem.IsSuccessStatusCode) { ErrorMessage = JsonConvert.DeserializeObject <string>(await responsePoem.Content.ReadAsStringAsync()); return(Page()); } Poem = JsonConvert.DeserializeObject <GanjoorPoemCompleteViewModel>(await responsePoem.Content.ReadAsStringAsync()); return(Page()); }