예제 #1
0
        private void cargaZona(dynamic item)
        {
            var verti  = item.Polygono.Split(' ');
            var codigo = ((string)item.Name).Split('-').LastOrDefault().Trim().Replace(" ", string.Empty).PadLeft(4, '0');

            //var vertices = new List<Tuple<double, double>>();
            if (codigo == "A600")
            {
                codigo = "A600";
            }
            var    vertices = new List <Coordenada>();
            double lat;
            double lng;

            foreach (var vx in verti)
            {
                var coord = vx.Split(',');
                lng = double.Parse(coord[0], CultureInfo.InvariantCulture);
                lat = double.Parse(coord[1], CultureInfo.InvariantCulture);

                var coordenada = new Coordenada()
                {
                    Latitud = lat, Longitud = lng
                };
                vertices.Add(coordenada);
                //vertices.Add(new Tuple<double, double>(lat, lng));
            }

            if (!this.Zonas.Keys.Any(p => p == codigo))
            {
                this.Zonas.Add(codigo, vertices);
            }
        }
예제 #2
0
        // GET: Home
        public ActionResult Index()
        {
            //coordenadas quaisquer para mostrar o mapa
            var coordenadas = new Coordenada("São Paulo", "-23.64340873969638", "-46.730219057147224");

            return(View(coordenadas));
        }
예제 #3
0
        /// <summary>
        /// Método que evalúa si una línea de comando "UPDATE" es válido para la clase.
        /// </summary>
        /// <param name="lineaComando">Línea de comando a evaluar.</param>
        /// <returns>Valor que indica si es válido o no.</returns>
        private bool LineaComandoValido(string lineaComando)
        {
            bool esValido = false;

            this.coordenada = new Coordenada();
            this.contenido  = 0;

            if (Regex.IsMatch(lineaComando, regexUpdate))
            {
                string[] comandoQuery = lineaComando.Split(' ');
                int[]    coordenadas  = comandoQuery.Skip(1).Select(c => int.Parse(c)).ToArray();

                if (coordenadas.Take(3).All(c => Topes.MagnitudMinima <= c && c <= Topes.MagnitudMaxima))
                {
                    int wContenido = coordenadas.Last();

                    if (Topes.ContenidoMinimo <= wContenido && wContenido <= Topes.ContenidoMaximo)
                    {
                        this.coordenada = new Coordenada(coordenadas[0], coordenadas[1], coordenadas[2]);
                        this.contenido  = wContenido;
                        esValido        = true;
                    }
                }
            }

            return(esValido);
        }
예제 #4
0
        private void Poner_Segundo_Numero(int numero, Coordenada punto_insercion)
        {
            //Comprobamos en que posiciones podemos colocar el primer número

            Coordenada arriba    = new Coordenada(punto_insercion.X, punto_insercion.Y - 1);
            Coordenada abajo     = new Coordenada(punto_insercion.X, punto_insercion.Y + 1);
            Coordenada izquierda = new Coordenada(punto_insercion.X - 1, punto_insercion.Y);
            Coordenada derecha   = new Coordenada(punto_insercion.X + 1, punto_insercion.Y);

            int ocupadas_arriba    = Comprobar_Celdas_Colindantes_Si0(arriba);
            int ocupadas_abajo     = Comprobar_Celdas_Colindantes_Si0(abajo);
            int ocupadas_izquierda = Comprobar_Celdas_Colindantes_Si0(izquierda);
            int ocupadas_derecha   = Comprobar_Celdas_Colindantes_Si0(derecha);

            if (ocupadas_arriba <= 1)
            {
                dataGridView1.Rows[arriba.Y].Cells[arriba.X].Value = "*";
            }
            if (ocupadas_abajo <= 1)
            {
                dataGridView1.Rows[abajo.Y].Cells[abajo.X].Value = "*";
            }
            if (ocupadas_izquierda <= 1)
            {
                dataGridView1.Rows[izquierda.Y].Cells[izquierda.X].Value = "*";
            }
            if (ocupadas_derecha <= 1)
            {
                dataGridView1.Rows[derecha.Y].Cells[derecha.X].Value = "*";
            }

            pon_este = numero;
        }
