예제 #1
0
        public bool ProcessaCdr(string caminho)
        {
            bool   erroMetodo = true;
            string sLine      = "";
            string Clid_novo;
            string Dst_novo;

            string[]     campo;
            string       strDateTime;
            string       ano;
            string       mes;
            string       dia;
            StreamReader objReader = new StreamReader(caminho);
            DataTable    dtEotLocOrigem;
            DataTable    dtEotLocDestino;
            DateTime     DateCdr;

            DETRAF.LOGGER.Logger objLogger = new DETRAF.LOGGER.Logger();
            DETRAF.DAL.CdrDal    objCdrDal = new DETRAF.DAL.CdrDal();

            while (sLine != null)
            {
                sLine = objReader.ReadLine();
                if (!string.IsNullOrEmpty(sLine))
                {
                    campo = sLine.Split(new char[] { ';' });
                    try
                    {
                        Clid    = campo[0];
                        Dst     = campo[1];
                        Billsec = Convert.ToInt32(campo[2]);
                        Data    = campo[3];
                        Hora    = campo[4];

                        /*SentidoLigacao = campo[5];
                         * TipoLigacao = campo[6];
                         * ModalidadeLigacao = campo[7];*/
                    }
                    catch (IndexOutOfRangeException)
                    {
                        throw new InvalidCastException("Arquivo fora do padrão!");
                    }

                    Clid_novo = Clid;
                    Dst_novo  = Dst;

                    dtEotLocOrigem   = ObterEotLocalidade(Clid_novo);
                    EotOrigem        = 0;
                    LocalidadeOrigem = "";
                    foreach (DataRow dr in dtEotLocOrigem.Rows)
                    {
                        EotOrigem        = Convert.ToInt32(dr["eot"].ToString());
                        LocalidadeOrigem = dr["localidade"].ToString();
                    }

                    dtEotLocDestino   = ObterEotLocalidade(Dst_novo);
                    EotDestino        = 0;
                    LocalidadeDestino = "";
                    foreach (DataRow dr in dtEotLocDestino.Rows)
                    {
                        EotDestino        = Convert.ToInt32(dr["eot"].ToString());
                        LocalidadeDestino = dr["localidade"].ToString();
                    }

                    //Verificação de Localidades e Tipo de Ligações (Entrante e Sainte)
                    if (LocalidadeOrigem == "SPO" && LocalidadeDestino == "SPO" && (EotOrigem.ToString() == "829" || EotDestino.ToString() == "829"))
                    {
                        ModalidadeLigacao = "L";
                        if (EotOrigem.ToString() == "829")
                        {
                            Entrante = 0;
                            Sainte   = 1;
                        }
                        else
                        {
                            Entrante = 1;
                            Sainte   = 0;
                        }
                    }
                    else if (LocalidadeDestino == "INTL")
                    {
                        ModalidadeLigacao = "I";
                        if (EotOrigem.ToString() == "829")
                        {
                            Entrante = 0;
                            Sainte   = 1;
                        }
                        else
                        {
                            Entrante = 1;
                            Sainte   = 0;
                        }
                    }
                    else
                    {
                        ModalidadeLigacao = "N";
                        if (EotOrigem.ToString() == "829")
                        {
                            Entrante = 0;
                            Sainte   = 1;
                        }
                        else if (EotDestino.ToString() == "829")
                        {
                            Entrante = 1;
                            Sainte   = 0;
                        }
                        else if (Dst == "02910329")
                        {
                            Entrante = 1;
                            Sainte   = 0;
                        }
                        else
                        {
                            Entrante = 1;
                            Sainte   = 1;
                        }
                    }
                    TipoLigacao = "N";
                    if (Dst_novo.StartsWith("90"))
                    {
                        TipoLigacao = "A";
                    }

                    //strDateTime = "1992-10-10 12:15:12";
                    ano         = Data.Substring(0, 4);
                    mes         = Data.Substring(4, 2);
                    dia         = Data.Substring(6, 2);
                    strDateTime = ano + "-" + mes + "-" + dia + " " + Hora;
                    DateCdr     = DateTime.Parse(strDateTime);

                    objCdrDal.GravarCdr(Clid_novo, EotOrigem, LocalidadeOrigem, Dst_novo, EotDestino, LocalidadeDestino, Billsec, Data, Hora, DateCdr, Entrante, Sainte, TipoLigacao, ModalidadeLigacao);
                }
            }
            objReader.Close();
            objReader.Dispose();
            objLogger = null;
            objCdrDal = null;

            return(erroMetodo);
        }