using System.Net.Http; using System.Text; using System.Threading.Tasks; using GanjooRazor.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Newtonsoft.Json; using RMuseum.Models.Accounting; using RMuseum.Models.Accounting.ViewModels; namespace GanjooRazor.Areas.Admin.Pages { public class ExpenseEditModel : PageModel { /// /// HttpClient instance /// private readonly HttpClient _httpClient; /// /// constructor /// /// public ExpenseEditModel(HttpClient httpClient) { _httpClient = httpClient; } [BindProperty] public UpdateDateDescriptionViewModel Expense { get; set; } public string LastMessage { get; set; } public async Task OnGetAsync() { if (string.IsNullOrEmpty(Request.Cookies["Token"])) return Redirect("/"); LastMessage = ""; var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/donations/expense/{Request.Query["id"]}"); if(!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); return Page(); } var expense = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); Expense = new UpdateDateDescriptionViewModel() { Date = expense.ExpenseDate, Description = expense.Description }; return Page(); } public async Task OnPostAsync() { LastMessage = ""; using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) { await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/donations/expense/{Request.Query["id"]}", new StringContent(JsonConvert.SerializeObject(Expense), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); return Page(); } return Redirect("/Admin/Expenses"); } } } }