예제 #5
0
        internal override List <Coordenada> rangoAtaque(Coordenada coor)
        {
            List <Coordenada> tmp = new List <Coordenada>();

            switch (ladoAtaca)
            {
            case ConstructorTablero.LadoTablero.izquierda:
                for (int i = 1; i <= numeroEspaciosAtaque; i++)
                {
                    if (coor.X - i < 0 || Tablero[coor.X - i, coor.Y].TipoDelSuelo.EsObstaculo)
                    {
                        break;
                    }

                    tmp.Add(new Coordenada(coor.X - i, coor.Y));
                }
                break;

            case ConstructorTablero.LadoTablero.derecha:
                for (int i = 1; i <= numeroEspaciosAtaque; i++)
                {
                    if (coor.X + i >= ConstructorTablero.X || Tablero[coor.X + i, coor.Y].TipoDelSuelo.EsObstaculo)
                    {
                        break;
                    }

                    tmp.Add(new Coordenada(coor.X + i, coor.Y));
                }
                break;
            }

            return(tmp);
        }
        public IHttpActionResult PutCoordenada(int id, Coordenada coordenada)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != coordenada.Id)
            {
                return(BadRequest());
            }

            db.Entry(coordenada).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CoordenadaExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
예제 #7
0
        public void BuildMap(Coordenada coord)
        {
            var position = new Position(Double.Parse(coord.Latitude), Double.Parse(coord.Longitude));
            var pin      = new Pin
            {
                Type     = PinType.Place,
                Position = position,
                Label    = "custom pin",
                Address  = "custom detail info"
            };

            var map = new Map(
                MapSpan.FromCenterAndRadius(
                    new Position(Double.Parse(coord.Latitude), Double.Parse(coord.Longitude)), Distance.FromMiles(0.3)))
            {
                IsShowingUser   = true,
                HeightRequest   = 100,
                WidthRequest    = 960,
                VerticalOptions = LayoutOptions.FillAndExpand
            };

            map.Pins.Add(pin);
            var stack = new StackLayout {
                Spacing = 0
            };

            stack.Children.Add(map);
            Content = stack;
        }
예제 #8
0
        public async Task <ActionResult <Coordenada> > Post(

            [FromBody] Coordenada model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Context.Coordenadas.Add(model);
                    await Context.SaveChangesAsync();

                    return(model);
                }
                catch (System.Exception)
                {
                    Context.Update(model);
                    await Context.SaveChangesAsync();

                    return(model);
                }
            }
            else
            {
                return(BadRequest(ModelState.IsValid));
            }
        }
예제 #9
0
        public ActionResult query([FromBody] Payload payload)
        {
            int sumatoria = 0;

            Coordenada c1 = new Coordenada
            {
                x = payload.x1,
                y = payload.y1,
                z = payload.z1
            };


            Coordenada c2 = new Coordenada
            {
                x = payload.x2,
                y = payload.y2,
                z = payload.z2
            };


            Cubo cubo = new Cubo(payload.registro);


            sumatoria = cubo.query(c1, c2);


            object respuesta = new
            {
                sumatoria = sumatoria,
                mensaje   = cubo.registro.mensaje
            };


            return(Ok(respuesta));
        }
예제 #10
0
        public void InserirCoordenada(Coordenada coordenada)
        {
            coordenada.CodCoordenada = _conn.QueryScalar <int>(@"DECLARE @CodCoordenada AS INT = 0

                                                                SELECT TOP 1 @CodCoordenada = CodCoordenada
                                                                    FROM Coordenada
                                                                WHERE	Esquerda = @Esquerda
                                                                    AND Topo = @Topo
                                                                    AND Largura = @Largura
                                                                    AND Altura = @Altura

                                                                IF @CodCoordenada > 0
                                                                BEGIN
                                                                    SELECT @CodCoordenada FROM Coordenada
                                                                END
                                                                ELSE
                                                                BEGIN
                                                                    INSERT INTO Coordenada(Esquerda,Topo,Largura,Altura)
                                                                    VALUES (@Esquerda,@Topo,@Largura,@Altura)

                                                                    SELECT SCOPE_IDENTITY() AS CodCoordenada
                                                                END"
                                                               , new
            {
                coordenada.Esquerda,
                coordenada.Topo,
                coordenada.Largura,
                coordenada.Altura
            });
        }
예제 #11
0
        public async Task <ActionResult <Coordenada> > GetEspecifico(
            [FromBody] Coordenada model)
        {
            var RCoordenadas = Context.Coordenadas.FirstOrDefault(x => x.Email == model.Email);

            return(RCoordenadas);
        }
