public bool UpdateCall(string callReference, Call call)
        {
            Check.If(call).IsNotNull();
            Check.If(callReference).IsNotNullOrEmpty();

            return _callRepository.UpdateCall(callReference, call);
        }
        public bool CreateCall(Call call, bool isInbound)
        {
            Check.If(call).IsNotNull();
            if (call.IsInvalid())
                return false;

            call.IsInbound = isInbound;

            call.GenerateReference(_referenceGenerator);

            return _callRepository.CreateCall(call);
        }
        public bool CreateCall(Call call)
        {
            using (var context = new CommunicationsContext(_databaseSettings.ConnectionString))
            {

                //ensure phone numbers are valid
                if (!call.To.IsValidPhoneNumber() || !call.From.IsValidPhoneNumber())
                    return false;

                //create phone numbers for to or from (this wont create duplicates)
                _phoneNumberService.CreatePhoneNumber(call.To);
                _phoneNumberService.CreatePhoneNumber(call.From);

                //use newly created (or existing) Phone Number objects in the context for to and from
                call.From =
                    context.PhoneNumbers.FirstOrDefault(x => x.Number == call.From.Number);
                call.To =
                    context.PhoneNumbers.FirstOrDefault(x => x.Number == call.To.Number);

                context.Calls.Add(call);

                return context.SaveChanges() > 0;
            }
        }
        public bool UpdateCall(string callReference, Call call)
        {
            using (var context = new CommunicationsContext(_databaseSettings.ConnectionString))
            {
                var currentCall = context.Calls.FirstOrDefault(x => x.CallReference == callReference);

                if (currentCall == null) return false;

                _callMapper.Map(call, currentCall);

                return context.SaveChanges() > 0;
            }
        }