// @topic S-0301-01-10-50 C++ POS structures
// @brief declares structs Cashier, Manager, CashRegister, and so on

// structs.h

#ifndef STRUCTS_H_INCLUDED_
#define STRUCTS_H_INCLUDED_

#include <ctime>
#include <vector>

// forward declarations
struct Manager;
struct RegisterAssignment;
struct CashRegister;

struct Store {
};

struct WorkShift {
   // list of employees
    Manager* ptr_manager;
};

struct Cashier {
    static const int MAX_ASSIGNMENTS = 10;
    RegisterAssignment* assignment_list[ MAX_ASSIGNMENTS ];
    int current_assignment;
};

struct Manager {
    // Support assignment of cashiers to registers by a manager
    void assign_register( Cashier* ptr_cashier, CashRegister* cash_register );
};

// C - style
//void manager_assign_register_to_cashier(Manager* ptr_manager, Cashier* ptr_cashier );

struct CashRegister {
};

struct RegisterAssignment {
    CashRegister* ptr_register;
    Cashier* ptr_cashier;
    Manager* ptr_manager;
    time_t start_time;
    time_t end_time;
};

//const int ASSIGNMENTS_PER_SHIFT = 1000;
//RegisterAssignment assignment_list[ASSIGNMENTS_PER_SHIFT];

extern std::vector< RegisterAssignment > assignments;
// ArrayList< RegisterAssignment > -- java

#endif // STRUCTS_H_INCLUDED_