public void Armazenar(CargoDto dto) { Cargo cargo; if (dto.Id == 0) { cargo = CargoBuilder.Novo().ComDescricao(dto.Descricao).Build(); } else { cargo = _cargoRepositorio.ObterPorId(dto.Id); if (cargo == null) { _notificationContext.AddNotification(TipoDeNotificacao.ErroDeServico, "Cargo não encontrado"); return; } List <Cargo> cargos = _cargoRepositorio.ObterPorDescricao(dto.Descricao); if (cargos.Count > 0 && cargos.Any(x => x.Id != cargo.Id)) { _notificationContext.AddNotification(TipoDeNotificacao.ErroDeServico, "Descrição utilizada"); return; } cargo.Descricao = dto.Descricao; _cargoRepositorio.Put(cargo); } if (!cargo.Validar()) { _notificationContext.AddNotification(TipoDeNotificacao.ErroDeServico, "Cargo inválido"); return; } if (dto.Id == 0) { List <Cargo> cargos = _cargoRepositorio.ObterPorDescricao(dto.Descricao); if (cargos.Count > 0) { _notificationContext.AddNotification(TipoDeNotificacao.ErroDeServico, "Descrição utilizada"); return; } _cargoRepositorio.Post(cargo); } }