예제 #12
0
        internal void getMessage(string mensaje)
        {
            string[]   submensaje = mensaje.Split(';');
            string[]   coordenadas;
            Coordenada coor;

            switch (submensaje[0])
            {
            case "0":     // Recibe los 5 personajes
                string[] personajes = submensaje[1].Split(',');
                form1.PersonajesRemotos = personajes;
                break;

            case "1":     // Recibe el nombre del tablero
                form1.NombreTablero = submensaje[1];
                break;

            case "2":     // Recibe accion
                coordenadas = submensaje[1].Split(',');
                coor        = new Coordenada(int.Parse(coordenadas[0]), int.Parse(coordenadas[1]));
                form1.Juego.formClickRemoto(coor, coordenadas[2]);
                break;

            case "3":     // Recibe un movimiento
                coordenadas = submensaje[1].Split(',');
                coor        = new Coordenada(int.Parse(coordenadas[0]), int.Parse(coordenadas[1]));
                form1.Juego.formClickRemoto(coor, string.Empty);
                break;

            case "4":     // Recibe un ataque simple
                coordenadas = submensaje[1].Split(',');
                coor        = new Coordenada(int.Parse(coordenadas[0]), int.Parse(coordenadas[1]));
                form1.Juego.formClickRemoto(coor, string.Empty);     // <-- lleva el lado del jugador que ataco
                break;

            case "5":     // Recibe un ataque completo
                coordenadas = submensaje[1].Split(',');
                coor        = new Coordenada(int.Parse(coordenadas[0]), int.Parse(coordenadas[1]));
                form1.Juego.modoBatallaCompletoRemoto(coor);     // <-- lleva el lado del juegador que ataco
                break;

            case "6":     // Recibe un cancelado
                form1.Juego.formDoubleClickRemoto();
                break;

            case "7":     // Recibe Cambio de turno
                form1.Juego.cambiarTurno();
                break;

            case "8":     // Recibe las coordenas del click
                coordenadas = submensaje[1].Split(',');
                coor        = new Coordenada(int.Parse(coordenadas[0]), int.Parse(coordenadas[1]));
                form1.Juego.seleccionarPersonaje(coor);
                break;

            case "9":     // Recibe cancelado de Modo Batalla Completo
                form1.Juego.salirModoBatallaCompleto();
                break;
            }
        }
예제 #13
0
        //Metodo que verifica si el personaje que esta atacando entrara al modo batalla completo
        private bool siEntraModoBatallaCompleta(Coordenada coorAtacante, Coordenada coorVictima)
        {
            bool comp1 = comprobarRango(coorVictima, tablero[coorAtacante.X, coorAtacante.Y].Personaje.rangoAtaque(coorAtacante));
            bool comp2 = comprobarRango(coorAtacante, tablero[coorVictima.X, coorVictima.Y].Personaje.rangoAtaque(coorVictima));

            return(comp1 && comp2);
        }
예제 #14
0
        public void ObterCoordenadaDoPontoSuperiorDireitoDaMalhaDoPlanalto(string linha)
        {
            var caracteres = ObterCaracteresSeparadosPorEspaco(linha);

            if (caracteres.Length <= 1)
            {
                throw new IndexOutOfRangeException($"Mensagem inválida, coordenada do ponto superior-direito da malha do planalto só contém {caracteres.Length} caracter(s).");
            }

            int[] numeros  = new int[2];
            int   contador = 0;

            foreach (var item in caracteres)
            {
                int numero = 0;

                if (!ENumero(item, out numero))
                {
                    throw new ArithmeticException("Mensagem inválida, coordenada do ponto superior-direito da malha do planalto não contém valores númericos.");
                }

                numeros[contador] = numero;
                contador++;
            }

            coordenada = new Coordenada(numeros[0], numeros[1]);
        }
예제 #15
0
        private void marcarCasilla(Coordenada coordenada)
        {
            tablero = gato.turno(coordenada.x, coordenada.y, tablero);
            marcarCasillaOponente();

            determinarGanador();
        }
예제 #16
0
 private void Watcher_PositionChanged(object sender, GeoPositionChangedEventArgs <GeoCoordinate> e)
 {
     Coordenada?.Invoke(this, new CoordenadasEventArgs()
     {
         Coordenadas = new Point3D(e.Position.Location.Longitude, e.Position.Location.Latitude, e.Position.Location.Altitude)
     });
 }
        public async Task <IActionResult> PutCoordenada(int id, Coordenada coordenada)
        {
            if (id != coordenada.ruta)
            {
                return(BadRequest());
            }

            _context.Entry(coordenada).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CoordenadaExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #18
0
        private void moverCursor(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
            case Keys.NumPad8:
            case Keys.NumPad2:
            case Keys.NumPad4:
            case Keys.NumPad6:
                Coordenada target = seleccionado;
                switch (e.KeyCode)
                {
                case Keys.NumPad8:
                    target.Y--;
                    break;

                case Keys.NumPad2:
                    target.Y++;
                    break;

                case Keys.NumPad4:
                    target.X--;
                    break;

                case Keys.NumPad6:
                    target.X++;
                    break;
                }
                e.Handled = true;
                casillas[target]?.Select();
                break;
            }
        }
