public async Task <IActionResult> CreateMerchant(CreateMerchantViewModel viewModel, CancellationToken cancellationToken) { // Validate the model if (this.ValidateModel(viewModel)) { try { String accessToken = await this.HttpContext.GetTokenAsync("access_token"); CreateMerchantModel createMerchantModel = this.ViewModelFactory.ConvertFrom(viewModel); // All good with model, call the client to create the merchant CreateMerchantResponseModel createMerchantResponse = await this.ApiClient.CreateMerchant(accessToken, this.User.Identity as ClaimsIdentity, createMerchantModel, cancellationToken); // TODO: Investigate some kind of spinner... await Task.Delay(TimeSpan.FromSeconds(30)); // Merchant Created, redirect to the Merchant List screen return(this.RedirectToAction("GetMerchant", "Merchant", new { merchantId = createMerchantResponse.MerchantId })); } catch (Exception e) { // Something went wrong creating the contract return(this.View("CreateMerchant").WithWarning("New Merchant", Helpers.BuildUserErrorMessage("Error creating the merchant"))); } } // If we got this far, something failed, redisplay form return(this.View("CreateMerchant", viewModel)); }
/// <summary> /// Converts from. /// </summary> /// <param name="createMerchantViewModel">The create merchant view model.</param> /// <returns></returns> /// <exception cref="ArgumentNullException">createMerchantViewModel</exception> public CreateMerchantModel ConvertFrom(CreateMerchantViewModel createMerchantViewModel) { if (createMerchantViewModel == null) { throw new ArgumentNullException(nameof(createMerchantViewModel)); } CreateMerchantModel createMerchantModel = new CreateMerchantModel { Address = new AddressModel { AddressLine1 = createMerchantViewModel.AddressLine1, AddressLine2 = createMerchantViewModel.AddressLine2, AddressLine3 = createMerchantViewModel.AddressLine3, AddressLine4 = createMerchantViewModel.AddressLine4, Country = createMerchantViewModel.Country, PostalCode = createMerchantViewModel.PostalCode, Region = createMerchantViewModel.Region, Town = createMerchantViewModel.Town, }, Contact = new ContactModel { ContactPhoneNumber = createMerchantViewModel.ContactPhoneNumber, ContactName = createMerchantViewModel.ContactName, ContactEmailAddress = createMerchantViewModel.ContactEmailAddress }, MerchantName = createMerchantViewModel.MerchantName, SettlementSchedule = createMerchantViewModel.SettlementSchedule switch { 0 => SettlementSchedule.Immediate, 1 => SettlementSchedule.Weekly, 2 => SettlementSchedule.Monthly } }; return(createMerchantModel); }
public async Task <IActionResult> CreateMerchant(CancellationToken cancellationToken) { CreateMerchantViewModel viewModel = new CreateMerchantViewModel(); return(this.View("CreateMerchant", viewModel)); }
/// <summary> /// Validates the model. /// </summary> /// <param name="viewModel">The view model.</param> /// <returns></returns> private Boolean ValidateModel(CreateMerchantViewModel viewModel) { return(this.ModelState.IsValid); }