public JsonResult CriarUsuario(PocoUsuario poco)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                if (poco.ValidaEmail && poco.ValidaSenha)
                {
                    Usuario usuario = new Usuario();
                    usuario.Poco = poco;
                    var retorno = usuario.Autenticar(true);
                    resposta.Retorno  = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString();
                    resposta.Mensagem = usuario.Mensagem;
                    resposta.Id       = usuario.Id;
                }
                else
                {
                    throw new Exception(ErroRequisicaoNegada);
                }
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Criar usuário : " + e.Message;
                //se acontecer um erro, vou remover o controle de acesso para liberar uma proxima tentativa
                System.Web.HttpRuntime.Cache.Remove("CriarUsuario-" + Request.UserHostAddress);
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }
        public JsonResult CriarLocal(PocoLocal poco)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                if (poco.ValidaNome)
                {
                    Local local = new Local();
                    local.Poco = poco;
                    var retorno = local.Adicionar();
                    resposta.Retorno  = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString();
                    resposta.Mensagem = local.Mensagem;
                }
                else
                {
                    throw new Exception(ErroRequisicaoNegada);
                }
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Criar loca : " + e.Message;
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }
        public JsonResult Autenticar(PocoUsuario poco)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                if (poco.ValidaEmail && poco.ValidaSenha)
                {
                    Usuario usuario = new Usuario();
                    usuario.Poco = poco;
                    var retorno = usuario.Autenticar();
                    resposta.Retorno  = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString();
                    resposta.Mensagem = usuario.Mensagem;
                    resposta.Id       = usuario.Id;
                }
                else
                {
                    throw new Exception(ErroRequisicaoNegada);
                }
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Autenticar o usuário : " + e.Message;
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }
        public JsonResult ListaLocais(int IdUsuario)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                UsuarioLocal ub = new UsuarioLocal();
                ub.IdUsuario = IdUsuario;

                resposta.Id    = IdUsuario;
                resposta.Lista = ub.Locais();
                if (resposta.Lista != null)
                {
                    var retorno = resposta.Lista.Count() > 0;
                    resposta.Retorno = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString();
                }
                resposta.Mensagem = ub.Mensagem;
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Lista locais : " + e.Message;
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }
        public JsonResult SairDoLocal(int IdUsuario, int IdLocal)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                try
                {
                    Local local = new Local();
                    local.Poco = new PocoLocal()
                    {
                        Id = IdLocal, IdUsuario = IdUsuario
                    };
                    local.Desocupar(IdUsuario);
                }
                catch { }

                UsuarioLocal ub = new UsuarioLocal()
                {
                    IdLocal = IdLocal, IdUsuario = IdUsuario
                };
                var retorno = ub.Desvincular();
                resposta.Retorno  = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString();
                resposta.Mensagem = ub.Mensagem;
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Sair do local : " + e.Message;
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }
        public JsonResult VerificaSeLocalEstaOcupado(int IdLocal)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                Local local = new Local()
                {
                    Poco = new PocoLocal()
                    {
                        Id = IdLocal
                    }
                };

                var carregado = local.Carregar();

                if (carregado == null)
                {
                    throw new Exception(local.Mensagem);
                }

                var agendavel = carregado.Agendavel == 1;
                var ocupado   = carregado.Status == 1;

                //esta ocupado e é agendavel
                if (ocupado && agendavel)
                {
                    resposta.Retorno = Retornos.ocupado_agendavel.ToString();
                }
                //está livre e é agendavel
                else if (!ocupado && agendavel)
                {
                    resposta.Retorno = Retornos.livre_agendavel.ToString();
                }
                //está ocupado e não é agendavel
                else if (ocupado && !agendavel)
                {
                    resposta.Retorno = Retornos.ocupado_simples.ToString();
                }
                //está livre e não é agendavel
                else if (!ocupado && !agendavel)
                {
                    resposta.Retorno = Retornos.livre_simples.ToString();
                }

                resposta.Mensagem = local.Mensagem;
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Verifica local : " + e.Message;
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }
        public JsonResult RemoverAgendamentos(int IdUsuario, int IdLocal)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                Agendamento agendamento = new Agendamento(IdLocal, IdUsuario);
                var         retorno     = agendamento.Remover();
                resposta.Retorno  = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString();
                resposta.Mensagem = agendamento.Mensagem;
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Remover agendamento : " + e.Message;
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }
        public JsonResult AdicionarNoLocal(string EmailUsuario, int IdLocal)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                UsuarioLocal ub = new UsuarioLocal();
                ub.IdLocal = IdLocal;
                var retorno = ub.Vincular(EmailUsuario);
                resposta.Retorno  = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString();
                resposta.Mensagem = ub.Mensagem;
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Adicionar no local : " + e.Message;
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }
        public JsonResult DesocuparLocal(PocoLocal poco, int IdUsuarioDesocupar)
        {
            ApiResposta resposta = new ApiResposta();

            try
            {
                Local local = new Local();
                local.Poco = poco;
                var retorno = local.Desocupar(IdUsuarioDesocupar);
                resposta.Retorno  = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString();
                resposta.Mensagem = local.Mensagem;
            }
            catch (Exception e)
            {
                resposta.Retorno  = Retornos.falso.ToString();
                resposta.Mensagem = "Desocupar local : " + e.Message;
                Util.LogError(e);
            }

            return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet));
        }