public void fillRowsAndDataField(ref int index, ref int incomingCallsAmount, ref int outcomingCallsAmount,
                                         ref TimeSpan allCallsDuration, ref TimeSpan incomingDuration, ref TimeSpan outcomingDuration,
                                         ref int amountUnansweredCalls, CallRecord cr)
        {
            index++;
            DataRow currentRow;

            currentRow     = dt.NewRow();
            currentRow[0]  = index;
            currentRow[1]  = cr.StationNumber;
            currentRow[2]  = cr.CO;
            currentRow[3]  = cr.Duration;
            currentRow[4]  = cr.Start.ToString(new CultureInfo("he-IL"));
            currentRow[5]  = cr.CallType.ToString();
            currentRow[6]  = cr.Dialed;
            currentRow[7]  = cr.Cost;
            currentRow[8]  = cr.AccountCode;
            currentRow[9]  = cr.DisconnectCause.ToString();
            currentRow[10] = GetGroupName(cr);
            dt.Rows.Add(currentRow);

            if (currentRow[5].Equals("Incoming"))
            {
                incomingCallsAmount++;
                incomingDuration = incomingDuration.Add(cr.Duration);
            }

            if (currentRow[5].Equals("Transferd"))
            {
                incomingCallsAmount++;
                incomingDuration = incomingDuration.Add(cr.Duration);
            }

            if (currentRow[5].Equals("Hold"))
            {
                incomingCallsAmount++;
                incomingDuration = incomingDuration.Add(cr.Duration);
            }

            if (currentRow[5].Equals("Unknown"))
            {
                incomingCallsAmount++;
                incomingDuration = incomingDuration.Add(cr.Duration);
            }


            if (currentRow[5].Equals("Ring") || currentRow[5].Equals("Group"))
            {
                amountUnansweredCalls++;
            }

            if (currentRow[5].Equals("Outgoing"))
            {
                outcomingCallsAmount++;
                outcomingDuration = outcomingDuration.Add(cr.Duration);
            }

            allCallsDuration = allCallsDuration.Add(cr.Duration);
        }
Esempio n. 2
0
        public static CallRecord Parse(string line)
        {
            CallRecord record = new CallRecord();

            record.StationNumber = int.Parse(line.Substring(0, 5));
            record.CO            = line.Substring(6, 3).Trim();
            record.Duration      = TimeSpan.Parse(line.Substring(10, 8));
            record.Start         = DateTime.Parse(line.Substring(19, 14));
            record.CallType      = ParseCallType(line.Substring(34, 1));
            record.Dialed        = line.Substring(35, 20).Trim();
            string costSubstring = line.Substring(56, 23);

            record.Cost            = string.IsNullOrWhiteSpace(costSubstring) ? 0 : decimal.Parse(costSubstring);
            record.AccountCode     = line.Substring(80, 20).Trim();
            record.DisconnectCause = ParseDisconnectCause(line.Substring(101, 2), record.CallType);

            return(record);
        }
        private string GetGroupName(CallRecord cr)
        {
            //  if (cr.CallType != CallType.Group) return string.Empty;

            string groupName = GetGroupNameByField(cr.Dialed);

            if (groupName != null)
            {
                return(groupName);
            }

            groupName = GetGroupNameByField(cr.AccountCode);
            if (groupName != null)
            {
                return(groupName);
            }

            return(string.Empty);
        }
Esempio n. 4
0
        private void ReadingThread()
        {
            using (TcpClient tcpClient = new TcpClient())
            {
                string host = ConfigurationManager.AppSettings["TelnetHost"];
                int    port = int.Parse(ConfigurationManager.AppSettings["TelnetPort"]);
                tcpClient.Connect(host, port);

                using (TextReader tr = new StreamReader(tcpClient.GetStream()))
                {
                    while (true)
                    {
                        try
                        {
                            string line = tr.ReadLine();
                            if (!string.IsNullOrWhiteSpace(line))
                            {
                                int num;
                                if (!int.TryParse(line.Substring(0, 1), out num))
                                {
                                    continue;
                                }

                                CallRecord record = SlkCdrParser.Parse(line);

                                using (MainModel model = new MainModel())
                                {
                                    model.CallRecords.Add(record);

                                    model.SaveChanges();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        public static IEnumerable <CallRecord> Parse(FileInfo slkFile)
        {
            List <CallRecord> callRecords = new List <CallRecord>();

            using (TextReader reader = slkFile.OpenText())
            {
                string     line;
                CallRecord record = new CallRecord();
                while ((line = reader.ReadLine()) != null)
                {
                    string[] arr = line.Split(';');
                    if (arr[0] != "C")
                    {
                        continue;
                    }

                    if (arr[2] == "Y1")
                    {
                        continue;
                    }

                    string content = arr[3].Substring(2, arr[3].Length - 3);
                    switch (arr[1])
                    {
                    case "X1":
                        record.StationNumber = int.Parse(content);
                        break;

                    case "X2":
                        record.CO = content.Trim();
                        break;

                    case "X3":
                        record.Duration = TimeSpan.Parse(content);
                        break;

                    case "X4":
                        record.Start = DateTime.Parse(content);
                        break;

                    case "X5":
                        record.CallType = ParseCallType(content);
                        break;

                    case "X6":
                        record.Dialed = content.Trim();
                        break;

                    case "X7":
                        record.Cost = string.IsNullOrWhiteSpace(content) ? 0 : decimal.Parse(content);
                        break;

                    case "X8":
                        record.AccountCode = content.Trim();
                        break;

                    case "X9":
                        record.DisconnectCause = ParseDisconnectCause(content, record.CallType);
                        callRecords.Add(record);
                        record = new CallRecord();
                        break;
                    }
                }
            }

            return(callRecords);
        }