/**
 * main functionality function
 * @param  [string] $filename 
 * @return [array]
 */
function whatsapp_reader($filename)
{
    $error_flag = false;
    $errors = [];
    $chat = [];
    $names_array = [];
    $chat_file_path = 'conversations/' . $filename;
    if (!file_exists($chat_file_path)) {
        add_error_message($errors, $error_flag, 'File 404<br>File is like a unicorn to our servers, file was not uploaded properly');
    } else {
        $file_handle = fopen($chat_file_path, "r");
        if (!$file_handle) {
            add_error_message($errors, $error_flag, 'Oh Snap!<br>Some technical glitch, it\'ll be resolved soon!');
        } else {
            $index = 0;
            $first_message = true;
            while (($line = fgets($file_handle)) !== false) {
                $line = explode('-', $line);
                $timestamp = $line[0];
                $timestamp = returntimestamp($timestamp);
                if (!$timestamp) {
                    if ($first_message) {
                        add_error_message($errors, $error_flag, 'It wasn\'t a valid text file or we were not able to convert it!');
                        $first_message = false;
                        break;
                    }
                    $line = implode('-', $line);
                    $last_element_index = sizeof($chat) - 1;
                    $chat[$last_element_index]['line'] .= "\n" . $line;
                } else {
                    if ($first_message) {
                        $first_message = false;
                    }
                    unset($line[0]);
                    $line = implode('-', $line);
                    $line = explode(':', trim($line));
                    $name = trim($line[0]);
                    unset($line[0]);
                    $line = implode(':', $line);
                    $final_chat_string = trim($line);
                    $user_index = get_user_index($names_array, $name);
                    if (strtolower($final_chat_string) == MEDIA_STRING) {
                        $final_string_to_be_printed = null;
                    } else {
                        $final_string_to_be_printed = htmlspecialchars($final_chat_string);
                    }
                    $temp_element = ['index' => $user_index, 'line' => $final_string_to_be_printed, 'time' => $timestamp];
                    array_push($chat, $temp_element);
                }
            }
            // close file handle
            fclose($file_handle);
            // delete file
            // yes, i respect privary
            unlink($chat_file_path);
        }
    }
    $final_response = array('success' => !$error_flag);
    if ($error_flag) {
        $final_response['errors'] = $errors;
    } else {
        $final_response['chat'] = $chat;
        $final_response['users'] = $names_array;
    }
    return $final_response;
}