docs: #275 adding rejection cause for photos/speclines to UI

This commit is contained in:
Hamid Reza Mohammadi 2022-02-24 16:44:10 +03:30
parent c07d46e12d
commit 77094b5730
8 changed files with 127 additions and 79 deletions

View File

@ -73,6 +73,12 @@ else
</td>
<td>
<table style="width:100%" class="noborder">
<tr>
<td>
<span class="inputlabel">علت رد: </span>
<input asp-for="Suggestion.RejectionCause" />
</td>
</tr>
<tr>
<td>
<button type="submit" name="reject" id="reject" style="width:100%;color:white;background-color:darkred">رد</button>

View File

@ -149,10 +149,10 @@ namespace GanjooRazor.Areas.User.Pages
}
else
{
var deleteResponse = await secureClient.DeleteAsync($"{APIRoot.Url}/api/poetphotos/{Suggestion.Id}");
if (!deleteResponse.IsSuccessStatusCode)
var rejectResponse = await secureClient.PutAsync($"{APIRoot.Url}/api/poetphotos/reject/{Suggestion.Id}", new StringContent(JsonConvert.SerializeObject(Suggestion.RejectionCause), Encoding.UTF8, "application/json"));
if (!rejectResponse.IsSuccessStatusCode)
{
LastError = JsonConvert.DeserializeObject<string>(await deleteResponse.Content.ReadAsStringAsync());
LastError = JsonConvert.DeserializeObject<string>(await rejectResponse.Content.ReadAsStringAsync());
}
}

View File

@ -51,6 +51,12 @@ else
</td>
<td>
<table style="width:100%" class="noborder">
<tr>
<td>
<span class="inputlabel">علت رد: </span>
<input asp-for="Suggestion.RejectionCause" />
</td>
</tr>
<tr>
<td>
<button type="submit" name="reject" id="reject" style="width:100%;color:white;background-color:darkred">رد</button>

View File

@ -149,10 +149,10 @@ namespace GanjooRazor.Areas.User.Pages
}
else
{
var deleteResponse = await secureClient.DeleteAsync($"{APIRoot.Url}/api/poetspecs/{Suggestion.Id}");
if (!deleteResponse.IsSuccessStatusCode)
var rejectionResponse = await secureClient.PutAsync($"{APIRoot.Url}/api/poetspecs/reject/{Suggestion.Id}", new StringContent(JsonConvert.SerializeObject(Suggestion.RejectionCause), Encoding.UTF8, "application/json"));
if (!rejectionResponse.IsSuccessStatusCode)
{
LastError = JsonConvert.DeserializeObject<string>(await deleteResponse.Content.ReadAsStringAsync());
LastError = JsonConvert.DeserializeObject<string>(await rejectionResponse.Content.ReadAsStringAsync());
}
}

View File

