public async Task <ProductItemOutputModel> Save(ProductItemInputModel model)
        {
            var data = this.mapper.Map <ProductItem>(model);

            await Save(data);

            var messageData = new ProductItemCreatedMessage
            {
                ProductItemID = data.ID,
                NrIntern      = data.NrIntern,
                Title         = data.Title,
                SupplierID    = data.SupplierID,
                DeliveryTime  = data.DeliveryTime,
                PricePerPQ    = data.PricePerPQ,
                Description   = data.Description,
                URL           = data.URL
            };

            var m = new Message(messageData, messageData.ID);

            await Save(data, m);

            await this.bus.Publish(messageData);
            await MarkMessageAsPublished(m.ID);

            return(this.mapper.Map <ProductItemOutputModel>(data));
        }
        public async Task <ProductItemOutputModel> Save(Guid?id, ProductItemInputModel model)
        {
            if (id.HasValue)
            {
                model.ID = id.Value;
            }

            return(await service.Save(model));
        }