コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }