Ejemplo n.º 1
0
        public HttpResponseMessage CadastrarRack([FromBody] RackModel request)
        {
            if (request == null)
            {
                return(BadRequest($"O parametro {nameof(request)} não pode ser null"));
            }

            Slot slot = contexto.Slots.FirstOrDefault(x => x.Id == request.SlotId);

            slot.Ocupado = true;

            if (contexto.Racks.Where(x => x.Slot.Id == slot.Id).Count() != 0)
            {
                return(BadRequest("Já existe um rack neste slot."));
            }

            Rack rack = CreateRack(request.QuantidadeGavetas, request.Tensao, request.Descricao);

            rack.Slot = slot;

            if (rack.Validar())
            {
                for (var i = 0; i < rack.QuantidadeGavetas; i++)
                {
                    contexto.Gavetas.Add(CreateGaveta(rack, i + 1));
                }
                contexto.SaveChanges();

                return(Ok(rack));
            }

            return(BadRequest(rack.Mensagens));
        }
Ejemplo n.º 2
0
        public HttpResponseMessage CadastrarAndar([FromBody] AndarModel request)
        {
            if (request == null)
            {
                return(BadRequest($"O parametro {nameof(request)} não pode ser null"));
            }

            Edificacao edificacao = contexto.Edificacoes.FirstOrDefault(x => x.Id == request.EdificacaoId);

            if (edificacao.NumeroAndares < request.NumeroAndar)
            {
                return(BadRequest("O andar solicitado ultrapassa o limite máximo do prédio."));
            }

            if (contexto.Andares.Where(x => x.Edificacao.Id == edificacao.Id && x.NumeroAndar == request.NumeroAndar).ToList().Count() != 0)
            {
                return(BadRequest("Já existe este andar no edifício."));
            }

            Andar andar = CreateAndar(request.NumeroAndar, request.QuantidadeMaximaSalas, request.EdificacaoId);

            if (andar.Validar())
            {
                contexto.Andares.Add(andar);
                contexto.SaveChanges();

                return(Ok(andar));
            }

            return(BadRequest(andar.Mensagens));
        }
        public HttpResponseMessage CadastrarEdificacao([FromBody] EdificacaoModel request)
        {
            if (request == null)
            {
                return(BadRequest($"O parametro {nameof(request)} não pode ser null"));
            }

            if (contexto.Edificacoes.Where(x => x.Latitude == request.Latitude && x.Longitude == request.Longitude).Count() != 0)
            {
                return(BadRequest("Já existe uma edificação nessa localização."));
            }

            if (contexto.Edificacoes.Where(x => x.Nome == request.Nome).Count() != 0)
            {
                return(BadRequest("Já existe uma edificação com esse nome."));
            }

            Edificacao edificacao = CreateEdificacao(request.Nome, request.NumeroAndares, request.Longitude, request.Latitude);

            if (edificacao.Validar())
            {
                contexto.Edificacoes.Add(edificacao);
                contexto.SaveChanges();

                return(Ok(edificacao));
            }

            return(BadRequest(edificacao.Mensagens));
        }
        public HttpResponseMessage CadastrarEquipamento([FromBody] EquipamentoModel request)
        {
            if (request == null)
            {
                return(BadRequest($"O parametro {nameof(request)} não pode ser null"));
            }

            List <Gaveta> gavetasPedidas = contexto.Gavetas.Include(x => x.Rack)
                                           .Where(x => request.GavetasId.Contains(x.Id))
                                           .OrderBy(x => x.Posicao).ToList();

            if (gavetasPedidas.Count() != request.Tamanho)
            {
                return(BadRequest("A quantidade de gavetas encontradas não é igual ao tamanho do equipamento."));
            }

            if (gavetasPedidas.Any(x => x.Ocupado == true))
            {
                return(BadRequest("Gaveta(s) ocupada(s)."));
            }

            if (gavetasPedidas.Any(x => x.Rack.Id != gavetasPedidas[0].Rack.Id))
            {
                return(BadRequest("As gavetas não são do mesmo rack."));
            }

            for (int i = 0; i < gavetasPedidas.Count() - 1; i++)
            {
                if (gavetasPedidas[i].Posicao > gavetasPedidas[i + 1].Posicao)
                {
                    return(BadRequest("As gavetas pedidas não são consecutivas."));
                }
            }

            int  idRack = gavetasPedidas[0].Rack.Id;
            Rack rack   = contexto.Racks.FirstOrDefault(x => x.Id == idRack);

            if (rack.Tensao != request.Tensao)
            {
                return(BadRequest("O rack não tem a mesma tensão do equipamento."));
            }

            Equipamento equipamento = CreateEquipamento(request.Descricao, request.Tamanho, request.Tensao);

            if (equipamento.Validar())
            {
                contexto.Equipamentos.Add(equipamento);
                foreach (Gaveta gaveta in gavetasPedidas)
                {
                    gaveta.Ocupado     = true;
                    gaveta.Equipamento = equipamento;
                }
                contexto.SaveChanges();

                return(Ok(equipamento));
            }

            return(BadRequest(equipamento.Mensagens));
        }
Ejemplo n.º 5
0
        public static void DeletarAndar(IDatacenterMapContext contexto, int andarId)
        {
            Andar       andar = contexto.Andares.Include(x => x.Salas).FirstOrDefault(x => x.Id == andarId);
            List <Sala> salas = andar.Salas.ToList();

            salas.ForEach(x => { DeletarSala(contexto, x.Id); salas = contexto.Salas.Where(a => a.Andar.Id == andarId).ToList(); });
            contexto.Andares.Remove(andar);
            contexto.SaveChanges();
        }
Ejemplo n.º 6
0
        public static void DeletarEdificacao(IDatacenterMapContext contexto, int edificacaoId)
        {
            Edificacao   edificacao = contexto.Edificacoes.Include(x => x.Andares).FirstOrDefault(x => x.Id == edificacaoId);
            List <Andar> andares    = edificacao.Andares.ToList();

            andares.ForEach(x => { DeletarAndar(contexto, x.Id); andares = contexto.Andares.Where(e => e.Edificacao.Id == edificacaoId).ToList(); });
            contexto.Edificacoes.Remove(edificacao);
            contexto.SaveChanges();
        }
Ejemplo n.º 7
0
        public static void DeletarSala(IDatacenterMapContext contexto, int salaId)
        {
            Sala       sala     = contexto.Salas.Include(x => x.Slots).FirstOrDefault(x => x.Id == salaId);
            List <int> idsSlots = new List <int>();

            sala.Slots.ForEach(x => idsSlots.Add(x.Id));
            List <Rack> racks = contexto.Racks.Include(x => x.Slot).Where(x => idsSlots.Contains(x.Slot.Id)).ToList();

            racks.ForEach(x => DeletarRack(contexto, x.Id));
            contexto.Slots.RemoveRange(sala.Slots);
            contexto.Salas.Remove(sala);
            contexto.SaveChanges();
        }
Ejemplo n.º 8
0
        public HttpResponseMessage CadastrarSala([FromBody] SalaModel request)
        {
            if (request == null)
            {
                return(BadRequest($"O parametro {nameof(request)} não pode ser null"));
            }

            Andar andar = contexto.Andares.FirstOrDefault(x => x.Id == request.AndarId);

            if (contexto.Salas.Where(x => x.Andar.Id == andar.Id).Count() >= andar.QuantidadeMaximaSalas)
            {
                return(BadRequest("Quantidade máxima de salas ultrapassada."));
            }

            if (contexto.Salas.Where(x => x.Andar.Id == andar.Id && x.NumeroSala.Equals(request.NumeroSala)).Count() != 0)
            {
                return(BadRequest("Já existe uma sala com esse número nesse andar."));
            }

            Sala sala = CreateSala(request.NumeroSala, request.QuantidadeMaximaSlots, request.Largura, request.Comprimento);

            sala.Andar = andar;

            andar.Salas.Add(sala);

            if (sala.Validar())
            {
                for (var i = 0; i < sala.QuantidadeMaximaSlots; i++)
                {
                    contexto.Slots.Add(CreateSlot(sala));
                }
                contexto.SaveChanges();

                return(Ok(sala));
            }

            return(BadRequest(sala.Mensagens));
        }
Ejemplo n.º 9
0
        public HttpResponseMessage CadastrarUsuario([FromBody] UsuarioModel request)
        {
            if (request == null)
            {
                return(BadRequest($"O parametro {nameof(request)} não pode ser null"));
            }

            if (contexto.Usuarios.Where(x => x.Email == request.Email).Count() != 0)
            {
                return(BadRequest("Já existe uma conta com esse email."));
            }

            Usuario usuario = MontarUsuario(request.Nome, request.Email, request.Senha);

            if (usuario.Validar())
            {
                contexto.Usuarios.Add(usuario);
                contexto.SaveChanges();

                return(Ok(usuario));
            }

            return(BadRequest(usuario.Mensagens));
        }
Ejemplo n.º 10
0
        public static void DeletarRack(IDatacenterMapContext contexto, int rackId)
        {
            Rack          rack            = contexto.Racks.Include(x => x.Slot).FirstOrDefault(x => x.Id == rackId);
            List <Gaveta> gavetas         = contexto.Gavetas.Include(x => x.Equipamento).Include(x => x.Rack).Where(x => x.Rack.Id == rackId).ToList();
            List <int>    idsEquipamentos = new List <int>();

            gavetas.Where(x => x.Equipamento != null).ToList().ForEach(x => idsEquipamentos.Add(x.Equipamento.Id));
            List <Equipamento> equipamentos = contexto.Equipamentos.Include(x => x.Gavetas).Where(x => idsEquipamentos.Contains(x.Id)).ToList();

            rack.Slot.Ocupado = false;

            contexto.Equipamentos.RemoveRange(equipamentos);
            contexto.Gavetas.RemoveRange(gavetas);
            contexto.Racks.Remove(rack);
            contexto.SaveChanges();
        }