Esempio n. 1
0
        protected override async Task Handle(SharePrivateList command)
        {
            var privateList = await _privateListFetchHandler.Handle(new GetPrivateListByUserId(command.UserId));

            var sharedList = CreateSharedListFromPrivate(privateList, command);

            var user = await WriteService.GetAsync <User>(command.UserId);

            var listNameSpecification = new SharedListNameSpecification(user);

            if (!listNameSpecification.SatisfiedBy(sharedList.Name))
            {
                throw new ObjectAlreadyExistsException <BookList>(new OnExceptionObjectDescriptor
                {
                    ["Name"] = command.Name
                });
            }

            await WriteService.SaveAsync(sharedList);

            var privateItems = await _privateItemsFetchHandler.Handle(new GetItemsByListId(privateList.Id));

            var sharedItems = CreateSharedItemsFromPrivateItems(privateItems, sharedList.Id);

            await WriteService.SaveBatchAsync(sharedItems);
        }
Esempio n. 2
0
        protected override async Task Handle(AddBookToLists command)
        {
            var lists = await _listsFetchHandler.Handle(new GetListsByIds(command.ListsIds));

            var items =
                (await _itemsFetchHandler.Handle(new GetItemsByBookAndListIds(command.ListsIds, command.BookId)))
                .ToList();

            var newItems = new List <BookListItem>();

            foreach (var list in lists)
            {
                Validate(list, command.UserId, items, command.BookId);
                newItems.Add(CreateItem(list, command));
            }

            await WriteService.SaveBatchAsync(newItems);
        }