public void SplitPayment(SplitPaymentRequest request) { var amount = request.Amount; var id = request.Id.ToGuid(); var payment = ObjectRepository.Set <PaymentModel>().First(v => v.Id == id); var newKind = amount < 0 ? PaymentKind.Expense : PaymentKind.Income; if (payment.Kind != PaymentKind.Expense && payment.Kind != PaymentKind.Income) { newKind = payment.Kind; payment.Amount -= amount; } else { amount = Math.Abs(amount); if (payment.Kind == newKind.GetOpposite()) { amount = -amount; } payment.Amount -= amount; amount = Math.Abs(amount); } if (Math.Abs(amount) > 0.01) { if (payment.Amount < 0 && payment.Kind != payment.Kind.GetOpposite()) { payment.Kind = payment.Kind.GetOpposite(); payment.Amount = Math.Abs(payment.Amount); } var newPayment = new PaymentModel(payment.When, payment.What, amount, newKind, payment.Ccy, null, payment.Column); ObjectRepository.Add(newPayment); newPayment.UserEdited = true; } SendUpdate(new PaymentsStream { Snapshot = new PaymentsList { ShowCategorized = ShowCategorized, Payments = { _collection.Select(v => v.ToMonthSummary()) } } }); }
public override Task <Empty> SplitPayment(SplitPaymentRequest request, ServerCallContext context) { _provider.GetService <PaymentsViewModel>(_accessor).SplitPayment(request); return(Empty); }