btcpayserver/BTCPayServer/Models/StoreViewModels/StoreViewModel.cs

96 lines
2.7 KiB
C#
Raw Normal View History

2017-10-20 14:06:37 -05:00
using BTCPayServer.Services.Invoices;
2017-09-13 23:50:36 +09:00
using BTCPayServer.Validations;
2017-12-06 18:08:21 +09:00
using Microsoft.AspNetCore.Mvc.Rendering;
2017-09-13 23:50:36 +09:00
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace BTCPayServer.Models.StoreViewModels
{
public class StoreViewModel
{
public class DerivationScheme
2017-12-06 18:08:21 +09:00
{
public string Crypto { get; set; }
2017-12-06 18:08:21 +09:00
public string Value { get; set; }
}
2018-01-09 11:41:07 +09:00
class Format
{
public string Name { get; set; }
public string Value { get; set; }
}
2017-12-06 18:08:21 +09:00
public StoreViewModel()
{
2018-01-09 11:41:07 +09:00
2017-12-06 18:08:21 +09:00
}
public string Id { get; set; }
[Display(Name = "Store Name")]
[Required]
[MaxLength(50)]
[MinLength(1)]
public string StoreName
{
get; set;
}
2017-09-13 23:50:36 +09:00
[Url]
[Display(Name = "Store Website")]
[MaxLength(500)]
public string StoreWebsite
{
get;
set;
}
2017-09-13 23:50:36 +09:00
public List<StoreViewModel.DerivationScheme> DerivationSchemes { get; set; } = new List<StoreViewModel.DerivationScheme>();
2017-12-06 18:08:21 +09:00
2018-01-17 15:11:05 +09:00
[Display(Name = "Invoice expires if the full amount has not been paid after ... minutes")]
[Range(1, 60 * 24 * 31)]
public int InvoiceExpiration
{
get;
set;
}
[Display(Name = "Payment invalid if transactions fails to confirm ... minutes after invoice expiration")]
[Range(10, 60 * 24 * 31)]
public int MonitoringExpiration
{
get;
set;
}
[Display(Name = "Consider the invoice confirmed when the payment transaction...")]
public SpeedPolicy SpeedPolicy
{
get; set;
}
2017-09-13 23:50:36 +09:00
[Display(Name = "Add network fee to invoice (vary with mining fees)")]
public bool NetworkFee
{
get; set;
}
public string StatusMessage
{
get; set;
}
2018-01-09 11:41:07 +09:00
public SelectList CryptoCurrencies { get; set; }
[Display(Name = "Default crypto currency on checkout")]
public string DefaultCryptoCurrency { get; set; }
public void SetCryptoCurrencies(ExplorerClientProvider explorerProvider, string defaultCrypto)
{
var choices = explorerProvider.GetAll().Select(o => new Format() { Name = o.Item1.CryptoCode, Value = o.Item1.CryptoCode }).ToArray();
var chosen = choices.FirstOrDefault(f => f.Name == defaultCrypto) ?? choices.FirstOrDefault();
CryptoCurrencies = new SelectList(choices, nameof(chosen.Value), nameof(chosen.Name), chosen);
DefaultCryptoCurrency = chosen.Name;
}
}
2017-09-13 23:50:36 +09:00
}