コード例 #1
0
        public async Task <Nivel> RemoveAsync(string id)
        {
            IItemRepository     itemRepository     = new ItemRepository();
            IEdificioRepository edificioRepository = new EdificioRepository();

            var filter = Builders <Nivel> .Filter.Eq(x => x.Id, id);

            var resultNivel = await Niveis.FindOneAndDeleteAsync(filter);

            if (resultNivel != null)
            {
                return(null);
            }

            var builder        = Builders <Edificio> .Filter;
            var filterEdificio = builder.Eq(x => x.Id, resultNivel.EdificioId);

            var filterNivel = builder.Eq("Id", resultNivel.Id);

            var result = await edificioRepository.Edificios.FindOneAndUpdateAsync(filterEdificio, Builders <Edificio> .Update.PullFilter("Niveis", filterNivel));

            var filterItem = Builders <Item> .Filter.Eq("Imobilizado.NivelId", resultNivel.Id);

            var update = Builders <Item> .Update
                         .Unset("Imobilizado");

            await itemRepository.Itens.FindOneAndUpdateAsync(filterItem, update);

            return(resultNivel);
        }
コード例 #2
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);
            }
        }
コード例 #3
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);
        }