using GanjooRazor.Models; using GanjooRazor.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Newtonsoft.Json; using RMuseum.Models.Ganjoor.ViewModels; using System.IO; using System.Net; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace GanjooRazor.Areas.Admin.Pages { public class BannersModel : PageModel { /// /// image /// [BindProperty] public BannerUploadModel Upload { get; set; } /// /// last message /// public string LastMessage { get; set; } /// /// banners /// public GanjoorSiteBannerViewModel[] Banners { get; set; } public async Task OnGetAsync() { if (string.IsNullOrEmpty(Request.Cookies["Token"])) return Redirect("/"); LastMessage = ""; using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { var response = await secureClient.GetAsync($"{APIRoot.Url}/api/banners"); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); } else { Banners = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); } } else { LastMessage = "لطفاً از دیوان خارج و مجددا به آن وارد شوید."; } } return Page(); } /// /// edit /// /// public async Task OnPutEditAsync(int id, string alt, string url, bool active) { LastMessage = ""; using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { GanjoorSiteBannerModifyViewModel model = new GanjoorSiteBannerModifyViewModel() { AlternateText = alt, TargetUrl = url, Active = active }; HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/banners/{id}", new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync())); } } else { return new BadRequestObjectResult("لطفاً از دیوان خارج و مجددا به آن وارد شوید."); } } return new JsonResult(true); } public async Task OnDeleteAsync(int id) { using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/banners?id={id}"); 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 OnPostAsync(BannerUploadModel Upload) { LastMessage = ""; using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { MultipartFormDataContent form = new MultipartFormDataContent(); using (MemoryStream stream = new MemoryStream()) { form.Add(new StringContent(Upload.Alt), "alt"); form.Add(new StringContent(Upload.Url), "url"); 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/banners", form); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); } } } else { LastMessage = "لطفاً از دیوان خارج و مجددا به آن وارد شوید."; } } return Page(); } } }