BuildModel(EditBtcPayServerDataViewModel viewModel, ExternalServiceData mainModel)
        {
            if (viewModel.Action == "unpair")
            {
                viewModel.Seed = null;
            }

            //current External Service data
            var oldData = mainModel.Get <BtcPayServerExternalServiceData>();


            if (oldData.Seed == viewModel.Seed && oldData.Server == viewModel.Server)
            {
                viewModel.LastCheck = oldData.LastCheck;
                viewModel.MonitoredInvoiceStatuses = oldData.MonitoredInvoiceStatuses;
                viewModel.PairedDate = oldData.PairedDate;
            }
            else
            {
                viewModel.PairedDate = DateTime.Now;
            }

            mainModel.Set((BtcPayServerExternalServiceData)viewModel);
            var service = new BtcPayServerService(mainModel);

            if (!ModelState.IsValid)
            {
                var serviceData = service.GetData();
                return(null, new EditBtcPayServerDataViewModel()
                {
                    Seed = serviceData.Seed ?? new Mnemonic(Wordlist.English, WordCount.Twelve).ToString(),
                    Server = serviceData.Server,
                    PairingUrl = await service.GetPairingUrl(mainModel.Name),
                    Paired = await service.CheckAccess()
                });
            }


            if (!await service.CheckAccess())
            {
                viewModel.Seed = viewModel.Seed ?? new Mnemonic(Wordlist.English, WordCount.Twelve).ToString();
                service.SetData(viewModel);
                viewModel.PairingUrl = await service.GetPairingUrl(mainModel.Name);

                viewModel.Paired = false;
                if (!string.IsNullOrEmpty(viewModel.PairingCode))
                {
                    var client = service.ConstructClient();
                    await client.AuthorizeClient(new PairingCode(viewModel.PairingCode));

                    if (!await service.CheckAccess())
                    {
                        ModelState.AddModelError(string.Empty, "Could not pair with pairing code");
                        return(null, viewModel);
                    }
                }

                ModelState.AddModelError(string.Empty, "Cannot proceed until paired");
                return(null, viewModel);
            }

            return(mainModel, null);
        }
Пример #2
0
 public virtual T GetData()
 {
     return(_data.Get <T>());
 }
Пример #3
0
 public T GetData()
 {
     return(_data.Get <T>());
 }