public ServiceOperationResult TipUser(OctoUser from, OctoUser to, decimal amount, string reason) { if (amount <= 0) return ServiceOperationResult.Fail("Amount must be greater than 0"); if (from.Money < amount) return ServiceOperationResult.Fail("Not enough money"); from.Money -= amount; to.Money += amount; var trnx = new Transaction() { Amount = amount, CreditedUser = to, DebitedUser = from, CreatedAt = DateTimeOffset.Now, Code = TransactionCode.Tip, Reason = reason ?? "Tip", }; _repo.Insert(trnx); return ServiceOperationResult.Ok; }
public ServiceOperationResult AdjustBalance(OctoUser user, decimal amount, string reason) { if (string.IsNullOrWhiteSpace(reason)) return ServiceOperationResult.Fail("A reason must be specified"); if (amount == 0) return ServiceOperationResult.Fail("Cannot adjust a users balance by zero"); if (user.Money + amount < 0) return ServiceOperationResult.Fail("Cannot award money that would push user into a negative balance"); user.Money += amount; var trnx = new Transaction() { Amount = Math.Abs(amount), Code = TransactionCode.Adjustment, Reason = reason, CreatedAt = DateTimeOffset.Now, }; if (amount < 0) trnx.DebitedUser = user; else trnx.CreditedUser = user; _repo.Insert(trnx); return ServiceOperationResult.Ok; }
public static ItemOwnershipHistory Create(ItemInstance item, OctoUser receiver, string reason) { return new ItemOwnershipHistory() { Reason = reason, Receiver = receiver, ItemInstance = item, ReceivedAt = DateTimeOffset.Now, }; }
public static ItemInstance Create(OctoUser owner, ItemDefinition item, string reason) { return new ItemInstance() { Owner = owner, Item = item, History = new List<ItemOwnershipHistory>() { new ItemOwnershipHistory() { Reason = reason, ReceivedAt = DateTimeOffset.Now, Receiver = owner, } }, }; }