public async Task <IActionResult> AddEntry(int categoryId, IFormCollection form) { try { FactFileEntry entryToSave = new FactFileEntry(); // Validate inputs first // // // entryToSave.Active = form.Bool("active"); entryToSave.CategoryId = categoryId; // Update text fields entryToSave.PrimaryName = form.Str("primaryName"); entryToSave.AltName = form.Str("altName"); entryToSave.BodyText = form.Str("bodyText"); // Update media fields entryToSave.ListenAudioId = form.Int("listenAudioId"); entryToSave.PronounceAudioId = form.Int("pronounceAudioId"); if (entryToSave.ListenAudioId == 0) { entryToSave.ListenAudioId = null; } if (entryToSave.PronounceAudioId == 0) { entryToSave.PronounceAudioId = null; } entryToSave.MainImageId = form.Int("mainImageId"); await _Db.AddAsync(entryToSave); await _Db.SaveChangesAsync(); // to generate id // Remove and rebuild fact file entry image records int[] imageArray = JsonConvert.DeserializeObject <int[]>(form.Str("images")); entryToSave.FactFileEntryImages = new List <FactFileEntryImage>(); foreach (int imageId in imageArray) { entryToSave.FactFileEntryImages.Add(new FactFileEntryImage { FactFileEntryId = entryToSave.Id, MediaFileId = imageId }); } // Remove and rebuild fact file nugget records FactFileNugget[] updatedNuggets = JsonConvert.DeserializeObject <FactFileNugget[]>(form.Str("nuggets")); entryToSave.FactFileNuggets = new List <FactFileNugget>(); for (int i = 0; i < updatedNuggets.Length; i++) { updatedNuggets[i].OrderIndex = i; entryToSave.FactFileNuggets.Add(updatedNuggets[i]); } await _Db.SaveChangesAsync(); return(Ok(entryToSave.Id)); } catch (Exception ex) { _Logger.LogError("Error saving new entry", ex.Message); _Logger.LogError(ex.StackTrace); return(BadRequest(new ResponseHelper("Something went wrong, please try again in a few minutes.", ex.Message))); } }
//POST: /admin/pages/create public async Task <IActionResult> Create(IFormCollection request, [Bind("Name", "Description", "Section")] Page page) { PageTemplate template = await _Db.PageTemplates.FindAsync( request.Int("templateId")); if (template == null) { return(NotFound($"The chosen template was not found.")); } if (!ModelState.IsValid) { return(BadRequest("Server side validation failed.")); } try { await _Db.AddAsync(page); // Create initial page revision PageRevision pageRevision = new PageRevision { Page = page, Template = template, CreatedBy = await _Db.Accounts.FindAsync(User.AccountId()) }; await _Db.AddAsync(pageRevision); // Create empty text fields, and associate to new page for (int i = 0; i < template.TextAreas; i++) { TextComponent textField = new TextComponent { SlotNo = i }; await _Db.AddAsync(textField); await _Db.AddAsync(new RevisionTextComponent { TextComponent = textField, PageRevision = pageRevision, }); } // Create empty media fields, and associate to new page for (int i = 0; i < template.MediaAreas; i++) { MediaComponent mediaComponent = new MediaComponent { SlotNo = i }; await _Db.AddAsync(mediaComponent); await _Db.AddAsync(new RevisionMediaComponent { PageRevisionId = pageRevision.Id, MediaComponentId = mediaComponent.Id }); } // Save all to database in one transaction await _Db.SaveChangesAsync(); // Return new page URL to the caller return(Ok(page.AbsoluteUrl)); } catch (Exception ex) { _Logger.LogWarning("Error creating new page: {0}", ex.Message); _Logger.LogWarning(ex.StackTrace); return(BadRequest("There was an error creating the page. Please try again later.")); } }
public async Task <IActionResult> UpdateEntry(int id, IFormCollection form) { try { FactFileEntry entryToUpdate = await _Db.FactFileEntries .Include(entry => entry.FactFileEntryImages) .Include(entry => entry.FactFileNuggets) .Where(entry => entry.Id == id) .FirstOrDefaultAsync(); if (entryToUpdate == null) { return(NotFound(new ResponseHelper("Something went wrong, please contact the developers if the problem persists."))); } // Validate inputs first // // // entryToUpdate.Active = form.Bool("active"); // Update text fields entryToUpdate.PrimaryName = form.Str("primaryName"); entryToUpdate.AltName = form.Str("altName"); entryToUpdate.BodyText = form.Str("bodyText"); // Update media fields entryToUpdate.ListenAudioId = form.Int("listenAudioId"); entryToUpdate.PronounceAudioId = form.Int("pronounceAudioId"); if (entryToUpdate.ListenAudioId == 0) { entryToUpdate.ListenAudioId = null; } if (entryToUpdate.PronounceAudioId == 0) { entryToUpdate.PronounceAudioId = null; } entryToUpdate.MainImageId = form.Int("mainImageId"); // Remove and rebuild fact file entry image records int[] imageArray = JsonConvert.DeserializeObject <int[]>(form.Str("images")); _Db.RemoveRange(entryToUpdate.FactFileEntryImages); foreach (int imageId in imageArray) { entryToUpdate.FactFileEntryImages.Add(new FactFileEntryImage { FactFileEntryId = entryToUpdate.Id, MediaFileId = imageId }); } // Remove and rebuild fact file nugget records FactFileNugget[] updatedNuggets = JsonConvert.DeserializeObject <FactFileNugget[]>(form.Str("nuggets")); _Db.RemoveRange(entryToUpdate.FactFileNuggets); for (int i = 0; i < updatedNuggets.Length; i++) { updatedNuggets[i].OrderIndex = i; entryToUpdate.FactFileNuggets.Add(updatedNuggets[i]); } await _Db.SaveChangesAsync(); return(Ok()); } catch (Exception ex) { _Logger.LogError("Error updating entry", ex.Message); _Logger.LogError(ex.StackTrace); return(BadRequest(new ResponseHelper("Something went wrong, please try again in a few minutes.", ex.Message))); } }