예제 #19
0
 /// <summary>
 /// Obetener el barco golpeado por un disparo
 /// </summary>
 /// <param name="coordenada">La cordenada del disparo</param>
 /// <returns>El barco golpeado</returns>
 private BarcoEnPartida getBarcoGolpeado(Coordenada coordenada)
 {
     if (turnoDelUsuario)
     {
         for (int i = 0; i < informacionDeLaPartida.barcosIA.Count; i++)
         {
             BarcoEnPartida barco = informacionDeLaPartida.barcosIA[i];
             for (int j = 0; j < barco.infoInstancia.coordenadasOcupadas.Length; j++)
             {
                 //SI este es el barco que golpeamos
                 if (barco.infoInstancia.coordenadasOcupadas[j].Equals(coordenada))
                 {
                     return(barco);
                 }
             }
         }
     }
     else
     {
         for (int i = 0; i < informacionDeLaPartida.barcosUsuario.Count; i++)
         {
             BarcoEnPartida barco = informacionDeLaPartida.barcosUsuario[i];
             for (int j = 0; j < barco.infoInstancia.coordenadasOcupadas.Length; j++)
             {
                 if (barco.infoInstancia.coordenadasOcupadas[j].Equals(coordenada))
                 {
                     return(barco);
                 }
             }
         }
     }
     return(null);
 }
        public void resultadoMovimiento(Coordenada mov, int resultado)
        {
            ultimoResultado = resultado;
            cant_movimientos++;
            switch (resultado)
            {
            case 0:
                cant_agua++;
                break;

            case 1:
                cant_aciertos++;
                if (ultMovAcertado == null)
                {
                    primerMov = mov;
                }
                ultMovAcertado = mov;
                ultimo_desplazamiento_acertado = ultimo_desplazamiento;
                ultimo_desplazamiento          = 0;
                break;

            case 2:
                cant_aciertos++;
                ultMovAcertado                 = null;
                primerMov                      = null;
                ultimo_desplazamiento          = 0;
                ultimo_desplazamiento_acertado = 0;
                break;

            case -1:
                cant_repetidos++;
                break;
            }
        }
예제 #21
0
        private int Comprobar_Celdas_Colindantes_Si0(Coordenada punto)
        {
            Coordenada arriba    = new Coordenada(punto.X, punto.Y - 1);
            Coordenada abajo     = new Coordenada(punto.X, punto.Y + 1);
            Coordenada izquierda = new Coordenada(punto.X - 1, punto.Y);
            Coordenada derecha   = new Coordenada(punto.X + 1, punto.Y);

            int ocupada = 0;

            if (Convert.ToInt32(dataGridView1.Rows[arriba.Y].Cells[arriba.X].Value) != 0)
            {
                ocupada++;
            }
            if (Convert.ToInt32(dataGridView1.Rows[abajo.Y].Cells[abajo.X].Value) != 0)
            {
                ocupada++;
            }
            if (Convert.ToInt32(dataGridView1.Rows[izquierda.Y].Cells[izquierda.X].Value) != 0)
            {
                ocupada++;
            }
            if (Convert.ToInt32(dataGridView1.Rows[derecha.Y].Cells[derecha.X].Value) != 0)
            {
                ocupada++;
            }

            return(ocupada);
        }
예제 #22
0
 public Raqueta(IEnumerable <IElemento> entorno, Coordenada posicion, Dimension dimension, Coordenada velocidad)
     : base(dimension, posicion, velocidad)
 {
     this.entorno = entorno;
     this.Goles   = 0;
     this.seccion = Dimension.Altura / 3;
 }
