예제 #1
0
        public string PostarLocalizacao()
        {
            RespostaHttp resp = new RespostaHttp();

            try
            {
                Guid          VeiculoID = _requestBody.GetValueAs <Guid>("VeiculoId");
                List <string> Tags      = _requestBody.GetValueAs <List <string> >("Tags");

                double lat = _requestBody.GetValueAs <double>("Latitude");
                double lng = _requestBody.GetValueAs <double>("Longitude");

                var  veiculo = _veiculoService.ObterPorId(VeiculoID);
                Rota rota    = _rotaService.ObterPorId(veiculo.RotaAtual);

                resp = LogicaPost(Tags, lat, lng, rota);

                if (resp == null)
                {
                    throw new Exception();
                }
            }
            catch (Exception)
            {
                resp          = new RespostaHttp();
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }
            return(Serialize(resp));
        }
        public string PostarLocalizacao()
        {
            RespostaHttp resp = new RespostaHttp();

            try
            {
                Guid VeiculoID = _requestBody.GetValueAs <Guid>("VeiculoId");
                var  veiculo   = _veiculoService.ObterPorId(VeiculoID);
                Rota rota      = _rotaService.ObterPorId(veiculo.RotaAtual);

                var localizacao = new Localizacao
                {
                    HorarioAmostra = DateTime.UtcNow,
                    Latitude       = _requestBody.GetValueAs <double>("Latitude"),
                    Longitude      = _requestBody.GetValueAs <double>("Longitude"),
                    Rota           = rota
                };

                _localizacaoService.SalvarLocalizacao(localizacao);

                resp.Ok       = true;
                resp.Mensagem = "Localização salva com sucesso.";
            }
            catch (Exception)
            {
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }
            return(Serialize(resp));
        }
예제 #3
0
        public string ObterDetalhesPacote()
        {
            var resp = new RespostaHttp();

            try
            {
                Guid pacoteId = _requestBody.GetValueAs <Guid>("PacoteId");

                var pacote = _pacoteService.ObterPorDestinatario(_user.UsuarioId).Where(x => x.PacoteId == pacoteId).First();

                var addr    = _enderecoService.ObterPorId(pacote.Destino);
                var empresa = _empresaService.ObterPorId(pacote.Remetente);

                var respostaPacote = new RespostaPacote(pacote, empresa.NomeEmpresa, true, _estacaoService, _enderecoService);

                resp.Ok       = true;
                resp.Mensagem = respostaPacote;
            }
            catch (Exception)
            {
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }

            return(Serialize(resp));
        }
        public string AlterarSenha()
        {
            var resp = new RespostaHttp();

            try
            {
                string senhaAntiga = _requestBody.GetValueAs <string>("SenhaAntiga");
                string senhaNova   = _requestBody.GetValueAs <string>("SenhaNova");

                if (_user.VerificarSenha(senhaAntiga))
                {
                    _user.CriarSenha(senhaNova);
                    _usuarioService.SalvarUsuario(_user);

                    resp.Ok       = true;
                    resp.Mensagem = "Senha alterada com sucesso.";
                }
                else
                {
                    resp.Ok       = false;
                    resp.Mensagem = "A senha atual incorreta.";
                }
            }
            catch (Exception)
            {
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }

            return(Serialize(resp));
        }
        public string CadastrarUsuario()
        {
            var resp = new RespostaHttp();

            try
            {
                string nome     = _requestBody.GetValueAs <string>("NomeUsuario");
                string senhaDec = _requestBody.GetValueAs <string>("SenhaUsuario");
                string email    = _requestBody.GetValueAs <string>("EmailUsuario");

                var oldUser = _usuarioService.ObterPorEmail(email);

                if (oldUser == null)
                {
                    var usuario = new Usuario
                    {
                        DataCadastro = DateTime.UtcNow,
                        Email        = email,
                        Nome         = nome,
                    };

                    usuario.CriarSenha(senhaDec);

                    var sucesso = _usuarioService.SalvarUsuario(usuario);

                    if (sucesso)
                    {
                        resp.Ok       = true;
                        resp.Mensagem = usuario.UsuarioId;
                    }
                    else
                    {
                        resp.Ok       = false;
                        resp.Mensagem = "Não foi possível realizar o cadastro do usuário.";
                    }
                }
                else
                {
                    resp.Ok       = false;
                    resp.Mensagem = "Esse email já está vinculado a outra conta.";
                }
            }
            catch (Exception)
            {
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }
            return(Serialize(resp));
        }
        public string DadosDoUsuario()
        {
            var resp = new RespostaHttp();

            try
            {
                resp.Ok       = true;
                resp.Mensagem = _user;
            }
            catch (Exception)
            {
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }

            return(Serialize(resp));
        }
예제 #7
0
        public string PostarPorQuery()
        {
            RespostaHttp resp = new RespostaHttp();

            try
            {
                var query = Request.QueryString;

                if (query.Count != 4)
                {
                    resp.Ok       = false;
                    resp.Mensagem = "O formato da requisição está incorreto. (400)";
                }

                else
                {
                    Guid          VeiculoId = new Guid(query.Get("V"));
                    List <string> Tags      = JsonConvert.DeserializeObject <List <string> >(query.Get("T"));
                    double        lat       = Double.Parse(query.Get("lat"), CultureInfo.InvariantCulture);
                    double        lng       = Double.Parse(query.Get("lng"), CultureInfo.InvariantCulture);


                    var veiculo = _veiculoService.ObterPorId(VeiculoId);
                    var rota    = _rotaService.ObterPorId(veiculo.RotaAtual);

                    resp = LogicaPost(Tags, lat, lng, rota);

                    if (resp == null)
                    {
                        throw new Exception();
                    }
                }
            }
            catch (Exception)
            {
                resp          = new RespostaHttp();
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }
            return(Serialize(resp));
        }
