/// <summary>
 /// Add customer to private list of customers
 /// </summary>
 /// <param name="customer">Customer to add to list</param>
 public void AddCustomer(IStoreCustomer customer)
 {
     _customers.Add(customer);
 }
 public void PutCustomerInLine(IStoreCustomer customer)
 {
     _customersInLine.Enqueue(customer);
 }
        private void ServiceCustomer(IStoreCustomer customer, int timeOffset)
        {
            // perform register selection and get the selected register
            var selectedRegister = customer.RegisterSelection(_registers, _customers);

            // set the start time
            if (selectedRegister.GetNbrCustomersInLine().Equals(0))
                // start time is current time if line is empty
                customer.SetStartTime(timeOffset);
            else
                // otherwise start time is the end time of the last customer in line
                customer.SetStartTime(
                    selectedRegister.GetLastCustInLine()
                                    .GetCompletionTime(selectedRegister.IsTrainingRegister()));

            // put the customer in the queue
            selectedRegister.PutCustomerInLine(customer as StoreCustomer);
        }