public async void AddAsync(Nivel nivel) { IEdificioRepository edificioRepository = new EdificioRepository(); var filterEdificio = Builders <Edificio> .Filter.Eq(x => x.Id, nivel.EdificioId); var resultEdificio = edificioRepository.GetByIdAsync(nivel.EdificioId); if (resultEdificio != null) { await Niveis.InsertOneAsync(nivel); if (resultEdificio.ListNivel == null) { resultEdificio.InstanciarListNivel(); } var filterNivel = Builders <Nivel> .Filter.Eq(x => x.EdificioId, resultEdificio.Id); var resultNivel = await Niveis.FindAsync(filterNivel); while (await resultNivel.MoveNextAsync()) { var batch = resultNivel.Current; foreach (var document in batch) { resultEdificio.AdicionarNivel(document); } } var updateEdificio = Builders <Edificio> .Update .Set(x => x.ListNivel, resultEdificio.ListNivel); await edificioRepository.UpdateAsync(filterEdificio, updateEdificio); } }
public async Task <Nivel> Update(string id, Nivel nivel) { IEdificioRepository EdificioRepository = new EdificioRepository(); var filterNivel = Builders <Nivel> .Filter.Eq(x => x.Id, id); var updateNivel = Builders <Nivel> .Update .Set(x => x.Nome, nivel.Nome) .Set(x => x.Descricao, nivel.Descricao) .Set(x => x.UltimaAtualizacao, nivel.UltimaAtualizacao); var result = await Niveis.FindOneAndUpdateAsync(filterNivel, updateNivel); var filterEdificio = Builders <Edificio> .Filter.Eq(x => x.Id, result.EdificioId) & Builders <Edificio> .Filter.Eq("Niveis._id", new ObjectId(result.Id)); var updateEdificio = Builders <Edificio> .Update .Set("Niveis.$.Nome", nivel.Nome) .Set("Niveis.$.Descricao", nivel.Descricao) .Set("Niveis.$.UltimaAtualizacao", nivel.UltimaAtualizacao); await EdificioRepository.UpdateAsync(filterEdificio, updateEdificio); return(result); }