public string AvaliarParceiro(Avaliacao avaliacao, string session_number)
        {
            Dictionary <string, string> retorno = new Dictionary <string, string>();

            retorno.Add("session", session_number);
            var js = new RetornoJSON();

            try
            {
                using (ParadaCertaContexto con = new ParadaCertaContexto())
                {
                    con.Avaliacoes.Add(avaliacao);
                    con.SaveChanges();
                }
                retorno.Add("type", "success");
                return(js.RetornarJson(retorno));
            }
            catch (Exception err)
            {
                retorno.Add("type", "fail");
                retorno.Add("type", err.Message);

                return(js.RetornarJson(retorno));
            }
        }
        public string ValidarCredencial(Credencial credencial, string session_number)
        {
            try
            {
                Dictionary <string, string> retorno = new Dictionary <string, string>();
                retorno.Add("session", session_number);

                using (ParadaCertaContexto con = new ParadaCertaContexto())
                {
                    var verificado = con.Credencial.Where(x => x.Usuario == credencial.Usuario && x.Senha == credencial.Senha).Any();
                    if (verificado)
                    {
                        retorno.Add("type", "success");
                    }
                    else
                    {
                        retorno.Add("type", "fail");
                        retorno.Add("message", "Usuário ou Senha inválidos");
                    }

                    RegistrarLogin(credencial, retorno);
                }
                var js = new RetornoJSON();
                return(js.RetornarJson(retorno));
            }
            catch (Exception err) { return(err.Message); }
        }
        public string CadastroPerceiro(Pessoas pessoa, Credencial credencial, Parceiros parceiro, string session_id)
        {
            Dictionary <string, string> retorno = new Dictionary <string, string>();

            retorno.Add("session", session_id);

            using (ParadaCertaContexto con = new ParadaCertaContexto())
            {
                var validaEmail = con.Pessoa.Where(x => x.Email == pessoa.Email).Any();
                if (!validaEmail)
                {
                    var validaPessoa = con.Credencial.Where(x => x.Usuario == credencial.Usuario).Any();
                    if (!validaPessoa)
                    {
                        con.Credencial.Add(credencial);
                        con.SaveChanges();

                        var id_credencial = con.Credencial.Where(x => x.Usuario == credencial.Usuario).Select(x => x.Id).FirstOrDefault();
                        pessoa.Id_Credencial   = id_credencial;
                        parceiro.Id_Credencial = id_credencial;

                        con.Pessoa.Add(pessoa);
                        con.SaveChanges();

                        parceiro.Id_Pessoa = con.Pessoa.Where(x => x.Id_Credencial == id_credencial).Select(x => x.Id).FirstOrDefault();
                        con.Parceiros.Add(parceiro);
                        con.SaveChanges();


                        retorno.Add("type", "success");
                    }
                    else
                    {
                        retorno.Add("type", "fail");
                        retorno.Add("message", "Nome de usuário indisponível");
                    }
                }
                else
                {
                    retorno.Add("type", "fail");
                    retorno.Add("message", "Email já cadastrado");
                }
            }

            var js = new RetornoJSON();

            return(js.RetornarJson(retorno));
        }
        public string BuscarParceiros(string latitude, string longitude, string session_id)
        {
            Dictionary <string, dynamic> retorno = new Dictionary <string, dynamic>();

            retorno.Add("session", session_id);
            var js = new RetornoJSON();

            try
            {
                using (ParadaCertaContexto con = new ParadaCertaContexto())
                {
                    var str   = new StringBuilder();
                    var lista = (from pa in con.Parceiros
                                 join pe in con.Pessoa on pa.Id_Pessoa equals pe.Id
                                 join a in con.Avaliacoes on pa.Id equals a.Id_Parceiro
                                 where pa.Latitude == latitude && pa.Longitude == longitude
                                 select new
                    {
                        a.Banheiro_Nota,
                        a.Alimentacao_Nota,
                        a.Seguranca_Nota,
                        pe.Nome,
                        pe.Telefone,
                        pa.Latitude,
                        pa.Longitude
                    }).ToList();
                    if (lista != null)
                    {
                        retorno.Add("type", "success");
                        List <object> json = new List <object>();
                        foreach (var item in lista)
                        {
                            Dictionary <string, string>  avaliacoes = new Dictionary <string, string>();
                            Dictionary <string, dynamic> dados      = new Dictionary <string, dynamic>();

                            dados.Add("nome", item.Nome);
                            dados.Add("telefone", item.Telefone);
                            dados.Add("latitude", item.Latitude);
                            dados.Add("longitude", item.Longitude);
                            avaliacoes.Add("banheiro", item.Banheiro_Nota.ToString());
                            avaliacoes.Add("alimentacao", item.Alimentacao_Nota.ToString());
                            avaliacoes.Add("seguranca", item.Seguranca_Nota.ToString());
                            dados.Add("avaliacoes", avaliacoes);

                            json.Add(dados);
                        }

                        retorno.Add("data", json);
                    }
                    else
                    {
                        retorno.Add("type", "fail");
                        retorno.Add("type", "Parceiro Não Localizado");
                    }
                }

                return(JsonConvert.SerializeObject(retorno));
            }
            catch (Exception err)
            {
                retorno.Add("type", "fail");
                retorno.Add("type", err.Message);

                return(JsonConvert.SerializeObject(retorno));
            }
        }