private async Task AddTagsAsync(int itemId, AddingEditingItemViewModel model) { foreach (string content in model.TagNames) { await itemManager.AddTagAsync(content, itemId, false); } await context.SaveChangesAsync(); }
private bool ValidateFields(AddingEditingItemViewModel model) { foreach (int id in model.FieldIds) { if (!model.Collection.Fields.Any(f => f.Id == id)) { return(false); } } return(true); }
public async Task <IActionResult> Add(AddingEditingItemViewModel model) { model.ReturnUrl ??= "~/"; model.Collection = collectionManager.GetById(model.CollectionId, true); if (model.Collection == null) { return(View("Error", new ErrorViewModel { ErrorTitle = localizer["CollectionNotFoundTitle"], ErrorMessage = localizer["CollectionNotFoundMessage"] })); } var view = await CheckUser(model.Collection.User.UserName); if (view != null) { return(view); } if (!ValidateFields(model)) { return(View("Error", new ErrorViewModel { ErrorTitle = localizer["ValidationErrorMessage"], ErrorMessage = localizer["ValidationErrorTitle", model.Collection.Name], ButtonLabel = localizer["ToCollectionPage"], Url = model.ReturnUrl })); } if (ModelState.IsValid) { var item = new Item { Name = model.Name, CollectionId = model.CollectionId, FieldValues = GetFieldValues(model) }; if (await itemManager.AddAsync(item) == OperationResult.Failed) { return(View("Error", new ErrorViewModel { ErrorTitle = localizer["AddingItemErrorTitle"], ErrorMessage = localizer["AddingItemErrorMessage"], ButtonLabel = localizer["ToCollectionPage"], Url = model.ReturnUrl })); } await AddTagsAsync(item.Id, model); return(Redirect(model.ReturnUrl)); } return(View("AddEdit", model)); }
private List <FieldValue> GetFieldValues(AddingEditingItemViewModel model) { var fieldValues = new List <FieldValue>(); for (int i = 0; i < model.FieldIds.Count; i++) { fieldValues.Add(new FieldValue { FieldId = model.FieldIds[i], Value = model.Values[i] }); } return(fieldValues); }
public async Task <IActionResult> Edit(AddingEditingItemViewModel model) { model.ReturnUrl ??= "~/"; model.Collection = collectionManager.GetById(model.CollectionId, true); if (model.Collection == null) { return(View("Error", new ErrorViewModel { ErrorTitle = localizer["CollectionNotFoundTitle"], ErrorMessage = localizer["CollectionNotFoundMessage"] })); } var view = await CheckUser(model.Collection.User.UserName); if (view != null) { return(view); } var item = context.Items.Where(i => i.Id == model.ItemId).Include(i => i.FieldValues).SingleOrDefault(i => i.Id == model.ItemId); if (item == null) { return(View("Error", new ErrorViewModel { ErrorTitle = localizer["ItemNotFoundTitle"], ErrorMessage = localizer["ItemNotFoundMessage"], ButtonLabel = localizer["ToCollectionPage"], Url = model.ReturnUrl })); } if (!ValidateFields(model)) { return(View("Error", new ErrorViewModel { ErrorTitle = localizer["ValidationErrorMessage"], ErrorMessage = localizer["ValidationErrorTitle", model.Collection.Name], ButtonLabel = localizer["ToCollectionPage"], Url = model.ReturnUrl })); } if (ModelState.IsValid) { await EditItem(item, model); return(Redirect(model.ReturnUrl)); } return(View("AddEdit", model)); }
private async Task EditItem(Item item, AddingEditingItemViewModel model) { item.Name = model.Name; for (int i = 0; i < model.FieldIds.Count; i++) { var fieldValue = item.FieldValues.SingleOrDefault(fv => fv.FieldId == model.FieldIds[i]); if (fieldValue != null) { fieldValue.Value = model.Values[i]; } } context.ItemTags.RemoveRange(context.ItemTags.Where(it => it.ItemId == item.Id)); await AddTagsAsync(item.Id, model); await context.SaveChangesAsync(); }