public async Task <IActionResult> OnGet() { Item = await new Base().Get(SiteSettings, Admin, PageName); if (Item == null) { return(NotFound()); } RepositoryData = await Testimonial.Item(SiteSettings.Site, QueryId) ?? new DataModel { Id = QueryId, Name = string.Empty, EmailAddress = string.Empty, Work = await Work.Item(QueryId), Entries = new List <LocalizedDataModel>() }; if (RepositoryData.Work == null) { return(NotFound()); } // ReSharper disable once InvertIf if (!RepositoryData.Entries.Any()) { var testimonial = new LocalizedDataModel { Lcid = SiteSettings.Lcid, Html = string.Empty }; RepositoryData.Entries.Add(testimonial); } else { LocalizedDataModel entry = RepositoryData.Entries.FirstOrDefault(x => x.Lcid == SiteSettings.Lcid); if (entry == null) { return(NotFound()); } RepositoryData.Entries.Remove(entry); entry.Html = entry.Html.Replace("<p>", string.Empty).Replace("</p>", string.Empty); RepositoryData.Entries.Add(entry); } Session.Json.SetObject(HttpContext.Session, Session.Key.TestimonialDataModel, RepositoryData); Data = new EditModel { Cover = RepositoryData.Work.Cover.Path, Author = RepositoryData.Work.Authors, EmailAddress = RepositoryData.EmailAddress, Text = RepositoryData.Entries.FirstOrDefault(x => x.Lcid == SiteSettings.Lcid)?.Html, Title = RepositoryData.Work.Title }; return(Page()); }
public async Task <ActionResult> OnPostSave() { Result result; try { var stream = new MemoryStream(); await Request.Body.CopyToAsync(stream); stream.Position = 0; using var reader = new StreamReader(stream); string requestBody = await reader.ReadToEndAsync(); if (requestBody.Length <= 0) { throw new IndexOutOfRangeException("requestBody is empty."); } var obj = JsonConvert.DeserializeObject <EditModel>(requestBody); if (obj == null) { throw new NullReferenceException("Model could not be derived from JSON object."); } RepositoryData = Session.Json.GetObject <DataModel>(HttpContext.Session, Session.Key.TestimonialDataModel); RepositoryData.Name = obj.Author; RepositoryData.EmailAddress = obj.EmailAddress; RepositoryData.Portrait ??= await Image.DefaultTestimonial(SiteSettings.Site); LocalizedDataModel entry = RepositoryData.Entries.FirstOrDefault(x => x.Lcid == SiteSettings.Lcid); if (entry == null) { return(NotFound()); } RepositoryData.Entries.Remove(entry); entry.Html = "<p>" + obj.Text.Replace(Environment.NewLine, string.Empty) + "</p>"; RepositoryData.Entries.Add(entry); result = await Testimonial.Save(SiteSettings.Site, RepositoryData); if (result.Status == ResultStatus.Succeeded) { result.Messages = new List <string> { "Testimonial saved." }; } Session.Set <Guid>(HttpContext.Session, Session.Key.InquiryResult, result.ReturnId); } catch (Exception ex) { result = new Result(ResultStatus.Failed, ex.Message, Guid.Empty); } return(new JsonResult(result)); }