示例#1
0
        private void AddToDb(ICallLine call, bool incoming)
        {
            Log(call);
            PhoneCallLine callLine             = ToPhoneCallLine(call, incoming: incoming);
            bool          lineAlreadyProcessed = _db.Calls.Any(call => callLine.Hash == call.Hash);

            if (!lineAlreadyProcessed)
            {
                _db.Add(callLine);
            }
            else
            {
                _log.Warn($"Ignoring line beacause already processed {call.CallData.OriginalLine}");
            }
        }
示例#2
0
        private PhoneCallLine ToPhoneCallLine(ICallLine call, bool incoming)
        {
            CallData callData = call.CallData;

            return(new PhoneCallLine
            {
                ExternalNumber = call.TargetNumber.Value,
                InternalNumber = callData.InternalNumber.Value,
                Cost = callData.Cost.Value.Value,
                CoCode = callData.CoCode.Value,
                DateTime = callData.DateTime,
                Duration = callData.Duration.Value,
                CdCode = callData.CdCode.Map(code => code.Value).IfNone(() => string.Empty),
                Incoming = incoming,
                Sede = _sede,
                OriginalLine = callData.OriginalLine,
                Hash = GetHash(SHA256.Create(), callData.OriginalLine)
            });
        }
示例#3
0
 public InternalCall(ICallLine call)
 {
     _call = call;
 }
示例#4
0
 public ExternalCall(ICallLine call)
 {
     Call = call;
 }
 public static ICallLine CreateCall(ITargetNumber phoneNumber, ICallLine call) => phoneNumber.Value.Length > 3
     ? (ICallLine) new ExternalCall(call)
     : new InternalCall(call);