#include <stdlib.h>
#define COKEBANK_SALES_ACCT ">sales" //!< Sales made into
-#define COKEBANK_DEBT_ACCT ">liability" //!< Credit taken out of
+#define COKEBANK_SALES_PREFIX ">sales:" //!< Sales made into
+#define COKEBANK_DEBT_ACCT ">countersum" //!< Credit taken out of
#define COKEBANK_FREE_ACCT ">freeitems" //!< ODay drink costs taken out of
+#define COKEBANK_DONATE_ACCT ">donations" //!< Donations go here
+#define COKEBANK_GRAT_ACCR ">gratuities" //!< Coke runs and new users
/**
* \brief Account iterator opaque structure
*/
typedef struct sAcctIterator tAcctIterator;
+#if 0
+/**
+ * \brief Iterator for a collection of items
+ */
+typedef struct sItemIterator tItemIterator;
+
+/**
+ * \brief Item structure
+ */
+typedef struct
+{
+ char *Handler;
+ int ID;
+ int Price;
+ char Name[];
+} tItem;
+#endif
+
/**
* \brief Flag values for the \a Flags parameter to Bank_Iterator
*/
BANK_ITFLAG_SORTMASK = 0x700, //!< Sort type mask
BANK_ITFLAG_REVSORT = 0x800 //!< Sort descending instead
};
+/**
+ * \brief Flag values for the \a Flags parameter to Items_Iterator
+ */
+enum eItems_ItFlags
+{
+ ITEMS_ITFLAG_SHOWDISABLED = 0x001, //!< Show disabled items
+ ITEMS_ITFLAG_SORT_NONE = 0x000, //!< No sorting (up to the implementation)
+ ITEMS_ITFLAG_SORT_NAME = 0x100, //!< Sort alphabetically ascending by name
+ ITEMS_ITFLAG_SORT_PRICE = 0x200, //!< Sort by price, ascending
+ ITEMS_ITFLAG_SORT_IDENT = 0x300, //!< Sort by Identifier (handler:id)
+ ITEMS_ITFLAG_SORTMASK = 0x700, //!< Sort type mask
+ ITEMS_ITFLAG_REVSORT = 0x800 //!< Sort descending instead
+};
/**
* \brief User flag values
* \param Name Name to search for
* \return ID of the account, or -1 if not found
*/
-extern int Bank_GetAcctByName(const char *Name);
+extern int Bank_GetAcctByName(const char *Name, int bCreate);
/**
* \brief Create a new account
* \param Name Name for the new account (if NULL, an anoymous account is created)
*/
extern int Bank_GetUserAuth(const char *Salt, const char *Username, const char *Password);
+/**
+ * \brief Checks the validity of a pin against a username
+ * \param AcctID Account ID
+ * \param Pin Integer version of the pin
+ * \return Boolean correct
+ */
+extern int Bank_IsPinValid(int AcctID, int Pin);
+
+/**
+ * \brief Update a user's pin
+ * \param AcctID Account ID
+ * \param NewPin New pin for the account
+ */
+extern void Bank_SetPin(int AcctID, int NewPin);
+
/**
* \brief Get an account ID from a MIFARE card ID
* \param CardID MIFARE card ID
*/
extern int Bank_AddAcctCard(int AcctID, const char *CardID);
+// === Item Manipulation ===
+#if 0
+extern tItem *Items_GetItem(char *Handler, int ID);
+/**
+ * \brief Create an item iterator
+ * \return Pointer to an iterator across the selected data set
+ */
+extern tItemIterator *Items_Iterator(int Flags, char *Handler, int MaxPrice);
+
+/**
+ * \brief Get the current entry in the iterator and move to the next
+ * \param It Iterator returned by Items_Iterator
+ * \return Item ID, or -1 for end of list
+ */
+extern tItem *Items_IteratorNext(tItemIterator *It);
+
+/**
+ * \brief Free an allocated iterator
+ * \param It Iterator returned by Items_Iterator
+ */
+extern void Items_DelIterator(tItemIterator *It);
+#endif
+
// ---
// Server provided helper functions
// ---