public JsonResult CreateAccount(string userId, int currencyId) { Customer customer = _customerRepository.GetCustomerByUserId(userId); Balance balance = new Balance { CurrencyId = currencyId, AvialableFunds = 0 }; int balanceId = _balanceRepository.Add(balance); Account account = new Account { AccountNumber = GenerateUniqueNumericString(20), CustomerId = customer.Id, StartDate = DateTime.Now, ExpireDate = DateTime.Now.AddYears(4), LastCheckDate = DateTime.Now, BalanceId = balanceId }; int accountId = _accountRepository.Add(account); if (accountId > 0) { return Json(new { Result = "Success"}); } else { return Json(new { Result = "Error while creating an account." }); } }
public int Add(Balance balance) { Dictionary<string, string> sqlParams = new Dictionary<string,string>(); string query = "Insert into Balance OUTPUT Inserted.Id values (@CurrencyId, @AvialableFunds)"; sqlParams.Add("@CurrencyId", balance.CurrencyId.ToString()); sqlParams.Add("@AvialableFunds", balance.AvialableFunds.ToString()); return _dbWriter.AddRecord(sqlParams, query); }
public CashWithdrawnEvent(Guid id, Balance balance, Amount amount) { Id = id; DateTimeEventOccurred = DateTime.UtcNow; Balance = balance; Amount = amount; }
public GraphInterpreterSpec(ITestOutputHelper output = null) : base(output) { _identity = GraphStages.Identity<int>(); _detach = new Detacher<int>(); _zip = new Zip<int, string>(); _broadcast = new Broadcast<int>(2); _merge = new Merge<int>(2); _balance = new Balance<int>(2); }
/// <summary> /// 删除一个对象 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (m_balance.ID > 0) { m_balance.Destory(); m_balance = new Balance(); SetFromStatus(winStatusEnum.查看); } }
/// <summary> /// 构造函数 /// </summary> /// <param name="status"></param> /// <param name="balance"></param> public DevBalance(winStatusEnum status, Balance balance = null) { InitializeComponent(); if (balance != null) m_balance = balance; else m_balance = new Balance(); SetFromStatus(status); }
public void TestBalanceCRUD() { // 删除无用的测试数据 List<Balance> list = Balance.Query("code = 'testcode'"); foreach (Balance acc in list) { acc.Destory(); } // 新增 Balance a = new Balance(); a.Code = "testcode"; a.Name = "Name"; a.CompanyDetailID = CompanyDetail.Query()[0].ID; a.Money = 1; a.BeginDate = DateTime.Now; a.EndDate = DateTime.Now; for (int i = 0; i < 10; i++) { BalanceDetail d = new BalanceDetail(); d.Money = i; d.PayDate = DateTime.Now; a.DetailList.Add(d); } Assert.IsTrue(a.Save()); Assert.IsTrue(a.ID > 0); // 查询 list = Balance.Query("code = 'testcode'"); Assert.IsTrue(list.Count == 1); Assert.IsTrue(list[0].ID == a.ID); Assert.IsTrue(list[0].DetailList.Count == 10); // 删除 Assert.IsTrue(list[0].Destory()); list = Balance.Query("code = 'testcode'"); Assert.IsTrue(list.Count == 0); }
public JsonResult CreateCreditCard(CardViewModel cardViewModel) { if (!ModelState.IsValid) { cardViewModel.CardTypes = new List<SelectListItem> { new SelectListItem() {Text="Credit", Value="Credit"}, new SelectListItem() {Text="Debit", Value="Debit"} }; return Json(new { Result = "Error. Please, check the input data."}); } int balanceIdForAccount = _accountRepository.GetAccountById(cardViewModel.AccountId).BalanceId; Balance balanceForAccount = _balanceRepository.GetBalanceById(balanceIdForAccount); Balance balance = new Balance { CurrencyId = balanceForAccount.CurrencyId, AvialableFunds = 0 }; int balanceId = _balanceRepository.Add(balance); Card card = new Card { Number = CreateCardNumber(20), Type = cardViewModel.Type, CardholderName = cardViewModel.CardholderName, SecurityNumber = CreateCardNumber(7), BalanceId = balanceId, ExpireDate = DateTime.Now.AddYears(4), AccountId = cardViewModel.AccountId }; _cardRepository.Add(card); return Json(new { Result = "Success"}); }
public ActionResult Purchase(Balance balance) { if (ModelState.IsValid) { var item = db.Products.Where(a => a.CatID == balance.CatID && a.ID == balance.ProductID).ToList(); if (item.Count() == 0) { ModelState.AddModelError("", "კატეგორიას არ შეესაბამება პროდუქტი"); ViewBag.CatID = new SelectList(db.Categories.Where(a => a.Disabled == false), "ID", "Name"); ViewBag.ProductID = new SelectList(db.Products.Where(a => a.Disabled == false), "ID", "Name"); return View(balance); } var result = from a in db.Balances where a.StorageID == balance.StorageID && a.CatID == balance.CatID && a.ProductID == balance.ProductID select a; if (result.ToList().Count() == 0) { db.Balances.Add(balance); } else { Balance b = result.First(); b.Quantity = b.Quantity + balance.Quantity; } db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.CatID = new SelectList(db.Categories.Where(a => a.Disabled == false), "ID", "Name"); ViewBag.ProductID = new SelectList(db.Products.Where(a => a.Disabled == false), "ID", "Name"); return View(balance); }
/// <summary> /// 服务发送模型更改通知 /// </summary> /// <param name="toClient"></param> internal void ServiceModelUpdateNotification(ToClientServiceModelUpdateNotification toClient) { try { switch (toClient.ModelType) { case ModelType.Product: Product product = toClient.Model.DeserializeObject <Product>(); Product oldProduct = Resources.Instance.Products.Where(x => x.ProductId == product.ProductId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.Products.Add(product); break; case OperateType.Edit: Resources.Instance.Products.Remove(oldProduct); Resources.Instance.Products.Add(product); break; case OperateType.Delete: Resources.Instance.Products.Remove(oldProduct); break; } Notification.Instance.ActionProduct(null, product, (int)toClient.OperateType); break; case ModelType.ProductType: ProductType productType = toClient.Model.DeserializeObject <ProductType>(); ProductType oldProductType = Resources.Instance.ProductTypes.Where(x => x.ProductTypeId == productType.ProductTypeId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.ProductTypes.Add(productType); break; case OperateType.Edit: Resources.Instance.ProductTypes.Remove(oldProductType); Resources.Instance.ProductTypes.Add(productType); break; case OperateType.Delete: Resources.Instance.ProductTypes.Remove(oldProductType); break; } Notification.Instance.ActionProductType(null, productType, (int)toClient.OperateType); break; case ModelType.Admin: Admin admin = toClient.Model.DeserializeObject <Admin>(); Admin oldAdmin = Resources.Instance.Admins.Where(x => x.AdminId == admin.AdminId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.Admins.Add(admin); break; case OperateType.Edit: Resources.Instance.Admins.Remove(oldAdmin); Resources.Instance.Admins.Add(admin); if (Resources.Instance.AdminModel.AdminId == admin.AdminId) { Resources.Instance.AdminModel = admin; } break; case OperateType.Delete: Resources.Instance.Admins.Remove(oldAdmin); break; } Notification.Instance.ActionAdmin(null, admin, (int)toClient.OperateType); break; case ModelType.Device: Device device = toClient.Model.DeserializeObject <Device>(); Device oldDevice = Resources.Instance.Devices.Where(x => x.DeviceId == device.DeviceId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.Devices.Add(device); break; case OperateType.Edit: Resources.Instance.Devices.Remove(oldDevice); Resources.Instance.Devices.Add(device); break; case OperateType.Delete: Resources.Instance.Devices.Remove(oldDevice); break; } Notification.Instance.ActionDevice(null, device, (int)toClient.OperateType); break; case ModelType.Printer: Printer printer = toClient.Model.DeserializeObject <Printer>(); Printer oldPrinter = Resources.Instance.Printers.Where(x => x.PrinterId == printer.PrinterId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.Printers.Add(printer); break; case OperateType.Edit: Resources.Instance.Printers.Remove(oldPrinter); Resources.Instance.Printers.Add(printer); break; case OperateType.Delete: Resources.Instance.Printers.Remove(oldPrinter); break; } Notification.Instance.ActionPrinter(null, printer, (int)toClient.OperateType); break; case ModelType.Request: Request request = toClient.Model.DeserializeObject <Request>(); Request oldRequest = Resources.Instance.Requests.Where(x => x.RequestId == request.RequestId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.Requests.Add(request); break; case OperateType.Edit: Resources.Instance.Requests.Remove(oldRequest); Resources.Instance.Requests.Add(request); break; case OperateType.Delete: Resources.Instance.Requests.Remove(oldRequest); break; } Notification.Instance.ActionRequest(null, request, (int)toClient.OperateType); break; case ModelType.Ppr: List <Ppr> pprs = toClient.Model.DeserializeObject <List <Ppr> >(); Product theProduct = toClient.ModelRef.DeserializeObject <Product>(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.Pprs.AddRange(pprs); break; case OperateType.Edit: foreach (var item in Resources.Instance.Pprs.Where(x => x.ProductId == theProduct.ProductId).ToList()) { Resources.Instance.Pprs.Remove(item); } if (pprs.Count > 0) { Resources.Instance.Pprs.AddRange(pprs); } break; case OperateType.Delete: foreach (var item in Resources.Instance.Pprs.Where(x => x.ProductId == theProduct.ProductId).ToList()) { Resources.Instance.Pprs.Remove(item); } break; } Notification.Instance.ActionPprs(null, pprs, theProduct, (int)toClient.OperateType); break; case ModelType.Member: Member member = toClient.Model.DeserializeObject <Member>(); switch (toClient.OperateType) { case OperateType.Add: break; case OperateType.Edit: break; case OperateType.Delete: break; } Notification.Instance.ActionMember(null, member, (int)toClient.OperateType); break; case ModelType.Balance: Balance balance = toClient.Model.DeserializeObject <Balance>(); Balance oldBalance = Resources.Instance.Balances.Where(x => x.BalanceId == balance.BalanceId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.Balances.Add(balance); break; case OperateType.Edit: Resources.Instance.Balances.Remove(oldBalance); Resources.Instance.Balances.Add(balance); break; case OperateType.Delete: Resources.Instance.Balances.Remove(oldBalance); break; } Notification.Instance.ActionBalance(null, balance, (int)toClient.OperateType); break; case ModelType.Room: Room room = toClient.Model.DeserializeObject <Room>(); Room oldRoom = Resources.Instance.Rooms.Where(x => x.RoomId == room.RoomId).FirstOrDefault(); RoomModel oldRoomModel = Resources.Instance.RoomsModel.Where(x => x.RoomId == room.RoomId).FirstOrDefault(); RoomModel newRoomModel = toClient.ModelRef.DeserializeObject <RoomModel>(); switch (toClient.OperateType) { case OperateType.Add: Resources.Instance.Rooms.Add(room); if (null != newRoomModel && newRoomModel.RoomId > 0) { Resources.Instance.RoomsModel.Add(newRoomModel); } break; case OperateType.Edit: Resources.Instance.Rooms.Remove(oldRoom); Resources.Instance.Rooms.Add(room); if (null != oldRoomModel && oldRoomModel.RoomId > 0) { Resources.Instance.RoomsModel.Remove(oldRoomModel); } if (null != newRoomModel && newRoomModel.RoomId > 0 && newRoomModel.HideType != 1) { Resources.Instance.RoomsModel.Add(newRoomModel); } break; case OperateType.Delete: Resources.Instance.Rooms.Remove(oldRoom); if (null != oldRoomModel && oldRoomModel.RoomId > 0) { Resources.Instance.RoomsModel.Remove(oldRoomModel); Notification.Instance.ActionSendFromService(null, oldRoomModel.RoomId, null); } break; } Notification.Instance.ActionRoom(null, room, (int)toClient.OperateType); if (null != newRoomModel && newRoomModel.RoomId > 0) { Notification.Instance.ActionSendFromService(null, newRoomModel.RoomId, null); } break; case ModelType.Config: switch (toClient.OperateType) { case OperateType.Edit: List <string> config = toClient.Model.DeserializeObject <List <string> >(); foreach (var item in config) { if (item.Contains("PrintInfo=")) { string temp = item.Trim().TrimStart("PrintInfo="); Resources.Instance.PrintInfo = JsonConvert.DeserializeObject <PrintInfo>(temp); } } break; } Notification.Instance.ActionConfig(null, null, (int)toClient.OperateType); break; case ModelType.Import: Import import = toClient.Model.DeserializeObject <Import>(); switch (toClient.OperateType) { case OperateType.Add: break; case OperateType.Edit: break; case OperateType.Delete: break; } Notification.Instance.ActionImport(null, import, (int)toClient.OperateType); break; case ModelType.AdminLog: AdminLog adminLog = toClient.Model.DeserializeObject <AdminLog>(); switch (toClient.OperateType) { case OperateType.Add: break; case OperateType.Edit: break; case OperateType.Delete: break; } Notification.Instance.ActionAdminLog(null, adminLog, (int)toClient.OperateType); break; case ModelType.Supplier: Supplier supplier = toClient.Model.DeserializeObject <Supplier>(); switch (toClient.OperateType) { case OperateType.Add: break; case OperateType.Edit: break; case OperateType.Delete: break; } Notification.Instance.ActionSupplier(null, supplier, (int)toClient.OperateType); break; // 各类支付暂时不用 case ModelType.SupplierPay: break; case ModelType.AdminPay: break; case ModelType.MemberPay: break; case ModelType.BalancePay: break; case ModelType.CallBack: List <NotificationCache> cache = toClient.Model.DeserializeObject <List <NotificationCache> >(); switch (toClient.OperateType) { case OperateType.Get: foreach (var item in cache) { switch (item.Type) { case NotificationType.Send: NotificationService.Instance.ServiceSendNotification(item.Notification.DeserializeObject <ToClientServiceSendNotification>()); break; case NotificationType.ProductCountUpdate: NotificationService.Instance.ServiceProductCountUpdateNotification(item.Notification.DeserializeObject <ToClientServiceProductCountUpdateNotification>()); break; case NotificationType.OrderUpdate: NotificationService.Instance.ServiceOrderUpdateNotification(item.Notification.DeserializeObject <ToClientServiceOrderUpdateNotification>()); break; case NotificationType.OrderDetailsAdd: NotificationService.Instance.ServiceOrderDetailsAddNotification(item.Notification.DeserializeObject <ToClientServiceOrderDetailsAddNotification>()); break; case NotificationType.TakeoutUpdate: NotificationService.Instance.ServiceTakeoutUpdateNotification(item.Notification.DeserializeObject <ToClientServiceTakeoutUpdateNotification>()); break; case NotificationType.ModelUpdate: NotificationService.Instance.ServiceModelUpdateNotification(item.Notification.DeserializeObject <ToClientServiceModelUpdateNotification>()); break; } } break; } break; } } catch (Exception ex) { TradingSystemX.Server.QueueMessageBoxNotification.Instance.ActionMessageBox(null, null, Tools.CommandTitles.Instance.Information, "ServiceModelUpdateNotificationError: " + ex.Message + ex.StackTrace, VM.ViewModels.Controls.MessageBoxMode.Dialog, VM.ViewModels.Controls.MessageBoxImageMode.Information, VM.ViewModels.Controls.MessageBoxButtonMode.OK, null, null); ExceptionPro.ExpLog(ex); } }
public override void Activate() { Globals.gameHandler.GetPlayerFromID(playerID).AddDebt(-Balance.ModifyIncome(GetIncome(), Globals.gameHandler.GetPlayerFromID(playerID).GetHappiness())); }
public ActionResult Move(MoveProducts mp) { if (ModelState.IsValid) { bool isOpen1 = db.Storages.First(a => a.ID == mp.StorageFromID).Closed == null; bool isOpen2 = db.Storages.First(a => a.ID == mp.StorageToID).Closed == null; if (!isOpen1 || !isOpen2) { ModelState.AddModelError("", "დახურულ საწყობებზე შეუძლებელია ოპერაციის განხორციელება."); } else if (mp.StorageFromID == mp.StorageToID) { ModelState.AddModelError("", "აირჩიეთ სხვადასხვა საწყობები."); } else { var from = from a in db.Balances where a.StorageID == mp.StorageFromID && a.CatID == mp.CatID && a.ProductID == mp.ProductID select a; var to = from a in db.Balances where a.StorageID == mp.StorageToID && a.CatID == mp.CatID && a.ProductID == mp.ProductID select a; if (from.ToList().Count == 0) { ModelState.AddModelError("", "ასეთი პროდუქტი არ არსებობს საწყობში."); } else if (mp.Quantity > from.First().Quantity) { ModelState.AddModelError("", "მითითებული პროდუქციის რაოდენობა აღემატება საწყობის ნაშთს."); } else { if (to.ToList().Count == 0) { // ასეთი პროდუქტი დანიშნულების საწყობში არ არსებობს ჯერ და ამიტომ ახალს ვქმნით Balance b = new Balance(); b.ProductID = mp.ProductID; b.CatID = mp.CatID; b.StorageID = mp.StorageToID; b.Quantity = mp.Quantity; db.Balances.Add(b); } else { to.First().Quantity = to.First().Quantity + mp.Quantity; } from.First().Quantity = from.First().Quantity - mp.Quantity; db.SaveChanges(); return RedirectToAction("Index"); } } } ViewBag.StorageFromID = new SelectList(db.Storages.Where(a => a.Closed == null), "ID", "Name"); ViewBag.StorageToID = new SelectList(db.Storages.Where(a => a.Closed == null), "ID", "Name"); ViewBag.CatID = new SelectList(db.Categories.Where(a => a.Disabled == false), "ID", "Name"); ViewBag.ProductID = new SelectList(db.Products.Where(a => a.Disabled == false), "ID", "Name"); return View(); }
public bool FeedMoney(string input) { double feedInput = 0; try { feedInput = Convert.ToDouble(input); } catch { return(false); } bool valid = false; if (feedInput == 1 || feedInput == 2 || feedInput == 5 || feedInput == 10) { valid = true; Balance += Convert.ToDouble(input); string[] feedAudit = new string[] { CurrentDateTime, "FEED MONEY", feedInput.ToString(), Balance.ToString() }; AuditData.Add(feedAudit); } return(valid); }
public override int?Selector(Balance b) => b.SubTitle;
private bool TransactionExists(Balance balance) { return(Items.Any(i => i.Ether == balance.Ether && i.Token == balance.Token && i.Message == balance.Message)); }
public static async Task <HttpResponseMessage> PayInterestRun( [HttpTrigger(AuthorizationLevel.Function, "POST", Route = @"PayInterest/{accountnumber}")] HttpRequestMessage req, string accountnumber, [EventStream("Bank", "Account", "{accountnumber}")] EventStream bankAccountEvents, [Projection("Bank", "Account", "{accountnumber}", nameof(InterestDue))] Projection prjInterestDue, [Projection("Bank", "Account", "{accountnumber}", nameof(Balance))] Projection prjBankAccountBalance, [Projection("Bank", "Account", "{accountnumber}", nameof(OverdraftLimit))] Projection prjBankAccountOverdraft) { // Set the start time for how long it took to process the message DateTime startTime = DateTime.UtcNow; if (!await bankAccountEvents.Exists()) { // You cannot pay interest if the account does not exist return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Account {accountnumber} does not exist", 0), FunctionResponse.MEDIA_TYPE)); } // get the interest owed / due as now InterestDue interestDue = await prjInterestDue.Process <InterestDue>(); if (null != interestDue) { // if the interest due is negative we need to make sure the account has sufficient balance if (interestDue.Due < 0.00M) { Balance balance = await prjBankAccountBalance.Process <Balance>(); if (null != balance) { decimal availableBalance = balance.CurrentBalance; // is there an overdraft? OverdraftLimit overdraft = await prjBankAccountOverdraft.Process <OverdraftLimit>(); if (null != overdraft) { availableBalance += overdraft.CurrentOverdraftLimit; } if (availableBalance < interestDue.Due) { // can't pay the interest return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Unable to pay interest of {interestDue.Due} as available balance is only {availableBalance}", interestDue.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } } } // pay the interest decimal amountToPay = decimal.Round(interestDue.Due, 2, MidpointRounding.AwayFromZero); if (amountToPay != 0.00M) { InterestPaid evInterestPaid = new InterestPaid() { AmountPaid = decimal.Round(interestDue.Due, 2, MidpointRounding.AwayFromZero), Commentary = $"Interest due {interestDue.Due} as at {interestDue.CurrentSequenceNumber}" }; await bankAccountEvents.AppendEvent(evInterestPaid); return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.OK, ProjectionFunctionResponse.CreateResponse(startTime, false, evInterestPaid.Commentary, interestDue.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } else { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.OK, ProjectionFunctionResponse.CreateResponse(startTime, false, $"No interest due so none was paid out", interestDue.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } } else { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Unable to get interest due for account {accountnumber} for interest payment", 0), FunctionResponse.MEDIA_TYPE )); } }
public void OnReceiveBalance(object sender, Balance e) => BeginInvoke(new Action(() =>
public void WithDraw(double amount) { if (amount > WithDrawLimit) { throw new DomainException("Limite para saque ultrapassado. Limite: $" + WithDrawLimit. ToString("F2", CultureInfo.InvariantCulture)); } if (amount > Balance) { throw new DomainException("Não há saldo suficiente para saque. Saldo: $" + Balance. ToString("F2", CultureInfo.InvariantCulture)); } Balance -= amount; }
public IHttpActionResult Add(TransactionDto transactionDto) { if (!ModelState.IsValid) { return(BadRequest()); } var transaction = Mapper.Map <TransactionDto, Transaction>(transactionDto); _context.Transactions.Add(transaction); if (transaction.TransactionTypeId == TransactionType.Income) { if (_context.Balances.Where(b => b.BalanceDate == transaction.TransactionDate.Date).Count() == 0) { DateTime?lastUpdatedBalanceDate = _context.Balances. Where(b => b.BalanceDate < transaction.TransactionDate.Date) .Max(b => (DateTime?)b.BalanceDate); lastUpdatedBalanceDate = lastUpdatedBalanceDate == null ? transaction.TransactionDate.Date : lastUpdatedBalanceDate; Balance balance = _context.Balances.SingleOrDefault(b => b.BalanceDate == lastUpdatedBalanceDate); _context.Balances.Add(new Balance { BalanceDate = transaction.TransactionDate.Date, Amount = transaction.Amount + (balance == null ? 0 : balance.Amount) }); List <Balance> balances = _context.Balances.Where(b => b.BalanceDate > transaction.TransactionDate.Date).ToList(); foreach (Balance item in balances) { item.Amount += transaction.Amount; } } else { List <Balance> balances = _context.Balances.Where(b => b.BalanceDate >= transaction.TransactionDate.Date).ToList(); foreach (Balance item in balances) { item.Amount += transaction.Amount; } } } if (transaction.TransactionTypeId == TransactionType.Expense) { if (_context.Balances.Where(b => b.BalanceDate == transaction.TransactionDate.Date).Count() == 0) { DateTime?lastUpdatedBalanceDate = _context.Balances. Where(b => b.BalanceDate < transaction.TransactionDate.Date) .Max(b => (DateTime?)b.BalanceDate); lastUpdatedBalanceDate = lastUpdatedBalanceDate == null ? transaction.TransactionDate.Date : lastUpdatedBalanceDate; Balance balance = _context.Balances.SingleOrDefault(b => b.BalanceDate == lastUpdatedBalanceDate); _context.Balances.Add(new Balance { BalanceDate = transaction.TransactionDate, Amount = (balance == null ? 0 : balance.Amount) - transaction.Amount }); List <Balance> balances = _context.Balances.Where(b => b.BalanceDate > transaction.TransactionDate.Date).ToList(); foreach (Balance item in balances) { item.Amount -= transaction.Amount; } } else { List <Balance> balances = _context.Balances.Where(b => b.BalanceDate >= transaction.TransactionDate.Date).ToList(); foreach (Balance item in balances) { item.Amount -= transaction.Amount; } } } _context.SaveChanges(); return(Created(Request.RequestUri + "/" + transaction.Id, transaction)); }
public ValueIapData() { Values = new Balance(); }
public void OnAfterDeserialize() { RuntimeValue = InitialValue; }
public int Post([FromBody] Balance value) { return(_balancesRepository.CreateNew(value)); }
public async Task <Result <IGameResult, ErrorCode> > Spin(RequestContext <SpinArgs> requestContext) { using (logger.BeginScope(new Dictionary <string, object> { ["SessionKey"] = requestContext.UserSession.SessionKey, ["UserId"] = requestContext.UserSession.UserId, ["GameKey"] = requestContext.GameKey, ["Platform"] = requestContext.Platform, ["BettingLines"] = requestContext.Parameters.BettingLines, ["LineBet"] = requestContext.Parameters.LineBet, ["Multiplier"] = requestContext.Parameters.Multiplier })) { var module = gameModules.GetModule(requestContext.GameKey); var userSession = requestContext.UserSession; SpinResult result = null; var level = await userService.GetLevel(requestContext.UserGameKey); try { var transaction = await transactionService.GenerateGameTransactionId(requestContext.UserGameKey, GameTransactionType.Spin); requestContext.GameTransaction = transaction; var roundId = await transactionService.GenerateAutoNumber(CounterType.RoundId); requestContext.CurrentRound = roundId; var lastSpinData = await userService.GetLastSpinData(userSession, requestContext.Game); var totalBet = module.CalculateTotalBet(lastSpinData, requestContext); logger.LogInformation("User spin on level {Level}, trx id {GameTransactionId}, round {CurrentRoundId}, total bet {TotalBet}", level, transaction.Id, roundId, totalBet); var deductBet = await payoutService.DeductBetFromWallet(requestContext, totalBet); // TODO we should check the wallet result if it's success var spinResult = module.ExecuteSpin(level, lastSpinData, requestContext); if (spinResult.IsError) { return(spinResult.Error); } result = spinResult.Value; result.Bet = totalBet; result.RoundId = roundId; result.TransactionId = transaction.Id; result.UniqueID = result.TransactionId.ToString(); result.DateTimeUtc = transaction.DateTimeUtc; result.ExchangeRate = deductBet.ExchangeRate; result.Balance = Balance.Create(deductBet.Balance); if (result.HasBonus) { logger.LogInformation("User got bonus"); var bonusCreated = module.CreateBonus(result); if (bonusCreated.IsError) { logger.LogWarning("Create bonus got error {Error} with {SpinResult}", bonusCreated.Error, JsonHelper.FullString(result)); return(ErrorCode.InternalError); } var bonus = bonusCreated.Value; bonus.SpinTransactionId = transaction.Id; bonus.GameResult = result; var entity = new BonusEntity { UserId = userSession.UserId, GameId = requestContext.Game.Id, Guid = bonus.Guid.ToString("N"), Data = bonus.ToByteArray(), BonusType = bonus.GetType().Name, Version = 3, IsOptional = bonus.IsOptional, IsStarted = bonus.IsStarted, RoundId = roundId, BetReference = deductBet.BetReference }; await bonusService.UpdateBonus(userSession, entity); await userService.UpdateGameState(requestContext, UserGameState.ForBonus(roundId)); } else { await userService.UpdateGameState(requestContext, UserGameState.ForNormal(roundId)); } var paied = await payoutService.PayoutToUser(requestContext, result, new BonusExtraInfo { RoundId = roundId, BetId = deductBet.BetReference }, !result.HasBonus, deductBet.Guid); result.ExchangeRate = deductBet.ExchangeRate; result.Balance = Balance.Create(paied.Balance); await transactionService.ProfileSpinBet(requestContext); await userService.UpdateLastSpinData(userSession, requestContext.Game, result); if (!userSession.IsFunPlay) { await userService.UpdateUserGameData(new UserGameData { UserId = userSession.UserId, GameId = requestContext.Game.Id, Bet = requestContext.Parameters.LineBet, Lines = requestContext.Game.Lines, }); } } catch (InsufficientBalanceException ex) { logger.LogInformation(ex, ex.Message); return(ErrorCode.InsufficientCredit); } catch (Exception ex) { logger.LogError(ex, ex.Message); throw; } finally { await TrySaveGameHistory(requestContext, result); } return(result); } }
public static async Task <HttpResponseMessage> AccrueInterestRun( [HttpTrigger(AuthorizationLevel.Function, "POST", Route = @"AccrueInterest/{accountnumber}")] HttpRequestMessage req, string accountnumber, [EventStream("Bank", "Account", "{accountnumber}")] EventStream bankAccountEvents, [Projection("Bank", "Account", "{accountnumber}", nameof(Balance))] Projection prjBankAccountBalance, [Classification("Bank", "Account", "{accountnumber}", nameof(InterestAccruedToday))] Classification clsAccruedToday) { // Set the start time for how long it took to process the message DateTime startTime = DateTime.UtcNow; if (!await bankAccountEvents.Exists()) { // You cannot accrue interest if the account does not exist return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Account {accountnumber} does not exist", 0))); } ClassificationResponse isAccrued = await clsAccruedToday.Classify <InterestAccruedToday>(); if (isAccrued.Result == ClassificationResponse.ClassificationResults.Include) { // The accrual for today has been performed for this account return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Interest accrual already done on account {accountnumber} today", isAccrued.AsOfSequence), FunctionResponse.MEDIA_TYPE )); } // get the request body... InterestAccrualData data = await req.Content.ReadAsAsync <InterestAccrualData>(); // Get the current account balance, as at midnight Balance projectedBalance = await prjBankAccountBalance.Process <Balance>(DateTime.Today); if (null != projectedBalance) { Account.Events.InterestAccrued evAccrued = new Account.Events.InterestAccrued() { Commentary = data.Commentary, AccrualEffectiveDate = DateTime.Today // set the accrual to midnight today }; if (projectedBalance.CurrentBalance >= 0) { // Using the credit rate evAccrued.AmountAccrued = data.CreditInterestRate * projectedBalance.CurrentBalance; } else { // Use the debit rate evAccrued.AmountAccrued = data.DebitInterestRate * projectedBalance.CurrentBalance; } try { await bankAccountEvents.AppendEvent(evAccrued, isAccrued.AsOfSequence); } catch (EventSourcingOnAzureFunctions.Common.EventSourcing.Exceptions.EventStreamWriteException exWrite) { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Failed to write interest accrual event {exWrite.Message}", projectedBalance.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.OK, ProjectionFunctionResponse.CreateResponse(startTime, false, $"Interest accrued for account {accountnumber} is {evAccrued.AmountAccrued}", projectedBalance.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } else { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Unable to get current balance for account {accountnumber} for interest accrual", 0), FunctionResponse.MEDIA_TYPE )); } }
public virtual string ToPrint() //this will be the Method used when the status of the account needs to appear; virtual means that the ToPrint for Checking data and ToPrint for Saving data will print when called in the Program for the monthly balance. { return("Acct Name=" + Owner.Fullname + ", Id=" + Id.ToString() + ", Desc=" + Description + ", Bal=" + Balance.ToString()); }
public static async Task <HttpResponseMessage> ExtendOverdraftForInterestRun( [HttpTrigger(AuthorizationLevel.Function, "POST", Route = @"ExtendOverdraftForInterest/{accountnumber}")] HttpRequestMessage req, string accountnumber, [EventStream("Bank", "Account", "{accountnumber}")] EventStream bankAccountEvents, [Projection("Bank", "Account", "{accountnumber}", nameof(InterestDue))] Projection prjInterestDue, [Projection("Bank", "Account", "{accountnumber}", nameof(Balance))] Projection prjBankAccountBalance, [Projection("Bank", "Account", "{accountnumber}", nameof(OverdraftLimit))] Projection prjBankAccountOverdraft ) { // Bolierplate: Set the start time for how long it took to process the message DateTime startTime = DateTime.UtcNow; // Check the balance is negative // get the interest owed / due as now InterestDue interestDue = await prjInterestDue.Process <InterestDue>(); if (null != interestDue) { // if the interest due is negative we need to make sure the account has sufficient balance if (interestDue.Due < 0.00M) { Balance balance = await prjBankAccountBalance.Process <Balance>(); if (null != balance) { decimal availableBalance = balance.CurrentBalance; // is there an overdraft? OverdraftLimit overdraft = await prjBankAccountOverdraft.Process <OverdraftLimit>(); if (null != overdraft) { availableBalance += overdraft.CurrentOverdraftLimit; } if (availableBalance < interestDue.Due) { decimal newOverdraft = overdraft.CurrentOverdraftLimit; decimal extension = 10.00M + Math.Abs(interestDue.Due % 10.00M); OverdraftLimitSet evNewLimit = new OverdraftLimitSet() { OverdraftLimit = newOverdraft + extension, Commentary = $"Overdraft extended to pay interest of {interestDue.Due} ", Unauthorised = true }; await bankAccountEvents.AppendEvent(evNewLimit); return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.OK, ProjectionFunctionResponse.CreateResponse(startTime, false, $"Extended the overdraft by {extension} for payment of interest {interestDue.Due} for account {accountnumber}", interestDue.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } } } // Not needed return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.OK, ProjectionFunctionResponse.CreateResponse(startTime, false, $"Extending the overdraft for interest not required for account {accountnumber}", interestDue.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } else { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Unable to extend the overdraft for account {accountnumber} for interest payment", 0), FunctionResponse.MEDIA_TYPE )); } }
public override string ToString() => $"| {Date.ToShortDateString()} | {DepositStatement} | {WithdrawalStatement} | {Balance.ToString()} |";
public string Purchase(string input) { string oldBalance = Balance.ToString(); string nameAndSlot = ""; double getPrice = 0; bool canPurchase = false; foreach (VendingMachineItem x in items) { if (x.Slot.ToLower().Equals(input)) { getPrice = Convert.ToDouble(x.Price); if (Balance > getPrice && x.Quantity > 0) { canPurchase = true; nameAndSlot = x.Name + " " + x.Slot; } else if (getPrice > Balance) { canPurchase = false; return("Not enough funds!"); } else if (x.Quantity == 0) { canPurchase = false; return("Item is sold out!"); } if (canPurchase) { Balance -= getPrice; x.Quantity -= 1; string[] feedAudit = new string[] { CurrentDateTime, nameAndSlot, oldBalance, Balance.ToString() }; AuditData.Add(feedAudit); return("You have succesfully purchased " + nameAndSlot); } } } return("Item not found!"); }
/// <summary> /// 新增一个对象 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnNew_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { m_balance = new Balance(); Object2Form(); SetFromStatus(winStatusEnum.新增); }
public async ValueTask DisposeAsync() { await Balance.DisposeAsync(); await Hermes.DisposeAsync(); }
/// <summary> /// bithumb 거래소 회원 지갑 정보 /// </summary> /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param> /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param> /// <param name="args">Add additional attributes for each exchange</param> /// <returns></returns> public override async ValueTask <Balance> FetchBalanceAsync(string base_name, string quote_name, Dictionary <string, object> args = null) { var _result = new Balance(); var _currency_id = await publicApi.LoadCurrencyIdAsync(base_name); if (_currency_id.success == true) { privateClient.ExchangeInfo.ApiCallWait(TradeType.Private); var _params = new Dictionary <string, object>(); { _params.Add("currency", _currency_id.result); privateClient.MergeParamsAndArgs(_params, args); } var _json_value = await privateClient.CallApiPost1Async("/info/balance", _params); #if DEBUG _result.rawJson = _json_value.Content; #endif var _json_result = privateClient.GetResponseMessage(_json_value.Response); if (_json_result.success == true) { var _json_data = privateClient.DeserializeObject <BBalance>(_json_value.Content); if (_json_data.success == true) { var _base_id = _currency_id.result; if (_json_data.data.SelectToken($"total_{_base_id}") != null) { var _balance = new BBalanceItem() { currency = base_name, free = _json_data.data[$"available_{_base_id}"].Value <decimal>(), used = _json_data.data[$"in_use_{_base_id}"].Value <decimal>(), total = _json_data.data[$"total_{_base_id}"].Value <decimal>(), misu = _json_data.data[$"misu_{_base_id}"].Value <decimal>(), xcoin_last = _json_data.data[$"xcoin_last"].Value <decimal>() }; _result.result = _balance; } } else { _json_result.SetResult(_json_data); } } _result.SetResult(_json_result); } else { _result.SetResult(_currency_id); } return(_result); }
private IEnumerable <Balance> CalculateEqualForOneUser(IEnumerable <Result> both, String username, String password) { bool sign = false; var array = both.ToArray(); List <Balance> tBalances = new List <Balance>(); for (int i = 0; i < array.Count(); i++) { if (i != array.Count() - 1) { if (array[i].monthAndYear == array[i + 1].monthAndYear) { sign = true; if (array[i].Year == DateTime.Now.Year && array[i].Month == DateTime.Now.Month) { Balance tBalance = new Balance() { Amount = (array[i].amount - array[i + 1].amount) + RecurringIncomeController.Instance().OneUserMonthlyIncome(username, password), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } else { Balance tBalance = new Balance() { Amount = (array[i].amount - array[i + 1].amount), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } } else if (array[i].Type == "Expense" && sign == false) { if (array[i].Year == DateTime.Now.Year && array[i].Month == DateTime.Now.Month) { Balance tBalance = new Balance() { Amount = (-array[i].amount) + RecurringIncomeController.Instance().OneUserMonthlyIncome(username, password), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } else { Balance tBalance = new Balance() { Amount = (-array[i].amount), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } } else if (array[i].Type == "Income" && sign == false) { if (array[i].Year == DateTime.Now.Year && array[i].Month == DateTime.Now.Month) { Balance tBalance = new Balance() { Amount = (array[i].amount) + RecurringIncomeController.Instance().OneUserMonthlyIncome(username, password), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } else { Balance tBalance = new Balance() { Amount = (array[i].amount), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } } else { sign = false; } } else { if (array[i].Type == "Expense" && sign == false) { if (array[i].Year == DateTime.Now.Year && array[i].Month == DateTime.Now.Month) { Balance tBalance = new Balance() { Amount = (-array[i].amount) + RecurringIncomeController.Instance().OneUserMonthlyIncome(username, password), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } else { Balance tBalance = new Balance() { Amount = (-array[i].amount), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } } else if (array[i].Type == "Income" && sign == false) { if (array[i].Year == DateTime.Now.Year && array[i].Month == DateTime.Now.Month) { Balance tBalance = new Balance() { Amount = (array[i].amount) + RecurringIncomeController.Instance().OneUserMonthlyIncome(username, password), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } else { Balance tBalance = new Balance() { Amount = (array[i].amount), monthAndYear = array[i].monthAndYear, Year = array[i].Year, Month = array[i].Month }; tBalances.Add(tBalance); } } else { sign = false; } } } return(tBalances); }
public override string Selector(Balance b) => b.User;
// // GET: /Storages/Purchase/5 public ActionResult Purchase(int id = 0) { Balance b = new Balance(); b.StorageID = id; ViewBag.CatID = new SelectList(db.Categories.Where(a => a.Disabled == false), "ID", "Name"); ViewBag.ProductID = new SelectList(db.Products.Where(a => a.Disabled == false), "ID", "Name"); return View(b); }
public static async Task <HttpResponseMessage> WithdrawMoneyRun( [HttpTrigger(AuthorizationLevel.Function, "POST", Route = @"WithdrawMoney/{accountnumber}")] HttpRequestMessage req, string accountnumber, [EventStream("Bank", "Account", "{accountnumber}")] EventStream bankAccountEvents, [Projection("Bank", "Account", "{accountnumber}", nameof(Balance))] Projection prjBankAccountBalance, [Projection("Bank", "Account", "{accountnumber}", nameof(OverdraftLimit))] Projection prjBankAccountOverdraft) { // Set the start time for how long it took to process the message DateTime startTime = DateTime.UtcNow; if (!await bankAccountEvents.Exists()) { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.NotFound, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Account {accountnumber} does not exist", 0), FunctionResponse.MEDIA_TYPE)); } else { // get the request body... MoneyWithdrawnData data = await req.Content.ReadAsAsync <MoneyWithdrawnData>(); // get the current account balance Balance projectedBalance = await prjBankAccountBalance.Process <Balance>(); if (null != projectedBalance) { OverdraftLimit projectedOverdraft = await prjBankAccountOverdraft.Process <OverdraftLimit>(); decimal overdraftSet = 0.00M; if (null != projectedOverdraft) { if (projectedOverdraft.CurrentSequenceNumber != projectedBalance.CurrentSequenceNumber) { // The two projections are out of synch. In a real business case we would retry them // n times to try and get a match but here we will just throw a consistency error return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Unable to get a matching state for the current balance and overdraft for account {accountnumber}", 0), FunctionResponse.MEDIA_TYPE)); } else { overdraftSet = projectedOverdraft.CurrentOverdraftLimit; } } if ((projectedBalance.CurrentBalance + overdraftSet) >= data.AmountWithdrawn) { // attempt the withdrawal DateTime dateWithdrawn = DateTime.UtcNow; Account.Events.MoneyWithdrawn evWithdrawn = new Account.Events.MoneyWithdrawn() { LoggedWithdrawalDate = dateWithdrawn, AmountWithdrawn = data.AmountWithdrawn, Commentary = data.Commentary }; try { await bankAccountEvents.AppendEvent(evWithdrawn, projectedBalance.CurrentSequenceNumber); } catch (EventSourcingOnAzureFunctions.Common.EventSourcing.Exceptions.EventStreamWriteException exWrite) { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Failed to write withdrawal event {exWrite.Message}", 0), FunctionResponse.MEDIA_TYPE)); } return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.OK, ProjectionFunctionResponse.CreateResponse(startTime, false, $"{data.AmountWithdrawn } withdrawn from account {accountnumber} (New balance: {projectedBalance.CurrentBalance - data.AmountWithdrawn}, overdraft: {overdraftSet} )", projectedBalance.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } else { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Account {accountnumber} does not have sufficent funds for the withdrawal of {data.AmountWithdrawn} (Current balance: {projectedBalance.CurrentBalance}, overdraft: {overdraftSet} )", projectedBalance.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } } else { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Unable to get current balance for account {accountnumber}", projectedBalance.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } } }
public override string ToString() { return("New Balance: " + Balance.ToString("F2", CultureInfo.InvariantCulture)); }
public static async Task <HttpResponseMessage> SetOverdraftLimitRun( [HttpTrigger(AuthorizationLevel.Function, "POST", Route = @"SetOverdraftLimit/{accountnumber}")] HttpRequestMessage req, string accountnumber, [EventStream("Bank", "Account", "{accountnumber}")] EventStream bankAccountEvents, [Projection("Bank", "Account", "{accountnumber}", nameof(Balance))] Projection prjBankAccountBalance) { // Set the start time for how long it took to process the message DateTime startTime = DateTime.UtcNow; if (!await bankAccountEvents.Exists()) { // You cannot set an overdraft if the account does not exist return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Account {accountnumber} does not exist", 0))); } else { // get the request body... OverdraftSetData data = await req.Content.ReadAsAsync <OverdraftSetData>(); // get the current account balance Balance projectedBalance = await prjBankAccountBalance.Process <Balance>(); if (null != projectedBalance) { if (projectedBalance.CurrentBalance >= (0 - data.NewOverdraftLimit)) { // attempt to set the new overdraft limit Account.Events.OverdraftLimitSet evOverdraftSet = new Account.Events.OverdraftLimitSet() { OverdraftLimit = data.NewOverdraftLimit, Commentary = data.Commentary }; try { await bankAccountEvents.AppendEvent(evOverdraftSet, projectedBalance.CurrentSequenceNumber); } catch (EventSourcingOnAzureFunctions.Common.EventSourcing.Exceptions.EventStreamWriteException exWrite) { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Failed to write overdraft limit event {exWrite.Message}", projectedBalance.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.OK, ProjectionFunctionResponse.CreateResponse(startTime, false, $"{data.NewOverdraftLimit } set as the new overdraft limit for account {accountnumber}", projectedBalance.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE)); } else { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Account {accountnumber} has an outstanding balance beyond the new limit {data.NewOverdraftLimit} (Current balance: {projectedBalance.CurrentBalance} )", projectedBalance.CurrentSequenceNumber), FunctionResponse.MEDIA_TYPE )); } } else { return(req.CreateResponse <ProjectionFunctionResponse>(System.Net.HttpStatusCode.Forbidden, ProjectionFunctionResponse.CreateResponse(startTime, true, $"Unable to get current balance for account {accountnumber}", 0), FunctionResponse.MEDIA_TYPE )); } } }
public int Create([FromBody] Balance balance) { return(us.AddBalance(balance)); }
public void Subscribe(BalanceChanged type) { CurrentBalance = type.CurrentBalance; }
public int Edit([FromBody] Balance balance) { return(us.UpdateBalance(balance)); }
private BalanceDetail GetCurrenceData(Balance balance, string currency) => balance.Data.First(f => f.Currency_code == currency);
/// <summary> /// Saves the whole transaction for /// </summary> /// <param name="orderID">The order ID.</param> /// <param name="dvOutstandingPickList">The dv outstanding pick list.</param> /// <param name="remark">The remark.</param> /// <param name="issuedBy">The issued by.</param> /// <param name="etCurrentDate">The et current date.</param> /// <returns></returns> /// <exception cref="System.Exception"></exception> public static Order SaveIssueTransaction(int orderID, ref DataView dvOutstandingPickList, string remark, string issuedBy, DateTime etCurrentDate) { // Add the IssueDocID field dvOutstandingPickList.Table.Columns.Add("IssueDocID"); PickList plst = new PickList(); IssueDoc issDoc = new IssueDoc(); ReceiveDoc recDoc = new ReceiveDoc(); BLL.Order ord = new BLL.Order(); ord.LoadByPrimaryKey(orderID); plst.LoadByOrderID(ord.ID); foreach (DataRowView drv in dvOutstandingPickList) { // Pseudo: // for each row in the picklist // undate the issue document // subtract the issued quantity from the receive doc // subtract the issued quantity from recieve pallet // subtract the issued the reserved quantity irregardless of the quantity issued. //Saving the new Issue issue if (Convert.ToDecimal(drv["BUPICKED"]) == 0) { continue; } if (Convert.ToDecimal(drv["SKUPicked"]) != Convert.ToDecimal(drv["SKUTOPICK"])) { drv["Cost"] = Convert.ToDecimal(drv["SKUPicked"]) * Convert.ToDecimal(drv["UnitPrice"]); } // Select the receive doc that is associated with this issue. recDoc.LoadByPrimaryKey(Convert.ToInt32(drv["ReceiveDocID"])); issDoc.AddNew(); issDoc.StoreId = Convert.ToInt32(drv["StoreID"]); issDoc.RefNo = ord.RefNo; if (!ord.IsColumnNull("RequestedBy")) issDoc.ReceivingUnitID = ord.RequestedBy; // TOFIX: // TODO: // Lord have mercy kind of hack to avoid the feb date problem // this needs to be fixed for pagume also issDoc.Date = etCurrentDate; issDoc.EurDate = DateTimeHelper.ServerDateTime; issDoc.RecievDocID = Convert.ToInt32(drv["ReceiveDocID"]); issDoc.IsApproved = true; issDoc.IsTransfer = false; issDoc.Remark = remark; issDoc.ItemID = Convert.ToInt32(drv["ItemID"]); issDoc.Quantity = Convert.ToDecimal(drv["BUPICKED"]); issDoc.NoOfPack = Convert.ToDecimal(drv["SKUPICKED"]); issDoc.QtyPerPack = Convert.ToInt32(drv["SKUBU"]); issDoc.BatchNo = drv["BatchNumber"].ToString(); issDoc.UnitID = recDoc.UnitID; issDoc.ManufacturerID = recDoc.ManufacturerId; if (drv["Cost"] != DBNull.Value) { issDoc.Cost = Convert.ToDouble(drv["Cost"]); issDoc.SellingPrice = Convert.ToDecimal(drv["UnitPrice"]); if (!recDoc.IsColumnNull("Cost")) { issDoc.UnitCost = Convert.ToDecimal(recDoc.Cost); } } issDoc.OrderID = orderID; issDoc.IssuedBy = issuedBy; // TODO: is this the right place where we need to pick the physical store ID from? // check it against the receipt pallet physical store. if (!recDoc.IsColumnNull("PhysicalStoreID")) { issDoc.PhysicalStoreID = recDoc.PhysicalStoreID; } if (!recDoc.IsColumnNull("InventoryPeriodID")) { //Todo: Remove for Inventory issDoc.InventoryPeriodID = recDoc.InventoryPeriodID; } if (!recDoc.IsColumnNull("Margin")) { issDoc.Margin = (decimal)recDoc.Margin; } //Replaced by issDoc.PLDetailID = Convert.ToInt32(drv["PLDetailID"]); BLL.Balance bal = new Balance(); BLL.ReceiveDoc rd = new ReceiveDoc(); rd.LoadByPrimaryKey(issDoc.RecievDocID); decimal currentBalance = bal.GetSoh(issDoc.ItemID, rd.UnitID, issDoc.StoreId, issDoc.Date.Month, issDoc.Date.Year); if (currentBalance < issDoc.NoOfPack) { throw new Exception(string.Format("The item {0} is not available in {1} Qty.", drv["FullItemName"].ToString(), issDoc.NoOfPack)); } // This is a field that is not applicable on the hub edition // It is about the dispensing unit quantity and there is no such thing as Dispensing unit // in the hub edition issDoc.DUSOH = 0; issDoc.RecomendedQty = 0;// ((recQty > 0) ? Convert.ToInt64(recQty) : 0); // End DU issDoc.DispatchConfirmed = false; issDoc.Save(); drv["IssueDocID"] = issDoc.ID; // updating the receiving doc //long prevQuantityLeft = recDoc.QuantityLeft; recDoc.QuantityLeft = recDoc.QuantityLeft - issDoc.Quantity; if (recDoc.QuantityLeft < 0) { //Possibly the wrong ReceiveDoc Entry chosen BLL.Item itm = new Item(); itm.LoadByPrimaryKey(recDoc.ItemID); throw new Exception(string.Format("Quantity problem detected for the item {0}", itm.FullItemName)); } //long recDoc.Out = (recDoc.QuantityLeft == 0) ? true : false; recDoc.Save(); ReceivePallet rp = new ReceivePallet(); int id = Convert.ToInt32(drv["ReceivePalletID"]); rp.LoadByPrimaryKey(id); if (rp.IsColumnNull("Balance")) { rp.Balance = rp.ReceivedQuantity; } rp.Balance -= issDoc.Quantity; if (rp.Balance < 0) { BLL.Item itm = new Item(); itm.LoadByPrimaryKey(recDoc.ItemID); throw new Exception(string.Format("Quantity problem detected for the item {0}", itm.FullItemName)); } decimal totReservedQty = Convert.ToDecimal(drv["QuantityInBU"]); if (rp.IsColumnNull("ReservedStock")) rp.ReservedStock = 0; rp.ReservedStock -= totReservedQty; if (rp.ReservedStock < 0) //If there has been a quantity problem somewhere rp.ReservedStock = 0; rp.Save(); } plst.IsConfirmed = true; ord.ChangeStatus(OrderStatus.Constant.ISSUED, CurrentContext.UserId); plst.Save(); ord.Save(); return ord; }
public abstract T Selector(Balance b);