public async Task <IActionResult> CreatePointOfSaleApp(string storeId, CreatePointOfSaleAppRequest request) { var validationResult = Validate(request); if (validationResult != null) { return(validationResult); } var store = await _storeRepository.FindStore(storeId); if (store == null) { return(this.CreateAPIError(404, "store-not-found", "The store was not found")); } var defaultCurrency = store.GetStoreBlob().DefaultCurrency; var appData = new AppData { StoreDataId = storeId, Name = request.AppName, AppType = AppType.PointOfSale.ToString() }; appData.SetSettings(new PointOfSaleSettings { Title = request.Title, DefaultView = (Services.Apps.PosViewType)request.DefaultView, ShowCustomAmount = request.ShowCustomAmount, ShowDiscount = request.ShowDiscount, EnableTips = request.EnableTips, Currency = request.Currency ?? defaultCurrency, Template = request.Template, ButtonText = request.FixedAmountPayButtonText ?? PointOfSaleSettings.BUTTON_TEXT_DEF, CustomButtonText = request.CustomAmountPayButtonText ?? PointOfSaleSettings.CUSTOM_BUTTON_TEXT_DEF, CustomTipText = request.TipText ?? PointOfSaleSettings.CUSTOM_TIP_TEXT_DEF, CustomCSSLink = request.CustomCSSLink, NotificationUrl = request.NotificationUrl, RedirectUrl = request.RedirectUrl, Description = request.Description, EmbeddedCSS = request.EmbeddedCSS, RedirectAutomatically = request.RedirectAutomatically, RequiresRefundEmail = request.RequiresRefundEmail == true ? RequiresRefundEmail.On : request.RequiresRefundEmail == false ? RequiresRefundEmail.Off : RequiresRefundEmail.InheritFromStore, }); await _appService.UpdateOrCreateApp(appData); return(Ok(ToModel(appData))); }
public virtual async Task <PointOfSaleAppData> CreatePointOfSaleApp(string storeId, CreatePointOfSaleAppRequest request, CancellationToken token = default) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var response = await _httpClient.SendAsync( CreateHttpRequest($"api/v1/stores/{storeId}/apps/pos", bodyPayload : request, method : HttpMethod.Post), token); return(await HandleResponse <PointOfSaleAppData>(response)); }