Esempio n. 1
0
        private async Task <Result <WishModel> > Insert(int userId, IEnumerable <WishCreationModel> wishCreationModel)
        {
            foreach (var wishItem in wishCreationModel)
            {
                this.wishRepository.Add(Wish.Create(userId, wishItem.IdProduct).Value);
            }

            unitOfWork.Save();

            var products = new List <ProductModel>();

            foreach (var i in wishCreationModel)
            {
                products.Add(await this.productQueryRepository.GetById(i.IdProduct));
            }

            var model = new WishModel
            {
                Id       = userId,
                Products = products,
            };

            var indexResult = await this.indexService.IndexDocumentAsync(model);

            if (indexResult.Failure)
            {
                await RollbackInsert(userId, wishCreationModel);

                return(OperationResult.InternalServerError <WishModel>(indexResult));
            }

            return(OperationResult.Created(model));
        }
Esempio n. 2
0
        private async Task <Result <WishModel> > Update(WishModel wish, IEnumerable <WishCreationModel> wishCreationModel)
        {
            var productsIds = wishCreationModel.Select(x => x.IdProduct);

            var existsItemsResult = IfWishItemsExistsInWishList(wish, productsIds);

            if (existsItemsResult.Failure)
            {
                return(OperationResult.NotFound <WishModel>(existsItemsResult));
            }

            foreach (var wishItem in productsIds)
            {
                this.wishRepository.Add(Wish.Create(wish.Id, wishItem).Value);
            }

            unitOfWork.Save();

            var products = new List <ProductModel>();

            foreach (var i in wishCreationModel)
            {
                products.Add(await this.productQueryRepository.GetById(i.IdProduct));
            }

            wish.Products.AddRange(products);

            var indexResult = await this.indexService.UpdateDocumentAsync(wish.Id, wish);

            if (indexResult.Failure)
            {
                await RollbackUpdate(wish, wishCreationModel);

                return(OperationResult.InternalServerError <WishModel>(indexResult));
            }

            return(OperationResult.NoContent <WishModel>());
        }