public async Task <int> Handle(AddClaimCommand request, CancellationToken cancellationToken)
        {
            var claimDocument = new ClaimDocument();

            claimDocument.Name       = request.Name;
            claimDocument.Year       = request.Year;
            claimDocument.DamageCost = request.DamageCost.ToString("F");
            claimDocument.Type       = request.Type.GetDescription();
            claimDocument.CreatedAt  = DateTime.UtcNow;

            _cosmosDbClaimDocumentService.AddItem(claimDocument);
            var claimChangeNotification = new ClaimChangeEventNotification()
            {
                ClaimAudit = new ClaimAudit()
                {
                    Id          = Convert.ToInt32(claimDocument.Id),
                    Name        = request.Name,
                    Year        = request.Year,
                    DamageCost  = request.DamageCost,
                    Type        = request.Type.GetDescription(),
                    CreatedAt   = claimDocument.CreatedAt,
                    RequestName = "Add Claim"
                }
            };
            await _mediator.Publish(claimChangeNotification);

            return(0);
        }
        public async Task <Unit> Handle(DeleteClaimCommand request, CancellationToken cancellationToken)
        {
            var claimDocument = await _cosmosDbClaimDocumentService.GetItemAsync(request.Id);

            if (claimDocument == null)
            {
                throw new NotFoundException(nameof(ClaimDocument), request.Id);
            }

            await _cosmosDbClaimDocumentService.DeleteItemAsync(request.Id);

            var claimChangeNotification = new ClaimChangeEventNotification()
            {
                ClaimAudit = new ClaimAudit()
                {
                    Id          = Convert.ToInt32(request.Id),
                    Name        = claimDocument.Name,
                    Year        = claimDocument.Year,
                    DamageCost  = Convert.ToDecimal(claimDocument.DamageCost),
                    Type        = claimDocument.Type,
                    CreatedAt   = claimDocument.CreatedAt,
                    RequestName = "Delete Claim"
                }
            };
            await _mediator.Publish(claimChangeNotification);

            return(Unit.Value);
        }
        public async Task Test_ClaimChangeEventNotification_ShouldPublishEventToEventGrid()
        {
            var configuration = TestHelper.GetConfiguration();
            var publishEvent  = TestHelper.GetPublishEvent(configuration);

            ClaimChangeEventNotification claimChangeEvent = new ClaimChangeEventNotification()
            {
                ClaimAudit = new ClaimAudit()
                {
                    Id          = 2,
                    Name        = "Test Name",
                    Year        = 2015,
                    DamageCost  = 23.1M,
                    Type        = ClaimType.Collision.GetDescription(),
                    CreatedAt   = DateTime.UtcNow,
                    RequestName = "Add Claim"
                }
            };

            var handler = new ClaimChangeEventNotificationHandler(publishEvent);
            await handler.Handle(claimChangeEvent, CancellationToken.None);

            Assert.IsTrue(true);
        }