Beispiel #1
0
        public Ligacao adicionaLigacao([FromBody] Solicitacao solicitacaoJson)
        {
            solicitacao = solicitacaoJson;

            Ligacao ligacao = new Ligacao();

            if (ValidarCaptcha())
            {
                try
                {
                    ligacao.DDD = Parametros.BuscarValor("DDD", _parametros);
                    ligacao.adicionaNumero(solicitacao.numero);
                    ligacao.Fila = BuscarFila(solicitacao.fila);

                    ChamaURLCentralTelefonica(ligacao);
                    RegistraLigacao(ligacao);
                    addLogMessage(1, "Ligação solicitada: " + ligacao.Telefone, "");
                }
                catch (Exception ex)
                {
                    addLogMessage(3, ex.Message, "");
                    //throw ex;
                }
            }
            else
            {
                addLogMessage(1, "ErrorCaptcha: " + ligacao.Telefone, errorMsgCaptcha);
                errorMsgCaptcha = "";
            }

            return(ligacao);
        }
Beispiel #2
0
 public AtendimentoViewModel(Atendimento atendimento, Ligacao ligacao)
 {
     numeroOriginal  = ligacao.NumeroOriginal;
     numeroProtocolo = atendimento.Protocolo;
     atendimentoID   = atendimento.Id;
     CriadoEm        = atendimento.CriadoEm;
 }
        public _LigacaoViewModel(Ligacao ligacao, IEnumerable <Midia> midias, IEnumerable <StatusAtividade> statusAtividades)
        {
            Midias           = new SelectList(midias, "id", "nome");
            StatusAtividades = statusAtividades;
            LigacaoId        = ligacao.Id;
            NumeroTelefone   = ligacao.NumeroOriginal;
            Sentido          = ligacao.Receptiva == null ? "--" : (ligacao.Receptiva.Value ? "Receptivo" : "Ativo");
            Receptiva        = ligacao.Receptiva;
            FilaNome         = "Sem fila atribuída";
            if (ligacao.Receptiva.HasValue)
            {
                Numero = ligacao.Receptiva.Value
                    ? ligacao.NumeroOriginal
                    : (ligacao.Telefone != null ? ligacao.Telefone.ToString() : "--");
            }

            if (string.IsNullOrEmpty(Numero))
            {
                Numero = "Não Informado";
            }

            if (ligacao.Fila != null)
            {
                FilaNome = ligacao.Fila.Nome;
                FilaId   = ligacao.Fila.Id;
            }

            if (ligacao.Atividade != null)
            {
                AtendimentoFinalizado = ligacao.Atividade.FinalizadoEm.HasValue;
                DataPrevisao          = ligacao.Atividade.PrevisaoDeExecucao.HasValue
                    ? ligacao.Atividade.PrevisaoDeExecucao.ToString()
                    : "--";
                DetalheContato = ligacao.Atividade.Descricao;

                if (ligacao.Atividade.Ocorrencia != null)
                {
                    OcorrenciaId = ligacao.Atividade.Ocorrencia.Id;
                }

                if (ligacao.Atividade.Atendimento != null)
                {
                    AtendimentoId = ligacao.Atividade.Atendimento.Id;
                    Protocolo     = ligacao.Atividade.Atendimento.Protocolo;
                    MidiaId       = ligacao.Atividade.Atendimento.MidiasId ?? ligacao.Atividade.MidiasId;
                }

                PessoaFisicaIdTratativa   = ligacao.Atividade.PessoasFisicasId;
                PessoaJuridicaIdTratativa = ligacao.Atividade.PessoasJuridicasId;

                if (ligacao.Atividade.StatusAtividade != null)
                {
                    StatusNome = ligacao.Atividade.StatusAtividade.FinalizaAtividade
                        ? ligacao.Atividade.StatusAtividade.Descricao
                        : null;
                }
            }
        }
Beispiel #4
0
        public void CriarLigacoes(string[] names)
        {
            Ligacao item = new Ligacao();

            foreach (string name in names)
            {
                item.NovaLigacao(name);
            }
        }
Beispiel #5
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            Ligacao ligacao = await db.Ligacoes.FindAsync(id);

            db.Ligacoes.Remove(ligacao);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
 public void ConsultaLigacaoItemSelecionado(Ligacao obj)
 {
     LigacaoAtual     = obj;
     Codigo.Text      = obj.Codigo.ToString();
     DataHora.Text    = obj.DataHora.ToString("HH:mm:ss dd/MM/yyyy");
     Cliente.Text     = obj.Cliente.RazaoSocial;
     Cliente.Tag      = obj.Cliente;
     Observacoes.Text = obj.Observacoes;
     CarregarDados();
 }
Beispiel #7
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,Origem,Destino,Tempo,Plano,ValorMinuto")] Ligacao ligacao)
        {
            if (ModelState.IsValid)
            {
                db.Entry(ligacao).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(ligacao));
        }
Beispiel #8
0
        public async Task <ActionResult> Create([Bind(Include = "Id,Origem,Destino,Tempo,Plano,ValorMinuto")] Ligacao ligacao)
        {
            if (ModelState.IsValid)
            {
                db.Ligacoes.Add(ligacao);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(ligacao));
        }
        public void Salvar()
        {
            using (LigacoesContext context = new LigacoesContext())
            {
                Ligacao instancia = LigacaoAtual == null
                    ? null
                    : context.Ligacoes.FirstOrDefault(c => c.Id.Equals(LigacaoAtual.Id));



                bool isInsert = false;
                if (instancia == null)
                {
                    isInsert  = true;
                    instancia = new Ligacao {
                        Id = Guid.NewGuid()
                    };
                }


                if (UsuarioLogado is Usuario usuario)
                {
                    instancia.Usuario = new Usuario {
                        Id = usuario.Id
                    };
                    context.Usuarios.Attach(instancia.Usuario);
                }
                instancia.Cliente     = Cliente.Tag as Cliente;
                instancia.DataHora    = DateTime.Now;
                instancia.Observacoes = Observacoes.Text;

                if (instancia.Cliente != null)
                {
                    context.Clientes.Attach(instancia.Cliente);
                }

                if (instancia.Usuario != null)
                {
                    context.Usuarios.Attach(instancia.Usuario);
                }

                if (isInsert)
                {
                    context.Ligacoes.Add(instancia);
                }

                context.SaveChanges();
            }


            LimparCampos();
        }
