public async Task <DeleteCompanyResultDto> Delete(int id, int userId) { var company = await _companiesRepository.GetAsync(id, userId); if (company == null) { throw new ValidationException(Messages.CompanyDoesNotExist, nameof(Messages.CompanyDoesNotExist)); } await _companiesRepository.DeleteAsync(company); if ((await _companiesRepository.ListAsync(filter: o => o.UserId == userId)).Count == 0) { var userRole = await _userRolesRepository.GetAsync(filter : o => o.UserId == userId && o.RoleId == (int)Roles.CompanyOwner); if (userRole != null) { await _userRolesRepository.DeleteAsync(userRole); } } return(new DeleteCompanyResultDto()); }