예제 #23
0
        public void ObterCoordenadaDoPontoSuperiorDireitoDaMalhaDoPlanalto(string linha)
        {
            var caracteres = ObterCaracteresSeparadosPorEspaco(linha);

            if (caracteres.Length <= 1)
            {
                especificacaoDeNegocio.Adicionar(new RegraDeNegocio($"Mensagem inválida, coordenada do ponto superior-direito da malha do planalto só contém {caracteres.Length} caracter(s)."));
                return;
            }

            int[] numeros  = new int[2];
            int   contador = 0;

            foreach (var item in caracteres)
            {
                int numero = 0;

                if (!ENumero(item, out numero))
                {
                    especificacaoDeNegocio.Adicionar(new RegraDeNegocio("Mensagem inválida, coordenada do ponto superior-direito da malha do planalto não contém valores númericos."));
                    break;
                }

                numeros[contador] = numero;
                contador++;
            }

            if (!especificacaoDeNegocio.HouveViolacao())
            {
                coordenada = new Coordenada(numeros[0], numeros[1]);
            }
        }
예제 #24
0
        public void CompruebaDistancia()
        {
            Coordenada cnds2 = new Coordenada();
            double     latx1 = -2.133674;
            double     lngy1 = -79.865877;
            double     latx2 = -2.132447;
            double     lngy2 = -79.863426;

            Cnds.SetCoordenada(latx1, lngy1, "", "");
            cnds2.SetCoordenada(latx2, lngy2, "", "");
            //Formula: Raiz((X2-X1)^2 + (Y2-Y1)^2)
            double resultado = Math.Sqrt(Math.Pow((latx2 - latx1), 2) + (Math.Pow((lngy2 - lngy1), 2)));

            Assert.AreEqual(resultado, Cnds.ObtenerDistancia(cnds2));

            //Formula: Raiz((X2-X1)^2 + (Y2-Y1)^2)
            double x1     = Cnds.LatitudAMetros(latx1);
            double x2     = Cnds.LatitudAMetros(latx2);
            double y1     = Cnds.LongitudAMetros(lngy1);
            double y2     = Cnds.LongitudAMetros(lngy2);
            double metros = Math.Sqrt(Math.Pow((x2 - x1), 2) + (Math.Pow((y2 - y1), 2)));

            Assert.AreEqual(metros, Cnds.ObtenerDistanciaMetros(cnds2));
            Assert.IsTrue(Cnds.ObtenerDistanciaMetros(cnds2) > 0);
            //Assert.AreEqual(303.96, Cnds.ObtenerDistanciaMetros(cnds2));
        }
        public async Task <ActionResult> AddorEdit(Zona zona)
        {
            if (zona.Id == 0)
            {
                Zona z = await zonasService.adicionarZona(zona);

                if (zona.Coordenadas != null)
                {
                    JavaScriptSerializer js = new JavaScriptSerializer();
                    string           valor  = zona.Coordenadas;
                    Coordenada_dto[] puntos = js.Deserialize <Coordenada_dto[]>(valor);
                    foreach (var p in puntos)
                    {
                        Coordenada c = new Coordenada();
                        c.Latitud  = p.lat;
                        c.Longitud = p.lng;
                        c.ZonaId   = z.Id;
                        await coordenadasService.adicionarCoordenada(c);
                    }
                }


                TempData["SuccessMessage"] = "Saved Successfully";
            }
            else
            {
                await zonasService.modificarZona(zona.Id, zona);

                TempData["SuccessMessage"] = "Updated Successfully";
            }

            return(RedirectToAction("Index"));
        }
예제 #26
0
        public ActionResult SalvarCoordenadas(Coordenada coordenada)
        {
            MvcUser user = (MvcUser)System.Web.HttpContext.Current.User;
            BLLResponse <Coordenada> response = new CoordenadasBLL().SalvarCoordenadas(coordenada, user.ID);

            return(Json(new { sucesso = response.Sucesso, mensagem = response.Mensagem }));
        }