Beispiel #10
0
    // cria uma ligação entre dois atomos (primeiro e segundo) da "Atomos[] lista"
    public static Ligacao criarLigacao(Atomos[] lista, int primeiro, int segundo)
    {
        Ligacao novaLigacao = new Ligacao();

        int mudanca = 0;

        if ((lista[primeiro].eletronsDisponiveis == 0 || lista[segundo].eletronsDisponiveis == 0) ||
            (lista[primeiro].eletronsAtuais >= 8 || lista[segundo].eletronsAtuais >= 8 ||
             lista[primeiro].eletronsAtuais <= 0 || lista[segundo].eletronsAtuais <= 0))
        {
            // erro
            novaLigacao.tipo = TipoLigacao.ERRO;
            return(novaLigacao);
        }
        // ligação tripla
        else if (lista[primeiro].eletronsDisponiveis >= 3 && lista[segundo].eletronsDisponiveis >= 3 &&
                 (lista[primeiro].eletronsAtuais <= 5 && lista[segundo].eletronsAtuais <= 5))
        {
            novaLigacao.tipo = TipoLigacao.TRIPLA;
            mudanca          = 3;
        }
        // ligação dupla
        else if (lista[primeiro].eletronsDisponiveis >= 2 && lista[segundo].eletronsDisponiveis >= 2 &&
                 (lista[primeiro].eletronsAtuais <= 6 && lista[segundo].eletronsAtuais <= 6))
        {
            novaLigacao.tipo = TipoLigacao.DUPLA;
            mudanca          = 2;
        }
        // ligação simples
        else if (lista[primeiro].eletronsDisponiveis >= 1 && lista[segundo].eletronsDisponiveis >= 1 &&
                 (lista[primeiro].eletronsAtuais <= 7 && lista[segundo].eletronsAtuais <= 7))
        {
            novaLigacao.tipo = TipoLigacao.SIMPLES;
            mudanca          = 1;
        }

        // atualiza as informações para a ligação
        lista[primeiro].eletronsAtuais += mudanca;
        lista[segundo].eletronsAtuais  += mudanca;

        lista[primeiro].eletronsDisponiveis -= mudanca;
        lista[segundo].eletronsDisponiveis  -= mudanca;

        // colocq informações em "novaLigação"
        novaLigacao.primeiro = lista[primeiro];
        novaLigacao.segundo  = lista[segundo];

        novaLigacao.primeiro.ligado++;
        novaLigacao.segundo.ligado++;

        return(novaLigacao);
    }
Beispiel #11
0
        // GET: Ligacoes/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ligacao ligacao = await db.Ligacoes.FindAsync(id);

            if (ligacao == null)
            {
                return(HttpNotFound());
            }
            return(View(ligacao));
        }
Beispiel #12
0
        public string Index()
        {
            var     caminho = HttpContext.Request.Path.Split('/');
            var     empresa = caminho[caminho.Length - 1];
            Cliente cliente = OperacaoClientes.ObtemClientes().Find(x => x.Nome.ToUpper() == empresa.ToUpper());

            if (cliente == null)
            {
                return("Cliente não encontrado!");
            }
            var parametros = HttpContext.Request.Params;

            //string stringParametros = string.Join(",", parametros.AllKeys.SelectMany(key => parametros.GetValues(key)));
            //return stringParametros;

            Ligacao ligacao = new Ligacao();

            ligacao.calldate    = parametros["calldate"];
            ligacao.src         = parametros["src"];
            ligacao.dst         = parametros["dst"];
            ligacao.duration    = parametros["duration"];
            ligacao.billsec     = parametros["billsec"];
            ligacao.disposition = parametros["disposition"];
            ligacao.userfield   = parametros["userfield"];
            ligacao.callid      = parametros["callid"];

            string connectionString = String.Format("Server={0};User Id={1};Password={2};Database={3};", cliente.Endereco, "agilus", "awrpu07!@$AFAFAsdfqrasfafJMYJYJ&* $%", cliente.Database);

            using (SqlConnection conexao = new SqlConnection(connectionString)) {
                var comand = new SqlCommand(String.Format(@"INSERT INTO ligacao_telefonica (lit_nome_empresa, lit_data, lit_origem, lit_destino, lit_duracao_total, lit_duracao_conversacao, lit_status, lit_identificador_gravacao, lit_codigo_agilus) 
                                                            VALUES ('VCOM', '{0}', '{1}', '{2}', {3}, {4}, '{5}', '{6}', '{7}')", ligacao.calldate, ligacao.src, ligacao.dst, ligacao.duration, ligacao.billsec,
                                                          ligacao.disposition, ligacao.userfield, ligacao.callid), conexao);

                try
                {
                    conexao.Open();
                    comand.ExecuteNonQuery();
                    return("Ligação registrada com sucesso na empresa " + cliente.Nome);
                }
                catch (Exception e) {
                    var erroEmail = "<p><b>cliente</b>: " + cliente.Nome + "</p><p><b>db</b>: " + cliente.Database + "</p><p><b>Endereço</b>: " + cliente.Endereco +
                                    "</p><p><b>Comando</b>: " + comand.CommandText +
                                    "</p><p><b>Url</b>: " + HttpContext.Request.Url.AbsoluteUri +
                                    "</p><p><b>Mensagem da Exceção</b>: " + e.Message;
                    Email.EnviarEmail("Erro LogVcom", erroEmail);
                    return("Ligação não registrada. Erro: " + e.Message);
                }
            }
        }