예제 #8
0
        public string RegistrarPacoteEmUsuario()
        {
            RespostaHttp resp = new RespostaHttp();

            try
            {
                Guid pacoteId = _requestBody.GetValueAs <string>("CodigoPacote");

                var pacote = _pacoteService.ObterPorId(pacoteId);

                if (pacote != null)
                {
                    if (pacote.DestinatarioId == Guid.Empty)
                    {
                        pacote.DestinatarioId = _user.UsuarioId;

                        _pacoteService.SalvarPacote(pacote);

                        resp.Ok       = true;
                        resp.Mensagem = "Pacote associado com sucesso. (200)";
                    }
                    else
                    {
                        resp.Ok       = false;
                        resp.Mensagem = "O pacote especificado já está associado a um outro usuário.";
                    }
                }
                else
                {
                    resp.Ok       = false;
                    resp.Mensagem = "O pacote especificado não existe. (404)";
                }
            }
            catch (Exception)
            {
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }

            return(Serialize(resp));
        }
예제 #9
0
        public string ObterPacotesHistorico()
        {
            var resp = new RespostaHttp();

            try
            {
                var pacotes = _pacoteService.ObterPorDestinatario(_user.UsuarioId).Where(x => x.Entregue).ToList();

                var lista = RespostaPacote.ConverterLista(pacotes, _enderecoService, _empresaService, _estacaoService, false);

                resp.Ok       = true;
                resp.Mensagem = lista;
            }
            catch (Exception)
            {
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }

            return(Serialize(resp));
        }
        public string Login()
        {
            var resp = new RespostaHttp();

            try
            {
                string email = _requestBody.GetValueAs <string>("EmailUsuario");
                string senha = _requestBody.GetValueAs <string>("SenhaUsuario");

                var user = _usuarioService.ObterPorEmail(email);

                if (user != null)
                {
                    if (user.VerificarSenha(senha))
                    {
                        resp.Ok       = true;
                        resp.Mensagem = user.UsuarioId;
                    }
                    else
                    {
                        resp.Ok       = false;
                        resp.Mensagem = "Senha incorreta.";
                    }
                }
                else
                {
                    resp.Ok       = false;
                    resp.Mensagem = "Esse email não está cadastrado.";
                }
            }
            catch (Exception)
            {
                resp.Ok       = false;
                resp.Mensagem = "Ocorreu um erro ao processar a requisição. (500)";
            }

            return(Serialize(resp));
        }
예제 #11
0
        private RespostaHttp LogicaPost(List <string> Tags, double latitude, double longitude, Rota rota)
        {
            var resp = new RespostaHttp();

            if (rota.DataFim.CompareTo(rota.DataInicio) > 0)
            {
                resp.Ok       = false;
                resp.Mensagem = "Essa rota já foi finalizada e não aceita novas amostras.";
                return(resp);
            }
            else
            {
                try
                {
                    var leituraPacotes = new List <Pacote>();

                    foreach (var s in Tags)
                    {
                        Pacote p = _pacoteService.ObterPorTag(s);

                        if (p != null)
                        {
                            leituraPacotes.Add(p);
                        }
                    }

                    if (rota.AmostrasLocalizacao.Count == 0)
                    {
                        rota.Pacotes = leituraPacotes;
                        _rotaService.SalvarRota(rota);
                    }

                    else
                    {
                        foreach (var item in rota.Pacotes)
                        {
                            if (!leituraPacotes.Exists(x => x.PacoteId == item.PacoteId))
                            {
                                Ocorrencia o = new Ocorrencia
                                {
                                    Data           = DateTime.UtcNow,
                                    Descricao      = "Pacote não encontrado no veículo",
                                    Pacote         = item.PacoteId,
                                    TipoOCorrencia = TipoOCorrencia.NaoEncontrado,
                                    Finalizado     = false,
                                    Resolvido      = false
                                };

                                _ocorrenciaService.SalvarOcorrencia(o);
                            }
                        }
                    }

                    var localizacao = new Localizacao
                    {
                        HorarioAmostra = DateTime.UtcNow,
                        Latitude       = latitude,
                        Longitude      = longitude,
                        Rota           = rota
                    };

                    _localizacaoService.SalvarLocalizacao(localizacao);

                    var estacaoDestino = _estacaoService.ObterPorId(rota.Destino);
                    var addr           = estacaoDestino.Endereco;

                    double distancia = GeocodingService.Haversine(latitude, longitude, addr.Latitude, addr.Longitude);

                    if (distancia <= 20)
                    {
                        rota.DataFim = DateTime.UtcNow;
                        _rotaService.SalvarRota(rota);

                        resp.Ok       = true;
                        resp.Mensagem = "Localização salva com sucesso, rota finalizada.";

                        return(resp);
                    }
                    else
                    {
                        resp.Ok       = true;
                        resp.Mensagem = "Localização salva com sucesso.";

                        return(resp);
                    }
                }

                catch (Exception)
                {
                    return(null);
                }
            }
        }