public async Task Save(RoleDto dto) { var role = await repository.GetByName(dto.Name); if (role == null) role = new Role(dto.Name, dto.Description, dto.Enabled); else { role.ChangeDescription(dto.Description); role.ChangeName(dto.Name); if (dto.Enabled) role.Enable(); else role.Disable(); } //como este é um exemplo, associar aleatoriamente permissões var authorizations = await authorizationRep.List(); var rnd = new Random(); foreach (var p in authorizations) { if (rnd.Next(0, 2) == 1) { role.AddAccess(p); } } await this.repository.SaveAsync(role); /* return */ this.mapper.Map<RoleDto>(role); }