public PardakhtVasetClient(PardakhtVasetClientOptions options, IDbInitializer dbInitializer, IPaymentLinkRepository paymentLinkRepository, IPayRequestFactory payRequestFactory)
        {
            Options               = options ?? throw new ArgumentNullException(nameof(options));
            DbInitializer         = dbInitializer ?? throw new ArgumentNullException(nameof(dbInitializer));
            PaymentLinkRepository = paymentLinkRepository ?? throw new ArgumentNullException(nameof(paymentLinkRepository));
            PayRequestFactory     = payRequestFactory ?? throw new ArgumentNullException(nameof(payRequestFactory));

            PaymentLinkNotificationService = new PaymentLinkNotificationService(options, paymentLinkRepository, payRequestFactory.CreateV2());
        }
 public SqlPaymentLinkRepository(PardakhtVasetClientOptions options)
 {
     Options = options;
 }
 public PardakhtVasetClient(PardakhtVasetClientOptions options) :
     this(options, options == null ? throw new ArgumentNullException(nameof(options)) : new SqlServerDbInitializer(options.ConnectionString),
          options == null ? throw new ArgumentNullException(nameof(options)) : new SqlPaymentLinkRepository(options), new PayRequestFactory())
 {
 }
 public PaymentLinkNotificationService(PardakhtVasetClientOptions options, IPaymentLinkRepository paymentLinkRepository, PardakhtVasetServices.IPayRequestV2 payRequestService)
 {
     Options = options ?? throw new ArgumentNullException(nameof(options));
     PaymentLinkRepository = paymentLinkRepository ?? throw new ArgumentNullException(nameof(paymentLinkRepository));
     PayRequestService     = payRequestService ?? throw new ArgumentNullException(nameof(payRequestService));
 }