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}"); } }
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) }); }
public InternalCall(ICallLine call) { _call = call; }
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);