public static Invoice ProcessConfirmedInvoice(Invoice invoice) { if (invoice.entity_type == EntityType.UserBalance) { UserBalanceRepository.FindOrCreate(invoice); } if ( !EntityUtils.IsEntityExists(invoice.entity_id, invoice.entity_type) || invoice.status != InvoiceStatus.Confirmed ) { throw new Exception("Entity entity not exists or has invalid status"); } switch (invoice.entity_type) { case EntityType.UserBalance: var user = invoice.User(); if (user == null) { throw new Exception("Invoice user not exists"); } UserBalanceUtils.Deposit(user, invoice); break; default: FundingBalanceUtils.FundEntity(invoice); break; } invoice.UpdateStatus(InvoiceStatus.Done); return(invoice.Refresh()); }
public static FundingBalance FundEntity( User from, int id, EntityType type, decimal amount, CurrencyType currency ) { if (!EntityUtils.IsEntityExists(id, type) || amount == 0) { return(null); } return(FundingBalanceUtils.FundEntity(from, id, type, amount, currency)); }