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)); }
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>()); }