Beispiel #13
0
 private DtoLigacao ConvertaParaDto(Ligacao ligacao)
 {
     return(new DtoLigacao
     {
         position = ligacao.position,
         DataHora = ligacao.Data.ToString("dd/MM/yyyy HH:mm:ss"),
         Duracao = ligacao.Duracao.ToString(),
         Numero = ligacao.Tipo == "Recebida"
                ? ligacao.Origem
                : ligacao.Destino,
         Ramal = ligacao.Tipo == "Originada"
               ? ligacao.Origem
               : ligacao.Destino,
         Tipo = ligacao.Tipo,
         UniqueId = ligacao.UniqueId
     });
 }
Beispiel #14
0
        static void Main(string[] args)
        {
            char continua = 's';

            while (continua == 's' || continua == 'S')
            {
                using (EfContext context = new EfContext())
                {
                    Ligacao ligacao1 = new Ligacao {
                        Duracao = GetDuracao("Digite o tempo da primeira ligação: ")
                    };
                    Ligacao ligacao2 = new Ligacao {
                        Duracao = GetDuracao("Digite o tempo da segunda ligação: ")
                    };

                    Fatura fatura = new Fatura()
                    {
                        Ligacoes = new List <Ligacao> {
                            ligacao1, ligacao2
                        }
                    };

                    ligacao1.Fatura = fatura;
                    ligacao2.Fatura = fatura;

                    context.Ligacoes.AddRange(new[] { ligacao1, ligacao2 });
                    context.Faturas.Add(fatura);
                    context.SaveChanges();

                    Console.WriteLine("Primeira ligação registrada com o ID {0}", ligacao1.Id);
                    Console.WriteLine("Segunda ligação registrada com o ID {0}", ligacao2.Id);
                    Console.WriteLine("Fatura registrada com o ID {0}", fatura.Id);

                    Console.WriteLine("Repetir? (S/N) ");
                    continua = Console.ReadKey().KeyChar;
                    Console.WriteLine();
                    Console.WriteLine();
                }
            }
        }
