Exemplo n.º 1
0
 private async Task AddTagsAsync(int itemId, AddingEditingItemViewModel model)
 {
     foreach (string content in model.TagNames)
     {
         await itemManager.AddTagAsync(content, itemId, false);
     }
     await context.SaveChangesAsync();
 }
Exemplo n.º 2
0
 private bool ValidateFields(AddingEditingItemViewModel model)
 {
     foreach (int id in model.FieldIds)
     {
         if (!model.Collection.Fields.Any(f => f.Id == id))
         {
             return(false);
         }
     }
     return(true);
 }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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();
        }