public async Task <ActionResult> DeleteAsync([FromRoute] string subDomainName)
        {
            var deleteSubDomain = new DeleteSubDomain()
            {
                Name = subDomainName
            };

            var response = await _mediator.Send(deleteSubDomain);

            if (response.Result == DeleteResult.NotFound)
            {
                return(NotFound());
            }
            else if (response.Result == DeleteResult.NotDeletedDueToDependentObjects)
            {
                return(BadRequest(response.Description));
            }
            else if (response.Result == DeleteResult.Deleted)
            {
                return(Ok());
            }
            else
            {
                return(StatusCode(500)); // result not contemplated
            }
        }
        public async Task <Response <DeleteResult> > Handle(DeleteSubDomain request)
        {
            var subDomain = await _context.BusinessSubDomains
                            .FirstOrDefaultAsync(x => x.Name.Equals(request.Name));

            if (subDomain == null)
            {
                return(new Response <DeleteResult>(DeleteResult.NotFound));
            }

            var hasDependentApis = _context.Apis.Any(x => x.BusinessSubDomainId.Equals(subDomain.Id));

            if (hasDependentApis)
            {
                return(new Response <DeleteResult>(DeleteResult.NotDeletedDueToDependentObjects,
                                                   "The business sub domain cannot be deleted because it has APIs associated to it."));
            }

            _context.BusinessSubDomains.Remove(subDomain);
            await _context.SaveChangesAsync();

            return(new Response <DeleteResult>(DeleteResult.Deleted));
        }