@ -57,8 +57,8 @@ namespace GanjooRazor.Pages
{
LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]);
if (!string.IsNullOrEmpty(Request.Query["p"]))
{
var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poet?url=/{Request.Query["p"]}");
@ -111,47 +111,50 @@ namespace GanjooRazor.Pages
public async Task<ActionResult> OnPostSuggestAsync(int poetId, string contents)
{
string error = "";
using (HttpClient secureClient = new HttpClient())
{
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
if (string.IsNullOrEmpty(contents))
error = "متن خالی است.";
else
using (HttpClient secureClient = new HttpClient())
{
var response = await secureClient.PostAsync($"{APIRoot.Url}/api/poetspecs",
new StringContent(
JsonConvert.SerializeObject
(
new GanjoorPoetSuggestedSpecLineViewModel()
{
PoetId = poetId,
Contents = contents,
}
),
Encoding.UTF8, "application/json")
);
if (response.StatusCode == HttpStatusCode.OK)
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
var line = JsonConvert.DeserializeObject<GanjoorPoetSuggestedSpecLineViewModel>(await response.Content.ReadAsStringAsync());
return new PartialViewResult()
{
ViewName = "_PoetSpecLinePartial",
ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
{
Model = new _PoetSpecLinePartialModel()
var response = await secureClient.PostAsync($"{APIRoot.Url}/api/poetspecs",
new StringContent(
JsonConvert.SerializeObject
(
new GanjoorPoetSuggestedSpecLineViewModel()
{
Line = line
PoetId = poetId,
Contents = contents,
}
}
};
),
Encoding.UTF8, "application/json")
);
if (response.StatusCode == HttpStatusCode.OK)
{
var line = JsonConvert.DeserializeObject<GanjoorPoetSuggestedSpecLineViewModel>(await response.Content.ReadAsStringAsync());
return new PartialViewResult()
{
ViewName = "_PoetSpecLinePartial",
ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
{
Model = new _PoetSpecLinePartialModel()
{
Line = line
}
}
};
}
else
{
error = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
}
}
else
{
error = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
error = "لطفا از گنجور خارج و مجددا به آن وارد شوید.";
}
}
else
{
error = "لطفا از گنجور خارج و مجددا به آن وارد شوید.";
}
}
return new PartialViewResult()
{
ViewName = "_PoetSpecLinePartial",
@ -171,43 +174,52 @@ namespace GanjooRazor.Pages
public async Task<IActionResult> OnPostAsync(PoetPhotoSuggestionUploadModel Upload)
{
using (HttpClient secureClient = new HttpClient())
{
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
if (string.IsNullOrEmpty(Upload.Title))
LastError = "عنوان خالی است.";
else
if (string.IsNullOrEmpty(Upload.Description))
LastError = "توضیح خالی است.";
else
if (Upload.Image == null)
LastError = "تصویر انتخاب نشده است.";
else
using (HttpClient secureClient = new HttpClient())
{
MultipartFormDataContent form = new MultipartFormDataContent();
using (MemoryStream stream = new MemoryStream())
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
form.Add(new StringContent(Upload.PoetId.ToString()), "poetId");
form.Add(new StringContent(Upload.Title), "title");
form.Add(new StringContent(Upload.Description), "description");
form.Add(new StringContent(""), "srcUrl");
MultipartFormDataContent form = new MultipartFormDataContent();
await Upload.Image.CopyToAsync(stream);
var fileContent = stream.ToArray();
form.Add(new ByteArrayContent(fileContent, 0, fileContent.Length), Upload.Image.FileName, Upload.Image.FileName);
HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/poetphotos", form);
if (!response.IsSuccessStatusCode)
using (MemoryStream stream = new MemoryStream())
{
LastError = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
}
else
{
UploadedPhoto = JsonConvert.DeserializeObject<GanjoorPoetSuggestedPictureViewModel>(await response.Content.ReadAsStringAsync());
form.Add(new StringContent(Upload.PoetId.ToString()), "poetId");
form.Add(new StringContent(Upload.Title), "title");
form.Add(new StringContent(Upload.Description), "description");
form.Add(new StringContent(""), "srcUrl");
UploadedPhoto.ImageUrl = $"{APIRoot.InternetUrl}/{UploadedPhoto.ImageUrl}";
await Upload.Image.CopyToAsync(stream);
var fileContent = stream.ToArray();
form.Add(new ByteArrayContent(fileContent, 0, fileContent.Length), Upload.Image.FileName, Upload.Image.FileName);
HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/poetphotos", form);
if (!response.IsSuccessStatusCode)
{
LastError = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
}
else
{
UploadedPhoto = JsonConvert.DeserializeObject<GanjoorPoetSuggestedPictureViewModel>(await response.Content.ReadAsStringAsync());
UploadedPhoto.ImageUrl = $"{APIRoot.InternetUrl}/{UploadedPhoto.ImageUrl}";
}
}
}
}
else
{
LastError = "لطفا از گنجور خارج و مجددا به آن وارد شوید.";
}
else
{
LastError = "لطفا از گنجور خارج و مجددا به آن وارد شوید.";
}
}
}
return await OnGetAsync();

View File

@ -49,7 +49,10 @@ namespace RMuseum.Models.Ganjoor.ViewModels
/// </summary>
public bool ChosenOne { get; set; }
/// <summary>
/// rejection cause
/// </summary>
public string RejectionCause { get; set; }
}
}

View File

@ -36,5 +36,10 @@ namespace RMuseum.Models.Ganjoor.ViewModels
/// suggested by id
/// </summary>
public Guid? SuggestedById { get; set; }
/// <summary>
/// rejection cause
/// </summary>
public string RejectionCause { get; set; }
}
}

