Gitlab CI - Debugging
[tpg/opendispense2.git] / src / cokebank.h
index ae244a2..1328c11 100644 (file)
 #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_ADDSRC_ACCT   ">additions"    //!< Credit taken out of
+#define COKEBANK_DEBT_ACCT     ">countersum"   //!< Balancing account (causes sum to be 0)
+#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
+ */
 enum eBank_ItFlags
 {
-       BANK_ITFLAG_MINBALANCE  = 0x01,
-       BANK_ITFLAG_MAXBALANCE  = 0x02,
-       BANK_ITFLAG_SEENBEFORE  = 0x04,
-       BANK_ITFLAG_SEENAFTER   = 0x08,
+       BANK_ITFLAG_MINBALANCE  = 0x01, //!< Balance value is Minium Balance
+       BANK_ITFLAG_MAXBALANCE  = 0x02, //!< Balance value is Maximum Balance (higher priority)
+       BANK_ITFLAG_SEENAFTER   = 0x04, //!< Last seen value is lower bound
+       BANK_ITFLAG_SEENBEFORE  = 0x08, //!< Last seen value is upper bound (higher priority)
        
-       BANK_ITFLAG_SORT_NONE   = 0x000,
-       BANK_ITFLAG_SORT_NAME   = 0x100,
-       BANK_ITFLAG_SORT_BAL    = 0x200,
-       BANK_ITFLAG_SORT_UNIXID = 0x300,
-       BANK_ITFLAG_SORT_LASTSEEN       = 0x400,
-       BANK_ITFLAG_SORTMASK    = 0x700,
-       BANK_ITFLAG_REVSORT     = 0x800
+       BANK_ITFLAG_SORT_NONE   = 0x000,        //!< No sorting (up to the implementation)
+       BANK_ITFLAG_SORT_NAME   = 0x100,        //!< Sort alphabetically ascending by name
+       BANK_ITFLAG_SORT_BAL    = 0x200,        //!< Sort by balance, ascending
+       BANK_ITFLAG_SORT_UNIXID = 0x300,        //!< Sort by UnixUID (TODO: Needed?)
+       BANK_ITFLAG_SORT_LASTSEEN = 0x400,      //!< Sort by last seen time (ascending)
+       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
 };
 
 /**
@@ -50,7 +89,7 @@ enum eBank_ItFlags
  */
 enum eCokebank_Flags { 
        USER_FLAG_COKE          = 0x01, //!< User is a coke member (can do coke accounting)
-       USER_FLAG_WHEEL         = 0x02, //!< User is a wheel member (can create, delete and lock accounts)
+       USER_FLAG_ADMIN         = 0x02, //!< User is a administrator (can create, delete and lock accounts)
        USER_FLAG_DOORGROUP     = 0x04, //!< User is in the door group (can open the clubroom door)
        USER_FLAG_INTERNAL      = 0x40, //!< Account is internal (cannot be authenticated, no lower balance limit)
        USER_FLAG_DISABLED      = 0x80  //!< Account is disabled (no transactions allowed)
@@ -66,8 +105,8 @@ extern int   Bank_Initialise(const char *Argument);
 
 /**
  * \brief Transfer money from one account to another
- * \param SourceUser   UID (from \a Bank_GetUserID) to take the money from
- * \param DestUser     UID (from \a Bank_GetUserID) give money to
+ * \param SourceAcct   UID (from \a Bank_GetUserID) to take the money from
+ * \param DestAcct     UID (from \a Bank_GetUserID) give money to
  * \param Ammount      Amount of money (in cents) to transfer
  * \param Reason       Reason for the transfer
  */
@@ -97,11 +136,13 @@ extern int Bank_GetBalance(int AcctID);
 extern char    *Bank_GetAcctName(int AcctID);
 /**
  * \brief Get an account ID from a passed name
+ * \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 Username     Name for the new account (if NULL, an anoymous account is created)
+ * \param Name Name for the new account (if NULL, an anoymous account is created)
  * \return ID of the new account
  */
 extern int     Bank_CreateAcct(const char *Name);
@@ -140,6 +181,21 @@ extern void        Bank_DelIterator(tAcctIterator *It);
  */
 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
@@ -158,6 +214,29 @@ extern int Bank_GetAcctByCard(const char *CardID);
  */
 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
 // ---
@@ -168,4 +247,10 @@ extern int Bank_AddAcctCard(int AcctID, const char *CardID);
  */
 extern char    *mkstr(const char *Format, ...);
 
+/**
+ * \brief Dispense log access
+ * \note Try not to over-use, only stuff that matters should go in here
+ */
+extern void    Log_Info(const char *Format, ...);
+
 #endif

UCC git Repository :: git.ucc.asn.au