Beispiel #15
0
    public static bool reacao(Atomos[] lista, int tamanho)
    {
        int separador = 0;

        // se existirem dois grupos de elementos
        if (lista[0].nome != lista[tamanho - 1].nome)
        {
            // varre o array e encontra o início do segundo grupo
            for (separador = 0; ; separador++)
            {
                if (!lista[separador].nome.Equals(lista[0].nome))
                {
                    break;
                }
            }
        }
        // separador = inicio do segundo grupo, ou zero se não houver

        int sucessos  = 0;
        int fracassos = 0;

        Ligacao[] listaLigacao = new Ligacao[20];
        Ligacao   novaLigacao  = new Ligacao();

        // se existirem dois grupos
        if (separador != 0)
        {
            int grupo1_atual = 0;
            int grupo2_atual = separador;

            while ((lista[separador - 1].eletronsAtuais != 8 || lista[separador - 1].eletronsAtuais != 2) && (lista[tamanho - 1].eletronsAtuais != 8 || lista[tamanho - 1].eletronsAtuais != 2) && fracassos < 10)
            {
                novaLigacao = criarLigacao(lista, grupo1_atual, grupo2_atual);
                //Debug.Log(novaLigacao.primeiro.eletronsAtuais);
                //Debug.Log(novaLigacao.segundo.eletronsDisponiveis);
                if (novaLigacao.tipo != TipoLigacao.ERRO)
                {
                    listaLigacao[sucessos] = novaLigacao;
                    sucessos++;
                }
                else
                {
                    fracassos++;
                }

                // checa se os indices são maiores que seus limites
                // se sim, retornar ao valor original
                if ((lista[grupo1_atual].eletronsAtuais == 8 || lista[grupo1_atual].eletronsAtuais == 2) ||
                    lista[grupo1_atual].ligado == 2)
                {
                    ++grupo1_atual;
                }
                if (grupo1_atual >= separador)
                {
                    grupo1_atual = 0;
                }

                if ((lista[grupo2_atual].eletronsAtuais == 8 || lista[grupo2_atual].eletronsAtuais == 2) ||
                    lista[grupo1_atual].ligado == 2)
                {
                    ++grupo2_atual;
                }
                if (grupo2_atual >= tamanho)
                {
                    grupo2_atual = separador;
                }
            }
        }

        // dativa

        if (separador != 0 && (!lista[0].nome.Equals("H") && !lista[tamanho - 1].nome.Equals("H")))
        {
            // checa a existência de elementos não ligados
            Atomos[] resto       = new Atomos[10];
            int      indiceResto = 0;
            for (int i = 0; i < tamanho; i++)
            {
                if (lista[i].eletronsAtuais != 8 && lista[i].eletronsAtuais != 2)
                {
                    resto[indiceResto] = lista[i];
                    indiceResto++;
                }
            }

            // dativa com o primeiro recebendo
            if (indiceResto != 0 && ((lista[0].eletroNeg > lista[tamanho - 1].eletroNeg && resto[0].nome == lista[0].nome) ||
                                     (lista[0].nome.Equals("C") && lista[0].eletronsDisponiveis >= 2)))
            {
                int recebeAtual = 0;
                int daAtual     = separador;

                while ((resto[recebeAtual].ligado == 0 || resto[recebeAtual].eletronsAtuais != 8) && lista[daAtual].eletronsDisponiveis >= 2)
                {
                    resto[recebeAtual].eletronsAtuais  += 2;
                    lista[daAtual].eletronsDisponiveis -= 2;

                    resto[recebeAtual].ligado++;
                    lista[daAtual].ligado++;

                    listaLigacao[sucessos].primeiro = resto[recebeAtual];
                    listaLigacao[sucessos].segundo  = lista[daAtual];
                    listaLigacao[sucessos].tipo     = TipoLigacao.DATIVA;

                    sucessos++;

                    // checa se os indices são maiores que seus limites
                    // se sim, retornar ao valor original
                    if (daAtual < tamanho)
                    {
                        daAtual++;
                    }
                    if (daAtual >= tamanho)
                    {
                        daAtual = separador;
                    }

                    if (recebeAtual < indiceResto)
                    {
                        recebeAtual++;
                    }
                    if (recebeAtual >= indiceResto)
                    {
                        recebeAtual = 0;
                    }
                }
            }
            // dativa com o segundo recebendo
            if (indiceResto != 0 && ((lista[0].eletroNeg < lista[tamanho - 1].eletroNeg && resto[0].nome == lista[tamanho - 1].nome) ||
                                     (lista[tamanho - 1].nome.Equals("C") && lista[0].eletronsDisponiveis >= 2)))
            {
                int recebeAtual = 0;
                int daAtual     = 0;
                while ((lista[recebeAtual].ligado == 0 || lista[recebeAtual].eletronsAtuais != 8) && resto[daAtual].eletronsDisponiveis >= 2)
                {
                    resto[daAtual].eletronsAtuais          -= 2;
                    lista[recebeAtual].eletronsDisponiveis += 2;

                    resto[daAtual].ligado++;
                    lista[recebeAtual].ligado++;

                    listaLigacao[sucessos].primeiro = resto[daAtual];
                    listaLigacao[sucessos].segundo  = lista[recebeAtual];
                    listaLigacao[sucessos].tipo     = TipoLigacao.DATIVA;

                    sucessos++;

                    // checa se os indices são maiores que seus limites
                    // se sim, retornar ao valor original
                    if (daAtual < indiceResto)
                    {
                        daAtual++;
                    }
                    if (daAtual >= indiceResto)
                    {
                        daAtual = 0;
                    }

                    if (recebeAtual < separador)
                    {
                        recebeAtual++;
                    }
                    if (recebeAtual >= separador)
                    {
                        recebeAtual = 0;
                    }
                }
            }
        }

        int grupo = -1;

        int[] naoBalanceado = new int[4];
        naoBalanceado[0] = -1;
        naoBalanceado[1] = -1;
        naoBalanceado[2] = -1;
        naoBalanceado[3] = -1;

        // se existe apenas um grupo de elementos
        if (separador == 0)
        {
            for (int i = 0, j = 0; i < tamanho; i++)
            {
                if (lista[i].eletronsDisponiveis > 0 && lista[i].eletronsAtuais != 8)
                {
                    grupo            = 0;
                    naoBalanceado[j] = i;
                    j++;
                }
            }
        }
        // se um grupo já está balanceado, varrer ambos os grupos, encontrando
        // quaisquer elementos não balanceados, e adicionando eles a um array
        else
        {
            int j = 0;
            for (int i = 0; i < separador; i++)
            {
                if (lista[i].eletronsDisponiveis > 0 && lista[i].eletronsAtuais != 8 && lista[i].eletronsAtuais != 2)
                {
                    grupo            = 0;
                    naoBalanceado[j] = i;
                    j++;
                }
            }

            if (grupo == -1)
            {
                j = 0;
                for (int i = separador; i < tamanho; i++)
                {
                    if (lista[i].eletronsDisponiveis > 0 && lista[i].eletronsAtuais != 8 && lista[i].eletronsAtuais != 2)
                    {
                        grupo            = separador;
                        naoBalanceado[j] = i;
                        j++;
                    }
                }
            }
        }

        // criar uma ligação entre os elementos de mesmo tipo se necessário
        if (grupo != -1 && naoBalanceado[0] != -1 && naoBalanceado[1] != -1 &&
            lista[naoBalanceado[0]].ligado == 0 && lista[naoBalanceado[1]].ligado == 0)
        {
            novaLigacao = criarLigacao(lista, grupo + naoBalanceado[0], grupo + naoBalanceado[1]);
            if (novaLigacao.tipo != TipoLigacao.ERRO)
            {
                listaLigacao[sucessos++] = novaLigacao;
            }
        }

        int numeroUm   = separador;
        int numeroDois = tamanho - separador;
        int numeroLig  = sucessos;

        int div;

        for (div = 6; div > 1; div--)
        {
            if (separador % div == 0 && (tamanho - separador) % div == 0 && sucessos % div == 0)
            {
                numeroUm   = numeroUm / div;
                numeroDois = numeroDois / div;
                numeroLig  = numeroLig / div;
                break;
            }
        }

        int numeroDativa = 0;

        for (int i = 0; i < sucessos; i++)
        {
            if (listaLigacao[i].tipo == TipoLigacao.DATIVA)
            {
                numeroDativa++;
            }
        }

        Ligacao[] listaLigacaoFinal = new Ligacao[20];

        int k = 0;

        for (int i = 0; i < numeroLig - numeroDativa; i++)
        {
            listaLigacaoFinal[k] = listaLigacao[i];
            k++;
        }
        for (int i = numeroLig - numeroDativa; i < numeroLig - (numeroDativa / div); i++)
        {
            listaLigacaoFinal[k] = listaLigacao[i];
            k++;
        }

        for (int i = 0; i < tamanho; i++)
        {
            if ((lista[i].eletronsDisponiveis != 0 &&
                 lista[i].eletronsAtuais < 8) ||
                lista[i].ligado == 0)
            {
                return(false);
            }
        }
        return(true);
    }
    public static IList<Ligacao> trataListas(IList<string> ligacoes1, string username, ModuloIAProlog.ModuloIaClient prologService, int numTagsTotal)
    {
        IList<string> ligacoes = new List<string>();
        IList<string> tags = new List<string>();

        foreach (string lig in ligacoes1)
        {

            if (!lig.Equals(""))
            {
                ligacoes.Add(lig);

            }
        }

        IList<User> users = new List<User>();
        IList<string> usernames = new List<string>();

        IList<Ligacao> ligacoesRetornadas = new List<Ligacao>();
        IList<Ligacao> ligacoesDirectas = new List<Ligacao>();

        users.Add(new User(username,0,prologService,numTagsTotal));
        usernames.Add(username);

        int id = 1;

        for(int k=0;k<ligacoes.Count-1;k=k+3)
        {

            if (!usernames.Contains(ligacoes[k + 1]))
            {
                usernames.Add(ligacoes[k + 1]);
                users.Add(new User(ligacoes[k + 1], id, prologService, numTagsTotal));
                id++;
            }

            if (usernames.IndexOf(ligacoes[k]) == 0)
            {
                ligacoesDirectas.Add(new Ligacao(users[0], users[usernames.IndexOf(ligacoes[k + 1])], Convert.ToInt32(ligacoes[k + 2])));
            }
            else
            {
                ligacoesRetornadas.Add(new Ligacao(users[usernames.IndexOf(ligacoes[k])], users[usernames.IndexOf(ligacoes[k + 1])], Convert.ToInt32(ligacoes[k + 2])));
            }

        }

        Ligacao aux;

        //  Depois fazemos sort
        for(int i = 0;i< ligacoesDirectas.Count-1; i++)
        {

            if(ligacoesDirectas[i].Forca < ligacoesDirectas[i+1].Forca){
                aux = ligacoesDirectas[i];
                ligacoesDirectas[i] = ligacoesDirectas[i + 1];
                ligacoesDirectas[i + 1] = aux;
                i = 0;
            }

        }

        Ligacao[] arraytemp = new Ligacao[ligacoesDirectas.Count+ligacoesRetornadas.Count];

        ligacoesDirectas.CopyTo(arraytemp, 0);
        ligacoesRetornadas.CopyTo(arraytemp, ligacoesDirectas.Count);

        ligacoesRetornadas = arraytemp.ToList();

        ligacoesDirectas = new List<Ligacao>();

        foreach (Ligacao lig in ligacoesRetornadas)
        {
            if (lig.User2.Id > lig.User1.Id)
            {
                ligacoesDirectas.Add(lig);
            }
        }

        return ligacoesDirectas;
    }
