using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; using DivanRazor.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Newtonsoft.Json; using RMuseum.Models.Accounting; namespace DivanRazor.Areas.Admin.Pages { public class ExpensesModel : PageModel { /// /// HttpClient instance /// private readonly HttpClient _httpClient; /// /// constructor /// /// public ExpensesModel(HttpClient httpClient) { _httpClient = httpClient; } /// /// last message /// public string LastMessage { get; set; } [BindProperty] public DivanExpense Expense { get; set; } /// /// donations /// public DivanExpense[] Expenses { get; set; } /// /// show account info /// public string ShowAccountInfo { get; set; } private async Task ReadExpenses() { var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/donations/expense"); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); return; } Expenses = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); using (HttpClient secureClient = new HttpClient(new DivanReloginHandler(Request, Response))) { if (await DivanSessionChecker.PrepareClient(secureClient, Request, Response)) { HttpResponseMessage resAccountInfo = await secureClient.GetAsync($"{APIRoot.Url}/api/donations/accountinfo/visible"); if (!resAccountInfo.IsSuccessStatusCode) { LastMessage = await resAccountInfo.Content.ReadAsStringAsync(); return; } ShowAccountInfo = JsonConvert.DeserializeObject(await resAccountInfo.Content.ReadAsStringAsync()) ? "نمایش حساب فعال است." : "نمایش حساب غیرفعال است."; } } } public async Task OnGetAsync() { if (string.IsNullOrEmpty(Request.Cookies["Token"])) return Redirect("/"); LastMessage = ""; Expense = new DivanExpense() { ExpenseDate = DateTime.Now.Date, Unit = "تومان", }; await ReadExpenses(); return Page(); } public async Task OnPostAsync(DivanExpense Expense) { LastMessage = ""; using (HttpClient secureClient = new HttpClient(new DivanReloginHandler(Request, Response))) { if (await DivanSessionChecker.PrepareClient(secureClient, Request, Response)) { HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/donations/expense", new StringContent(JsonConvert.SerializeObject(Expense), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); } else { await ReadExpenses(); } } else { LastMessage = "لطفاً از دیوان خارج و مجددا به آن وارد شوید."; } } return Page(); } public async Task OnPostRebuildPageAsync() { using (HttpClient secureClient = new HttpClient(new DivanReloginHandler(Request, Response))) { if (await DivanSessionChecker.PrepareClient(secureClient, Request, Response)) { HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/donations/page", null); if (!response.IsSuccessStatusCode) { return BadRequest(JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync())); } return new OkObjectResult(true); } } return new OkObjectResult(false); } public async Task OnDeleteAsync(int id) { using (HttpClient secureClient = new HttpClient(new DivanReloginHandler(Request, Response))) { if (await DivanSessionChecker.PrepareClient(secureClient, Request, Response)) { var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/donations/expense/{id}"); if (!response.IsSuccessStatusCode) { return BadRequest(JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync())); } return new OkObjectResult(true); } } return new OkObjectResult(false); } } }