#include "HW4-Todo-QueueArray.hpp"
#include <iostream>

using namespace std;

TodoQueueArray::TodoQueueArray(){
    queueFront = -1;
    queueEnd = -1;
}

bool TodoQueueArray::isEmpty(){
    if(queueFront == -1 && queueEnd == -1){
        return true;
    }
    else{
        return false;
    }
}

bool TodoQueueArray::isFull(){
    if(queueEnd == MAX_QUEUE_SIZE){
        return true;
    }
    else{
        return false;
    }
}

void TodoQueueArray::enqueue(string todoItem){
    TodoItem temp;
    temp.todo = todoItem;
    if(isFull()){
        cout << "Queue full, cannot add new todo item." << endl;
    }
    else if(isEmpty()){
        queueFront = queueEnd = 0;
        queue[queueEnd] = temp;
    }
    else{
        queueEnd = queueEnd + 1;
        queue[queueEnd] = temp;
    }
}

void TodoQueueArray::dequeue(){
    if(isEmpty()){
        cout << "Queue empty, cannot dequeue an item." << endl;
    }
    else if(queueEnd == queueFront){
        queueFront = queueEnd = -1;
    }
    else{
        queueFront = queueFront + 1;
    }
}

TodoItem TodoQueueArray::peek(){
    if(isEmpty()){
        cout << "Queue empty, cannot peek." << endl;
    }
    else{
        cout << queue[queueFront].todo << endl;
    }
    return queue[queueFront];
}
