public async Task <ActionResult> AddPaymentKind([FromBody] PaymentKindDto paymentTerm) { int id = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var logineduser = await _auth.VerifyUser(id); PaymentKind _newTerm = new PaymentKind() { Status = true, Company = logineduser.Company }; _context.PaymentKinds.Add(_newTerm); await _context.SaveChangesAsync(); foreach (var item in paymentTerm.ContentForLang) { PaymentKindLanguage termLang = new PaymentKindLanguage() { PaymentKind = _newTerm, Language = await _context.Languages.FirstOrDefaultAsync(s => s.code == item.Languagename), Name = item.Content }; _context.PaymentKindLanguages.Add(termLang); await _context.SaveChangesAsync(); } return(Ok()); }
protected PaymentMethod(Guid id, string name, PaymentKind kind, User user) { Id = id; Name = name; Kind = kind; IsActive = true; User = user; UserId = user.Id; }
public OkResult EditCategory(Guid id, string pattern, string category, PaymentKind kind) { var categoryObj = _objectRepository.Set <SpentCategoryModel>().First(v => v.Id == id); categoryObj.Pattern = pattern; categoryObj.Category = category; categoryObj.Kind = kind; return(Ok()); }
public SpentCategoryModel(string pattern, string category, PaymentKind kind) { _entity = new SpendCategoryEntity { Id = Guid.NewGuid(), Pattern = pattern, Category = category, Kind = (int)kind }; }
public SpentCategoryModel(string pattern, string category, PaymentKind kind) { Id = Guid.NewGuid(); _entity = new SpendCategoryEntity { Pattern = pattern, Category = category, RowKey = Id.ToString(), PartitionKey = nameof(SpendCategoryEntity), Kind = (int)kind }; }
public static PaymentKind GetOpposite(this PaymentKind kind) { switch (kind) { case PaymentKind.Expense: return(PaymentKind.Income); case PaymentKind.Income: return(PaymentKind.Expense); default: return(kind); } }
public PaymentModel(DateTime when, string what, double amount, PaymentKind kind, string ccy, string statementReference, MoneyColumnMetadataModel column) { _entity = new PaymentEntity { Id = Guid.NewGuid(), When = when, Amount = amount, What = what, Kind = (int)kind, StatementReference = statementReference, ColumnId = column?.Id }; Ccy = ccy; }
public IActionResult EditCategory(Guid id, string pattern, string category, PaymentKind kind) { var categoryObj = _objectRepository.Set <SpentCategoryModel>().First(v => v.Id == id); categoryObj.Pattern = pattern; categoryObj.Category = category; categoryObj.Kind = kind; foreach (var p in categoryObj.Payments) { p.Category = null; } return(RedirectToAction(nameof(SpentCategories))); }
public IActionResult CreateCategory(string pattern, string category, PaymentKind kind) { try { // ReSharper disable once ReturnValueOfPureMethodIsNotUsed Regex.Match("test", pattern); } catch { return(RedirectToAction(nameof(SpentCategories))); } _objectRepository.Add(new SpentCategoryModel(pattern, category, kind)); return(RedirectToAction(nameof(SpentCategories))); }
public OkResult CreateCategory(string pattern, string category, PaymentKind kind) { try { if (!string.IsNullOrWhiteSpace(pattern)) { // ReSharper disable once ReturnValueOfPureMethodIsNotUsed new Regex(pattern, RegexOptions.None, TimeSpan.FromSeconds(0.1)).Match("test"); } } catch { pattern = ""; } _objectRepository.Add(new SpentCategoryModel(pattern, category, kind)); return(Ok()); }
/// <summary> /// 初始化所有的属性,包括引用类型的属性自己的属性 /// </summary> public override void ReInitializeAllProperties() { ReInitializeProperties(); if (PatientCondition != null) { PatientCondition.ReInitializeAllProperties(); } if (Medicare != null) { Medicare.ReInitializeAllProperties(); } if (PaymentKind != null) { PaymentKind.ReInitializeAllProperties(); } if (PatientSource != null) { PatientSource.ReInitializeAllProperties(); } if (PatientKind != null) { PatientKind.ReInitializeAllProperties(); } if (Recorder != null) { Recorder.ReInitializeAllProperties(); } if (PersonalInformation != null) { PersonalInformation.ReInitializeAllProperties(); InitBaseInfo(); } if (InfoOfAdmission != null) { InfoOfAdmission.ReInitializeAllProperties(); } }
private void ValidatePaymentKind(Player player, PaymentKind paymentKind) { switch (paymentKind) { case PaymentKind.Purchase1: case PaymentKind.Purchase2: // TODO: Share logic with controller if (player.PatreonLevel != 0 && player.PatreonEndDate > DateTime.UtcNow) { throw new Exception($"Can't purchase subscription with existing level {player.PatreonLevel}"); } break; case PaymentKind.UpgradeTo2: if (player.PatreonEndDate == null) { throw new Exception("Can't upgrade subscription without existing end date"); } if (player.PatreonEndDate < DateTime.UtcNow) { throw new Exception("Can't upgrade expired subscription"); } if (player.PatreonLevel != 1) { throw new Exception($"Can't upgrade subscription level from {player.PatreonLevel}"); } break; default: throw new Exception($"Unknown payment kind {paymentKind}"); } }
public IActionResult EditPayment(Guid id, double amount, string ccy, string what, PaymentKind kind) { var payment = _objectRepository.Set <PaymentModel>().First(v => v.Id == id); payment.Amount = amount; payment.Ccy = ccy; payment.What = what; payment.Category = null; payment.Kind = kind; return(RedirectToAction(nameof(Index))); }
public async Task <string> CreateWeChatRequest(ulong steamId, ulong payerSteamId, long matchId, PaymentKind paymentKind) { var sourceCreateOptions = await CreateStripeSourceCreateOptions(steamId, payerSteamId, matchId, paymentKind); sourceCreateOptions.Type = "wechat"; var source = await _sourceService.CreateAsync(sourceCreateOptions); // WeChat is in beta, so it's not typed yet var rawResult = JsonDocument.Parse(source.StripeResponse.Content).RootElement; var qrCodeUrl = rawResult.GetProperty("wechat").GetProperty("qr_code_url").GetString(); var uri = QueryHelpers.AddQueryString($"http://{_virtualHost}/payment/wechat", "qr", qrCodeUrl); return(uri); }
protected PaymentModel Statement(DateTime when, string account, string what, double amount, PaymentKind kind, string ccy, string statementReference) { var column = Repository.Set <MoneyColumnMetadataModel>().FirstOrDefault(v => v.Provider == ProviderName && v.AccountName == account); if (column == null) { column = new MoneyColumnMetadataModel(ProviderName, account) { UserFriendlyName = account }; Repository.Add(column); } return(new PaymentModel(when, what, amount, kind, ccy, statementReference, column)); }
public OkResult EditPayment(Guid id, double amount, string ccy, string what, Guid?categoryId, Guid?columnId, Guid?debtId, PaymentKind kind) { var payment = _objectRepository.Set <PaymentModel>().First(v => v.Id == id); payment.Amount = amount; payment.Ccy = ccy; payment.What = what; payment.Category = null; payment.Kind = kind; payment.Category = categoryId == null ? null : _objectRepository.Set <SpentCategoryModel>().Find(categoryId.Value); payment.Column = columnId == null ? null : _objectRepository.Set <MoneyColumnMetadataModel>().Find(columnId.Value); payment.Debt = debtId == null ? null : _objectRepository.Set <DebtModel>().Find(debtId.Value); payment.UserEdited = true; new SpentCategoryProcessor(_objectRepository).Process(); return(Ok()); }
public async Task <string> CreateAlipayRequest(ulong steamId, ulong payerSteamId, long matchId, PaymentKind paymentKind) { var sourceCreateOptions = await CreateStripeSourceCreateOptions(steamId, payerSteamId, matchId, paymentKind); sourceCreateOptions.Type = "alipay"; var source = await _sourceService.CreateAsync(sourceCreateOptions); return(source.Redirect.Url); }
private async Task <SourceCreateOptions> CreateStripeSourceCreateOptions(ulong steamId, ulong payerSteamId, long matchId, PaymentKind paymentKind) { var player = await _context.Players.FindAsync(steamId); if (player == null) { player = new Player { SteamId = steamId }; _context.Players.Add(player); await _context.SaveChangesAsync(); } ValidatePaymentKind(player, paymentKind); // 1 AUD = $conversionRate CNY var conversionRate = 4.54665; // 50 CNY var priceTier1 = (int)Math.Floor(50 / conversionRate * 100); // 200 CNY var priceTier2 = (int)Math.Floor(200 / conversionRate * 100); var patreonDaysLeft = player.PatreonEndDate != null ? (player.PatreonEndDate - DateTime.UtcNow).Value.Days : 0; var amount = paymentKind switch { PaymentKind.Purchase1 => priceTier1, PaymentKind.Purchase2 => priceTier2, PaymentKind.UpgradeTo2 => priceTier2 - (int)Math.Floor(priceTier1 * ((double)patreonDaysLeft / 30)), _ => throw new NotImplementedException(), }; var statementDescriptor = paymentKind switch { PaymentKind.Purchase1 => "Basic Dota 2 Unofficial supporter status", PaymentKind.Purchase2 => "Advanced Dota 2 Unofficial supporter status", PaymentKind.UpgradeTo2 => "Upgrade to advanced supporter tier", _ => throw new NotImplementedException(), }; return(new SourceCreateOptions { Amount = amount, Currency = "aud", StatementDescriptor = statementDescriptor, Redirect = new SourceRedirectOptions { // TODO: Do we really need this? ReturnUrl = $"http://{_virtualHost}/payment/loader" }, Metadata = new Dictionary <string, string> { ["steamId"] = steamId.ToString(), ["payerSteamId"] = payerSteamId.ToString(), ["matchId"] = matchId.ToString(), ["paymentKind"] = paymentKind.ToString(), }, }); }