예제 #1
0
        public IActionResult CreateCustodianAccount(string storeId)
        {
            var vm = new CreateCustodianAccountViewModel();

            vm.StoreId = storeId;
            vm.SetCustodianRegistry(_custodianRegistry);
            return(View(vm));
        }
예제 #2
0
        public async Task <IActionResult> CreateCustodianAccount(string storeId, CreateCustodianAccountViewModel vm)
        {
            var store = GetCurrentStore();

            vm.StoreId = store.Id;
            vm.SetCustodianRegistry(_custodianRegistry);

            var custodian = _custodianRegistry.GetCustodianByCode(vm.SelectedCustodian);

            if (custodian == null)
            {
                ModelState.AddModelError(nameof(vm.SelectedCustodian), "Invalid Custodian");
                return(View(vm));
            }
            if (string.IsNullOrEmpty(vm.Name))
            {
                vm.Name = custodian.Name;
            }

            var custodianAccountData = new CustodianAccountData {
                CustodianCode = vm.SelectedCustodian, StoreId = vm.StoreId, Name = custodian.Name
            };


            var configData = new JObject();

            foreach (var pair in Request.Form)
            {
                configData.Add(pair.Key, pair.Value.ToString());
            }

            var configForm = await custodian.GetConfigForm(configData, "en-US");

            if (configForm.IsValid())
            {
                // configForm.removeUnusedKeys();
                custodianAccountData.SetBlob(configData);
                custodianAccountData = await _custodianAccountRepository.CreateOrUpdate(custodianAccountData);

                TempData[WellKnownTempData.SuccessMessage] = "Custodian account successfully created";
                CreatedCustodianAccountId = custodianAccountData.Id;

                return(RedirectToAction(nameof(ViewCustodianAccount),
                                        new { storeId = custodianAccountData.StoreId, accountId = custodianAccountData.Id }));
            }

            // Ask for more data
            vm.ConfigForm = configForm;
            return(View(vm));
        }