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