Beispiel #17
0
        public static string URLCentralTelefonica(IEnumerable <Parametros> _parametros, Ligacao ligacao)
        {
            string url = Parametros.BuscarValor("URL", _parametros);

            url = url.Replace("{RAMAL}", ligacao.Fila.Ramal);
            url = url.Replace("{FONE}", ligacao.Telefone);

            return(url);
        }
Beispiel #18
0
 private void RegistraLigacao(Ligacao ligacao)
 {
     _context.Ligacoes.Add(ligacao);
     _context.SaveChanges();
 }
Beispiel #19
0
 private void ChamaURLCentralTelefonica(Ligacao ligacao)
 {
     new HttpClient().PostAsync(URLHelper.URLCentralTelefonica(_parametros, ligacao), null);
 }
Beispiel #20
0
 public Ligacao getLigacao(int userreg, int user1, int user2)
 {
     if (userreg == user1)
     {
         Ligacao lig = new Ligacao(user1, user2, Rede.Relacao.getTagsByUsers(user1, user2));
         return lig;
     }
     else
     {
         return null;
     }
 }
Beispiel #21
0
        public Consulta()
        {
            InitializeComponent();
            dataGridView1.AutoGenerateColumns   = true;
            dataGridView1.MultiSelect           = false;
            dataGridView1.AllowUserToDeleteRows = false;
            dataGridView1.ReadOnly                    = true;
            dataGridView1.RowHeadersVisible           = false;
            dataGridView1.AllowUserToAddRows          = false;
            dataGridView1.AllowUserToResizeRows       = false;
            dataGridView1.SelectionMode               = DataGridViewSelectionMode.FullRowSelect;
            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
            dataGridView1.CellDoubleClick            += DataGridView1_CellContentDoubleClick;

            if (typeof(T) == typeof(Cliente))
            {
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "Código", Name = "CodCli"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
                {
                    HeaderText = "Razão Social",
                    Name       = "RazaoSocial"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
                {
                    HeaderText = "Nome Fantasia",
                    Name       = "NomeFantasia"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "CNPJ", Name = "Cnpj"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "Telefone", Name = "Telefone"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "E-mail", Name = "Email"
                });
                CreateCells = obj =>
                {
                    Cliente cliente = obj as Cliente;
                    if (cliente == null)
                    {
                        return(null);
                    }

                    return(new object[]
                    {
                        cliente.Codigo, cliente.RazaoSocial, cliente.NomeFantasia,
                        cliente.Cnpj, cliente.Telefone, cliente.Email
                    });
                };
                Carregar = () =>
                {
                    using (LigacoesContext context = new LigacoesContext())
                    {
                        return(context.Clientes.OfType <T>().ToList());
                    }
                };
            }
            else if (typeof(T) == typeof(Usuario))
            {
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "Código", Name = "Codigo"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "Nome", Name = "Nome"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "Login", Name = "Login"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
                {
                    HeaderText = "Tipo de Usuário",
                    Name       = "TipoUsuario"
                });
                CreateCells = obj =>
                {
                    //return usuario == null ? null : new object[] { usuario.Codigo, usuario.Nome, usuario.Login, usuario.Tipo };
                    Usuario usuario = obj as Usuario;
                    if (usuario == null)
                    {
                        return(null);
                    }


                    return(new object[] { usuario.Codigo, usuario.Nome, usuario.Login, usuario.Tipo });
                };

                Carregar = () =>
                {
                    using (LigacoesContext context = new LigacoesContext())
                    {
                        return(context.Usuarios.OfType <T>().ToList());
                    }
                };
            }

            if (typeof(T) == typeof(Ligacao))
            {
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "Código", Name = "Codigo"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
                {
                    HeaderText = "Data e Hora",
                    Name       = "DataHora"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "Cliente", Name = "Cliente"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn {
                    HeaderText = "Usuário", Name = "Usuario"
                });
                dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
                {
                    HeaderText = "Observações",
                    Name       = "Observacoes",
                });
                CreateCells = obj =>
                {
                    Ligacao ligacao = obj as Ligacao;
                    if (ligacao == null)
                    {
                        return(null);
                    }

                    return(new object[]
                    {
                        ligacao.Codigo, ligacao.DataHora, ligacao.Cliente.RazaoSocial,
                        ligacao.Usuario.Nome, ligacao.Observacoes
                    });
                };
                Carregar = () =>
                {
                    using (LigacoesContext context = new LigacoesContext())
                    {
                        return(context.Ligacoes.Include(nameof(Ligacao.Cliente))
                               .Include(nameof(Ligacao.Usuario))
                               .OfType <T>().ToList());
                    }
                };
            }
        }
