public static SuspectedClientInfo CreateOfflineSystemPaymentVerification(string currency, decimal amount,
                                                                                 long identifier, string firstName, string secondName)
        {
            if (null == currency)
            {
                throw new ArgumentNullException(nameof(currency));
            }

            if (null == firstName)
            {
                throw new ArgumentNullException(nameof(firstName));
            }

            if (null == secondName)
            {
                throw new ArgumentNullException(nameof(secondName));
            }

            var suspectedClientInfo =
                new SuspectedClientInfo(ExchangeType.OfflineSystem, currency, amount, identifier)
            {
                FirstName  = firstName,
                SecondName = secondName
            };

            return(suspectedClientInfo);
        }
        public static SuspectedClientInfo CreateMobilePaymentVerification(string currency, decimal amount,
                                                                          long identifier, string phone)
        {
            if (null == currency)
            {
                throw new ArgumentNullException(nameof(currency));
            }

            if (null == phone)
            {
                throw new ArgumentNullException(nameof(phone));
            }

            var suspectedClientInfo =
                new SuspectedClientInfo(ExchangeType.Mobile, currency, amount, identifier)
            {
                Phone = phone
            };

            return(suspectedClientInfo);
        }
        public static SuspectedClientInfo CreateBlockchainPaymentVerification(string currency, decimal amount,
                                                                              long identifier, CryptoCurrency cryptoCurrency, string cryptoCurrencyAddress)
        {
            if (null == currency)
            {
                throw new ArgumentNullException(nameof(currency));
            }

            if (null == cryptoCurrencyAddress)
            {
                throw new ArgumentNullException(nameof(cryptoCurrencyAddress));
            }

            var suspectedClientInfo =
                new SuspectedClientInfo(ExchangeType.Blockchain, currency, amount, identifier)
            {
                CryptoCurrency        = cryptoCurrency,
                CryptoCurrencyAddress = cryptoCurrencyAddress
            };

            return(suspectedClientInfo);
        }
        public static SuspectedClientInfo CreateInternetSystemPaymentVerification(string currency, decimal amount,
                                                                                  long identifier, PaymentSystem paymentSystem, string paymentSystemClientId)
        {
            if (null == currency)
            {
                throw new ArgumentNullException(nameof(currency));
            }

            if (null == paymentSystemClientId)
            {
                throw new ArgumentNullException(nameof(paymentSystemClientId));
            }

            var suspectedClientInfo =
                new SuspectedClientInfo(ExchangeType.InternetSystem, currency, amount, identifier)
            {
                PaymentSystem         = paymentSystem,
                PaymentSystemClientId = paymentSystemClientId
            };

            return(suspectedClientInfo);
        }
        public static SuspectedClientInfo CreateBankCardPaymentVerification(string currency, decimal amount,
                                                                            long identifier, string firstName, string secondName, string bankName, string cardNumber)
        {
            if (null == currency)
            {
                throw new ArgumentNullException(nameof(currency));
            }

            if (null == firstName)
            {
                throw new ArgumentNullException(nameof(firstName));
            }

            if (null == secondName)
            {
                throw new ArgumentNullException(nameof(secondName));
            }

            if (null == bankName)
            {
                throw new ArgumentNullException(nameof(bankName));
            }

            if (null == cardNumber)
            {
                throw new ArgumentNullException(nameof(cardNumber));
            }

            var suspectedClientInfo =
                new SuspectedClientInfo(ExchangeType.Bankcard, currency, amount, identifier)
            {
                FirstName  = firstName,
                SecondName = secondName,
                BankName   = bankName,
                CardNumber = cardNumber
            };

            return(suspectedClientInfo);
        }