"""Module providing the shutdown cycler for the PiSCSI Control Board UI"""

from menu.cycler import Cycler


class PiscsiShutdownCycler(Cycler):
    """Class implementing the shutdown cycler for the PiSCSI Control Board UI"""

    def __init__(self, menu_controller, sock_cmd, piscsi_cmd):
        super().__init__(
            menu_controller,
            sock_cmd,
            piscsi_cmd,
            return_entry=True,
            empty_messages=False,
        )
        self.executed_once = False

    def populate_cycle_entries(self):
        cycle_entries = ["Shutdown"]

        return cycle_entries

    def perform_selected_entry_action(self, selected_entry):
        if self.executed_once is False:
            self.executed_once = True
            self._menu_controller.show_timed_message("Shutting down...")
            self.piscsi_cmd.shutdown("system")
            return "shutdown"

        return None

    def perform_return_action(self):
        self._menu_controller.show_timed_mini_message("")
        self._menu_controller.show_timed_message("")

        return "return"