View File

@ -1568,11 +1568,12 @@
<param name="photo"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorPoetSuggestedPhotosController.DeletePoetSuggestedPhotosAsync(System.Int32)">
<member name="M:RMuseum.Controllers.GanjoorPoetSuggestedPhotosController.RejectPoetSuggestedPhotosAsync(System.Int32,System.String)">
<summary>
delete a suggestion for poets photos
reject a suggestion for poets photos
</summary>
<param name="id"></param>
<param name="rejectionCause"></param>
<returns></returns>
</member>
<member name="F:RMuseum.Controllers.GanjoorPoetSuggestedPhotosController._poetPhotosService">
@ -1621,11 +1622,12 @@
<param name="spec"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorPoetSuggestedSpecLinesController.DeletePoetSuggestedSpecLinesAsync(System.Int32)">
<member name="M:RMuseum.Controllers.GanjoorPoetSuggestedSpecLinesController.RejectPoetSuggestedSpecLinesAsync(System.Int32,System.String)">
<summary>
delete a suggestion for poets spec lines
reject a suggestion for poets spec lines
</summary>
<param name="id"></param>
<param name="rejectionCause"></param>
<returns></returns>
</member>
<member name="F:RMuseum.Controllers.GanjoorPoetSuggestedSpecLinesController._ganjoorService">
@ -8022,6 +8024,11 @@
selected
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.RejectionCause">
<summary>
rejection cause
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedSpecLineViewModel">
<summary>
Ganjoor Poet Specification view model
@ -8057,6 +8064,11 @@
suggested by id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedSpecLineViewModel.RejectionCause">
<summary>
rejection cause
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetViewModel">
<summary>
Ganjoor Poet
@ -10844,12 +10856,13 @@
<param name="model"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.DeletePoetSuggestedSpecLinesAsync(System.Int32,System.Guid)">
<member name="M:RMuseum.Services.IGanjoorService.RejectPoetSuggestedSpecLinesAsync(System.Int32,System.Guid,System.String)">
<summary>
delete a suggestion for poets spec lines
reject a suggestion for poets spec lines
</summary>
<param name="id"></param>
<param name="deleteUserId"></param>
<param name="rejectionCause"></param>
<returns></returns>
</member>
<member name="T:RMuseum.Services.IGanjoorTranslationService">
@ -12319,12 +12332,13 @@
<param name="model"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.DeletePoetSuggestedSpecLinesAsync(System.Int32,System.Guid)">
<member name="M:RMuseum.Services.Implementation.GanjoorService.RejectPoetSuggestedSpecLinesAsync(System.Int32,System.Guid,System.String)">
<summary>
delete a suggestion for poets spec lines
</summary>
<param name="id"></param>
<param name="deleteUserId"></param>
<param name="rejectionCause"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.StartFindingMissingRhythms(System.Boolean,System.Int32)">
@ -13471,12 +13485,13 @@
<param name="model"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.PoetPhotoSuggestionService.DeletePoetSuggestedPhotoAsync(System.Int32,System.Guid)">
<member name="M:RMuseum.Services.Implementation.PoetPhotoSuggestionService.RejectPoetSuggestedPhotosAsync(System.Int32,System.Guid,System.String)">
<summary>
delete a suggested photo for poets
</summary>
<param name="id"></param>
<param name="deleteUserId"></param>
<param name="rejectionCause"></param>
<returns></returns>
</member>
<member name="F:RMuseum.Services.Implementation.PoetPhotoSuggestionService._context">
@ -14152,12 +14167,13 @@
<param name="model"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPoetPhotoSuggestionService.DeletePoetSuggestedPhotoAsync(System.Int32,System.Guid)">
<member name="M:RMuseum.Services.IPoetPhotoSuggestionService.RejectPoetSuggestedPhotosAsync(System.Int32,System.Guid,System.String)">
<summary>
delete a suggested photo for poets
</summary>
<param name="id"></param>
<param name="deleteUserId"></param>
<param name="rejectionCause"></param>
<returns></returns>
</member>
<member name="T:RMuseum.Services.IRecitationService">