예제 #1
0
        private async Task ClearItemTags(int itemId)
        {
            var item = await itemsCrudService.GetAsync(itemId);

            var itemTags = item.ItemTags.ToList();
            await itemTagCrudService.DeleteRangeAsync(itemTags.Select(it => it.Id));
        }
예제 #2
0
        public async Task <IActionResult> GetItemTags(int id)
        {
            var tags  = (await itemsCrudService.GetAsync(id)).ItemTags.Select(it => it.Tag).ToList();
            var tagVM = mapper.Map <IEnumerable <TagJsonVM> >(tags);

            return(Json(tagVM));
        }
예제 #3
0
        protected async override Task BaseValidation(UpdateItemModel model)
        {
            var item = await itemsCrudService.GetAsync(model.ItemId);

            if (item is null)
            {
                ValidationResult.AddError("Item not found");
            }
            var collection = await collectionsCrudService.GetAsync(model.CollectionId);

            if (collection is null)
            {
                ValidationResult.AddError("Collection not found");
            }
            var owner = await userCrudService.GetAsync(model.OwnerId);

            if (owner is null)
            {
                ValidationResult.AddError("User not found");
            }
            var resource = await resourceCrudService.GetAsync(model.ResourceId);

            if (resource is null)
            {
                ValidationResult.AddError("Resource not found");
            }
        }
        protected async override Task <bool> TrySetOwner(DeleteItemModel model)
        {
            var item = await itemsCrudService.GetAsync(model.ItemId);

            if (item is null)
            {
                return(false);
            }
            model.OwnerId = item.OwnerId;
            return(true);
        }
예제 #5
0
        public async Task <IActionResult> Item(int id)
        {
            var item = await itemsCrudService.GetAsync(id);

            if (item is null)
            {
                return(RedirectToAction(nameof(Home.Index), nameof(Home)));
            }
            sessionHelper.RememberUserId(item.OwnerId);
            var itemVM = mapper.Map <ItemVM>(item);

            itemVM.Liked = item.ItemLikes.Any(il => il.UserId == sessionHelper.GetCurrentUserId());
            return(View(itemVM));
        }
예제 #6
0
        protected async override Task BaseValidation(LikeItemModel model)
        {
            var user = await userCrudService.GetAsync(model.UserId);

            if (user is null)
            {
                ValidationResult.AddError("User not found");
            }
            var item = await itemsCrudService.GetAsync(model.ItemId);

            if (item is null)
            {
                ValidationResult.AddError("Item not found");
            }
        }
예제 #7
0
        protected async override Task BaseValidation(DeleteItemModel model)
        {
            item = await itemsCrudService.GetAsync(model.ItemId);

            if (item is null)
            {
                ValidationResult.AddError("Item not found");
            }
            owner = await userCrudService.GetAsync(model.OwnerId);

            if (owner is null)
            {
                ValidationResult.AddError("Owner not found");
            }
        }
예제 #8
0
        public async Task <IActionResult> EditItem(int id)
        {
            var item = await itemsCrudService.GetAsync(id);

            if (item is null)
            {
                return(RedirectToAction(nameof(Profile.Info), nameof(Profile)));
            }
            if (!User.IsInRole("admin") && item.OwnerId != sessionHelper.GetCurrentUserId())
            {
                return(RedirectToAction(nameof(Home.Index), nameof(Home)));
            }
            var editVM = mapper.Map <EditItemVM>(item);

            return(View(editVM));
        }
예제 #9
0
        public async Task <DeleteItemResult> DeleteAsync(DeleteItemModel deleteItemModel)
        {
            var authResult = await authenticatorsStore.DeleteItemModelAuthenticator.AuthenticateAsync(deleteItemModel);

            if (!authResult.Succeed)
            {
                return(new DeleteItemResult(authResult));
            }
            var validResult = await validatorsStore.DeleteItemModelValidator.ValidateAsync(deleteItemModel);

            if (!validResult.Succeed)
            {
                return(new DeleteItemResult(validResult));
            }
            var result       = new DeleteItemResult();
            var itemResource = (await itemsCrudService.GetAsync(deleteItemModel.ItemId)).Resource;
            await itemsCrudService.DeleteAsync(deleteItemModel.ItemId);

            await resourcesManager.DeleteAsync(itemResource);

            return(result);
        }