예제 #27
0
        private Coordenada ObterCoordenadasDaLocalizacao(string endereco)
        {
            try
            {
                string url = $"https://maps.googleapis.com/maps/api/geocode/json?address={endereco}";
                Debug.WriteLine(url);

                var coord         = new Coordenada("Não Localizado", "-10", "-10");
                var response      = new WebClient().DownloadString(url);
                var googleGeocode = JsonConvert.DeserializeObject <GoogleGeocodeResponse>(response);
                //Debug.WriteLine(googleGeocode);

                if (googleGeocode.status == "OK")
                {
                    coord.Nome      = googleGeocode.results[0].formatted_address;
                    coord.Latitude  = googleGeocode.results[0].geometry.location.lat;
                    coord.Longitude = googleGeocode.results[0].geometry.location.lng;
                }

                return(coord);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
    private List <Coordenada> getVizinhos(Coordenada p)
    {
        List <Coordenada> retorno = new List <Coordenada>();
        int xi = p.getX();
        int zi = p.getZ();

        /*print(message: " X+1 -> " + (xi + 1) + "," + zi +
         * " X-1 -> " + (xi - 1) + "," + zi +
         * " z+1 -> " + xi + "," + (zi + 1 ) +
         * " z-1 -> " + (xi) + "," + (zi - 1)
         * );*/


        if ((xi + 1 < tamX) && ((mundo[zi][xi + 1] < limiteCalor)))
        {
            //print(message: "x+1 -> " + (xi+1) + "," + zi);
            if (!jaFoi(xi + 1, zi))
            {
                Coordenada nova1 = new Coordenada(xi + 1, zi);
                nova1.setPai(p);
                retorno.Add(nova1);
            }
        }
        if ((zi + 1 < tamX) && (mundo[zi + 1][xi] < limiteCalor))
        {
            //print(message: "Z+1 -> " + xi + "," + (zi + 1));
            if (!jaFoi(xi, zi + 1))
            {
                Coordenada nova2 = new Coordenada(xi, zi + 1);
                nova2.setPai(p);
                retorno.Add(nova2);
            }
        }
        if ((zi - 1 > -1) && (mundo[zi - 1][xi] < limiteCalor))
        {
            //print(message: "Z-1 -> " + xi + "," + (zi - 1));
            if (!jaFoi(xi, zi - 1))
            {
                //print(message: "Z-1 -> " + xi + "," + (zi - 1));
                Coordenada nova3 = new Coordenada(xi, zi - 1);
                nova3.setPai(p);
                retorno.Add(nova3);
            }
        }
        if ((xi - 1 > -1) && (mundo[zi][xi - 1] < limiteCalor))
        {
            //print(message: "X-1 -> " + (xi-1) + "," + zi);
            if (!jaFoi(xi - 1, zi))
            {
                //print(message: "X-1 -> " + (xi - 1) + "," + zi);
                Coordenada nova4 = new Coordenada(xi - 1, zi);
                nova4.setPai(p);
                retorno.Add(nova4);
            }
        }



        return(retorno);
    }
        private bool VerificarCoordenada(Coordenada coordenada, string prefixo)
        {
            CoordenadaMsg msg = new CoordenadaMsg(prefixo);

            if (coordenada.LocalColeta.GetValueOrDefault() <= 0)
            {
                Validacao.Add(msg.LocalColetaObrigatorio);
            }

            if (coordenada.FormaColeta.GetValueOrDefault() <= 0)
            {
                Validacao.Add(msg.FormaColetaObrigatorio);
            }

            CoordenadaBus.Validar(coordenada, prefixo, true);

            if (!Validacao.EhValido)
            {
                return(false);
            }

            if (_da.PontoForaMBR(coordenada.EastingUtm.GetValueOrDefault(), coordenada.NorthingUtm.GetValueOrDefault()))
            {
                Validacao.Add(Mensagem.Sistema.CoordenadaForaMBR);
                return(false);
            }

            return(Validacao.EhValido);
        }
예제 #30
0
        /// <summary>
        /// Método que evalúa si una línea de comando "QUERY" es válido para la clase.
        /// </summary>
        /// <param name="lineaComando">Línea de comando a evaluar.</param>
        /// <returns>Valor que indica si es válido o no.</returns>
        private bool LineaComandoValido(string lineaComando)
        {
            bool esValido = false;

            this.bloqueInicio = new Coordenada();
            this.bloqueFin    = new Coordenada();

            if (Regex.IsMatch(lineaComando, regexQuery))
            {
                string[] comandoQuery = lineaComando.Split(' ');
                int[]    coordenadas  = comandoQuery.Skip(1).Select(c => int.Parse(c)).ToArray();

                if (coordenadas.All(c => Topes.MagnitudMinima <= c && c <= Topes.MagnitudMaxima))
                {
                    if (coordenadas[0] <= coordenadas[3] && coordenadas[1] <= coordenadas[4] && coordenadas[2] <= coordenadas[5])
                    {
                        this.bloqueInicio = new Coordenada(coordenadas[0], coordenadas[1], coordenadas[2]);
                        this.bloqueFin    = new Coordenada(coordenadas[3], coordenadas[4], coordenadas[5]);
                        esValido          = true;
                    }
                }
            }

            return(esValido);
        }