Beispiel #22
0
        protected void SalvarAtividadeLigacao(AtividadeNewViewModel model, string userId)
        {
            if (model.id == null) // Adicionar
            {
                if (model.statusAtividadeID == null)
                {
                    model.statusAtividadeID = _statusAtividadeServico.ObterStatusAtividadePadraoParaLigacao().Id;
                }

                int?canalId = null;
                var canal   = _canalServico.ObterCanalTelefone();
                if (canal.ValidationResult.IsValid)
                {
                    canalId = canal.Id;
                }

                if (model.atendimentoID == null)
                {
                    var atendimento = _atendimentoServico.AdicionarNovoAtendimento(canalId, userId, null);

                    if (atendimento.ValidationResult.IsValid)
                    {
                        model.atendimentoID = atendimento.Id;
                    }
                }

                var atividade = new Atividade(userId, (int)model.statusAtividadeID, model.atividadeTipoID, model.titulo,
                                              model.pessoaFisicaID, model.pessoaJuridicaID, model.potencialClienteID, model.ocorrenciaID,
                                              model.descricao, model.atendimentoID, model.midiaID, null, null, null, model.previsaoDeExecucao,
                                              canalId, userId)
                {
                    PrevisaoDeExecucao = model.previsaoDeExecucao
                };
                model.ValidationResult = _atividadeServico.Adicionar(atividade);

                if (model.ValidationResult.IsValid)
                {
                    model.id = atividade.Id;
                    var ligacao = new Ligacao(atividade.PessoasFisicasId, atividade.PessoasJuridicasId,
                                              atividade.PotenciaisClientesId, userId, model.Ligacao.sentido, atividade.Id,
                                              model.Ligacao.telefoneID, null, null, null);
                    model.ValidationResult = _ligacaoServico.Adicionar(ligacao);

                    if (model.ValidationResult.IsValid)
                    {
                        if (model.filaID != null)
                        {
                            ColocarAtividadeFila((int)model.filaID, atividade.Id);
                        }
                    }

                    _servicoAtividadeParteEnvolvidaServico.Adicionar(new AtividadeParteEnvolvida(atividade.Id,
                                                                                                 atividade.PessoasFisicasId, atividade.PessoasJuridicasId, null, userId,
                                                                                                 TipoParteEnvolvida.ClienteTratado.Value, null, null));
                }
            }
            else //Atualizar
            {
                var atividade = _atividadeServico.ObterPorId((long)model.id);

                if (atividade != null && atividade.FinalizadoEm == null)
                {
                    if (model.statusAtividadeID != null)
                    {
                        var statusAtividade = _statusAtividadeServico.ObterPorId((long)model.statusAtividadeID);

                        if (statusAtividade != null)
                        {
                            if (statusAtividade.FinalizaAtividade)
                            {
                                atividade.FinalizadoEm        = DateTime.Now;
                                atividade.FinalizadoPorUserId = userId;
                            }
                        }
                        atividade.StatusAtividadeId = (int)model.statusAtividadeID;
                    }

                    atividade.Descricao = model.descricao;

                    if (model.atendimentoID != null)
                    {
                        atividade.AtendimentoId = (long)model.atendimentoID;
                    }

                    _atividadeServico.Atualizar(atividade);
                }

                if (model.dataAgendamento != null)
                {
                    if (model.statusAtividadeID == null)
                    {
                        model.statusAtividadeID =
                            _statusAtividadeServico.ObterStatusAtividadeLigacaoReceptiva().FirstOrDefault().Id;
                    }

                    var novaAtividade = new Atividade()
                    {
                        PessoasFisicasId     = atividade.PessoasFisicasId,
                        PessoasJuridicasId   = atividade.PessoasJuridicasId,
                        PotenciaisClientesId = atividade.PotenciaisClientesId,
                        OcorrenciaId         = atividade.OcorrenciaId,
                        CriadoPorUserId      = userId,
                        ContratoId           = atividade.ContratoId,
                        Descricao            = model.descricao,
                        MidiasId             = atividade.MidiasId,
                        StatusAtividadeId    = _statusAtividadeServico.ObterStatusAtividadePadraoParaLigacao().Id,
                        AtividadeTipoId      = 3,
                        Titulo = atividade.Titulo,
                        //atendimentoID = model.atendimentoID,
                        PrevisaoDeExecucao = model.dataAgendamento
                    };

                    if (model.agendamentoPrivado != null)
                    {
                        if ((bool)model.agendamentoPrivado)
                        {
                            novaAtividade.ResponsavelPorUserId = novaAtividade.CriadoPorUserId;
                        }
                    }

                    model.ValidationResult = _atividadeServico.Adicionar(novaAtividade);

                    if (model.ValidationResult.IsValid)
                    {
                        var ligacao = _ligacaoServico.BuscarPorAtividadeId(atividade.Id);

                        model.id = novaAtividade.Id;
                        var novaligacao = new Ligacao(novaAtividade.PessoasFisicasId, novaAtividade.PessoasJuridicasId,
                                                      novaAtividade.PotenciaisClientesId, userId, "S", novaAtividade.Id, ligacao.TelefoneId,
                                                      ligacao.NumeroOriginal, null, null);
                        model.ValidationResult = _ligacaoServico.Adicionar(novaligacao);

                        if (model.ValidationResult.IsValid)
                        {
                            var filaID = _atividadeFilaServico.ObterUltimoVinculoPraAtividade(atividade.Id);

                            if (filaID != null)
                            {
                                ColocarAtividadeFila(filaID.FilaId, novaAtividade.Id, novaAtividade.ResponsavelPorUserId);
                            }
                        }
                    }
                }
            }
        }
        public ReceptivoViewModel NovaLigacaoReceptiva(string userId, string informacaoUra, string numeroTelefone,
                                                       string codLigacao, string terminal)
        {
            var statusUra = false;
            var ligacao   = new Ligacao();

            if (!string.IsNullOrEmpty(numeroTelefone))
            {
                ligacao   = _servicoLigacao.ObterLigacaoReceptivaUra(numeroTelefone);
                statusUra = true;

                if (ligacao.Id > 0)
                {
                    if (ligacao.Atividade != null)
                    {
                        if (ligacao.Atividade.Id > 0)
                        {
                            if (ligacao.Atividade.Atendimento != null)
                            {
                                if (ligacao.Atividade.Atendimento.Id > 0)
                                {
                                    _servicoLigacao.AtualizarLigacaoGeradorProtocoloUra(userId, ligacao.Id,
                                                                                        ligacao.Atividade.Id, ligacao.Atividade.Atendimento.Id);
                                }
                            }
                        }
                    }
                }
            }

            if (ligacao.Id == 0)
            {
                ligacao = _servicoLigacao.AdicionarLigacaoReceptiva(userId, numeroTelefone, null);
            }



            if (ligacao.ValidationResult.IsValid)
            {
                if (!string.IsNullOrEmpty(ligacao.Documento))
                {
                    informacaoUra = ligacao.Documento;
                }

                var canalTelefoneId      = Convert.ToInt32(CanalEnum.Telefone);
                var listaMidias          = new SelectList(_servicoMidia.ObterPor(null, canalTelefoneId), "id", "nome");
                var listaStatusAtividade =
                    new SelectList(_servicoStatusAtividade.ObterStatusAtividadeLigacaoReceptiva(), "id", "descricao");
                if (ligacao.Atividade == null || ligacao.Atividade.AtendimentoId == null)
                {
                    return(null);
                }

                if (ligacao.Atividade.Atendimento != null)
                {
                    return(new ReceptivoViewModel((long)ligacao.Atividade.AtendimentoId, ligacao.Id,
                                                  ligacao.AtividadeId, informacaoUra, numeroTelefone, ligacao.Atividade.Atendimento.Protocolo,
                                                  null, null, null, null, null, listaMidias, listaStatusAtividade, null, statusUra, false, null));
                }
            }
            else
            {
                var retorno = new ReceptivoViewModel {
                    ValidationResult = ligacao.ValidationResult
                };
                return(retorno);
            }
            return(null);
        }
    //  Username apenas para grafo simples.
    //  Ambos usernames definidos para grafo de amigos em comum

    public Grafo(string username, string username1)
    {
        ModuloIAProlog.ModuloIaClient prologService = new ModuloIAProlog.ModuloIaClient();

        Users    = new List <User>();
        Ligacoes = new List <Ligacao>();
        int numTagsTotal = Graphs4Social_AR.Tag.LoadAllTag().Count;

        //

        if (!username1.Equals(""))
        {
            string pedidosuser  = prologService.redeNivel(2, username);
            string pedidosuser1 = prologService.redeNivel(2, username1);

            char[] separator = new char[3];

            separator[0] = ']';
            separator[1] = ',';
            separator[2] = '[';

            string[] arraytemp = new string[pedidosuser.Length + pedidosuser1.Length];

            IList <string> ligacoes = pedidosuser.Split(separator);

            IList <string> ligacoes1 = pedidosuser1.Split(separator);
            ligacoes.CopyTo(arraytemp, 0);

            ligacoes1.CopyTo(arraytemp, ligacoes.Count);



            ligacoes = new List <string>();

            for (int i = 0; i < arraytemp.Length; i++)
            {
                if (!ligacoes.Contains(arraytemp[i]) && !(arraytemp[i].Equals("") || arraytemp[i] == null))
                {
                    ligacoes.Add(arraytemp[i]);
                }
            }


            //  Carrega o user "dono" do grafo
            Users.Add(new User(username, 0, prologService, numTagsTotal));
            Users[0].Definido = true;
            Users[0].X        = -50;
            Users[0].Y        = -50;
            //  Carrega as ligações do user
            //  IList<string> ligacoes = RedeNivel2(userdono,U)

            Users.Add(new User(username1, 1, prologService, numTagsTotal));
            Users[1].Definido = true;
            Users[1].X        = 50;
            Users[1].Y        = 50;
        }
        else
        {
            //  Carrega as ligações do grafo do username a nível 3
            string pedidoLigacoes = prologService.grafoNivel3(username);

            pedidoLigacoes = pedidoLigacoes.Substring(1, pedidoLigacoes.Length - 2);



            char [] separator = new char [3];

            separator[0] = ']';
            separator[1] = ',';
            separator[2] = '[';

            IList <string> ligacoes = pedidoLigacoes.Split(separator);



            while (true)
            {
                if (!(ligacoes.Count < 2))
                {
                    Ligacoes = Ligacao.trataListas(ligacoes, username, prologService, numTagsTotal);
                    break;
                }

                pedidoLigacoes = prologService.grafoNivel3(username);

                pedidoLigacoes = pedidoLigacoes.Substring(1, pedidoLigacoes.Length - 2);

                ligacoes = pedidoLigacoes.Split(separator);

                prologService.Close();
            }



            foreach (Ligacao lig in Ligacoes)
            {
                if (!Users.Contains(lig.User1))
                {
                    Users.Add(lig.User1);
                }
                if (!Users.Contains(lig.User2))
                {
                    Users.Add(lig.User2);
                }
            }

            //  Carrega o user "dono" do grafo
            Users[0].Definido = true;
            Users[0].X        = 0;
            Users[0].Y        = 0;
        }

        prologService.Close();

        NrNos   = Users.Count;
        NrArcos = Ligacoes.Count;

        int  tentativas = 0;
        bool notDone    = true;
        bool flagBreak  = false;

        int    max   = 8 * NrArcos;
        Random valor = new Random();


        while (notDone)
        {
            for (int k = 0; k < Ligacoes.Count; k++)
            {
                if (!Ligacoes[k].User2.Definido)
                {
                    if (valor.NextDouble() >= 0.5)
                    {
                        Ligacoes[k].User2.X = valor.Next(10, max) * -1;
                    }
                    else
                    {
                        Ligacoes[k].User2.X = valor.Next(10, max);
                    }
                    //
                    if (valor.NextDouble() >= 0.5)
                    {
                        Ligacoes[k].User2.Y = valor.Next(10, max) * -1;
                    }
                    else
                    {
                        Ligacoes[k].User2.Y = valor.Next(10, max);
                    }
                }
                else
                {
                    tentativas = 49;
                }


                for (int j = 0; j < NrArcos; j++)
                {
                    if (!(tentativas >= 50))
                    {
                        if (!(Ligacoes[j].User1.Id == Ligacoes[k].User1.Id && Ligacoes[j].User2.Id == Ligacoes[k].User2.Id))
                        {
                            if (intersecta(Ligacoes[j].User1, Ligacoes[j].User2, Ligacoes[k].User1, Ligacoes[k].User2))
                            {
                                tentativas++;
                                flagBreak = true;
                                break;
                            }
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                if (tentativas >= 50)
                {
                    flagBreak = false;
                    break;
                }
                else if (!flagBreak)
                {
                    Ligacoes[k].User2.Definido = true;
                }
                else
                {
                    flagBreak = false;
                    k--;
                }
            }
            if (!(tentativas >= 50))
            {
                notDone = false;
            }
            else
            {
                tentativas = 0;
                for (int j = 0; j < NrNos; j++)
                {
                    Users[j].Definido = false;
                }
            }
        }
    }
    public static IList <Ligacao> trataListas(IList <string> ligacoes1, string username, ModuloIAProlog.ModuloIaClient prologService, int numTagsTotal)
    {
        IList <string> ligacoes = new List <string>();
        IList <string> tags     = new List <string>();



        foreach (string lig in ligacoes1)
        {
            if (!lig.Equals(""))
            {
                ligacoes.Add(lig);
            }
        }


        IList <User>   users     = new List <User>();
        IList <string> usernames = new List <string>();

        IList <Ligacao> ligacoesRetornadas = new List <Ligacao>();
        IList <Ligacao> ligacoesDirectas   = new List <Ligacao>();

        users.Add(new User(username, 0, prologService, numTagsTotal));
        usernames.Add(username);

        int id = 1;

        for (int k = 0; k < ligacoes.Count - 1; k = k + 3)
        {
            if (!usernames.Contains(ligacoes[k + 1]))
            {
                usernames.Add(ligacoes[k + 1]);
                users.Add(new User(ligacoes[k + 1], id, prologService, numTagsTotal));
                id++;
            }

            if (usernames.IndexOf(ligacoes[k]) == 0)
            {
                ligacoesDirectas.Add(new Ligacao(users[0], users[usernames.IndexOf(ligacoes[k + 1])], Convert.ToInt32(ligacoes[k + 2])));
            }
            else
            {
                ligacoesRetornadas.Add(new Ligacao(users[usernames.IndexOf(ligacoes[k])], users[usernames.IndexOf(ligacoes[k + 1])], Convert.ToInt32(ligacoes[k + 2])));
            }
        }



        Ligacao aux;

        //  Depois fazemos sort
        for (int i = 0; i < ligacoesDirectas.Count - 1; i++)
        {
            if (ligacoesDirectas[i].Forca < ligacoesDirectas[i + 1].Forca)
            {
                aux = ligacoesDirectas[i];
                ligacoesDirectas[i]     = ligacoesDirectas[i + 1];
                ligacoesDirectas[i + 1] = aux;
                i = 0;
            }
        }

        Ligacao[] arraytemp = new Ligacao[ligacoesDirectas.Count + ligacoesRetornadas.Count];


        ligacoesDirectas.CopyTo(arraytemp, 0);
        ligacoesRetornadas.CopyTo(arraytemp, ligacoesDirectas.Count);

        ligacoesRetornadas = arraytemp.ToList();

        ligacoesDirectas = new List <Ligacao>();

        foreach (Ligacao lig in ligacoesRetornadas)
        {
            if (lig.User2.Id > lig.User1.Id)
            {
                ligacoesDirectas.Add(lig);
            }
        }

        return(ligacoesDirectas);
    }
Beispiel #26
0
        public void CriarLigacao(string name)
        {
            Ligacao item = new Ligacao();

            item.NovaLigacao(name);
        }