/*
    Парус 8 - Панели мониторинга - ПУП - Информация о проектах
    Список этапов проекта: дополнительная разметка и вёрстка клиентских элементов
*/

//---------------------
//Подключение библиотек
//---------------------

import React from "react"; //Классы React
import { Icon, Stack, Link } from "@mui/material"; //Интерфейсные элементы
import { formatNumberRFCurrency } from "../../core/utils"; //Спомогательные функции
import { COMMON_STYLES, formatCostStatusValue, formatCostReadyValue } from "./layouts"; //Общие стили и разметка панели

//---------
//Константы
//---------

//Стили
const STYLES = {
    CONTAINER: { textAlign: "center", paddingTop: "10px", backgroundColor: "lightcyan" },
    TITLE: { fontSize: "13pt", paddingBottom: "10px" },
    DATA_GRID_CONTAINER: { backgroundColor: "lightcyan" }
};

//-----------
//Тело модуля
//-----------

//Формирование значения для колонки "Состояние" этапа
const formatStageStatusValue = ({ value, addText = false, justifyContent = "center" }) => {
    const [text, icon] =
        value == 0
            ? ["Зарегистрирован", "app_registration"]
            : value == 1
            ? ["Открыт", "lock_open"]
            : value == 2
            ? ["Закрыт", "lock_outline"]
            : value == 3
            ? ["Согласован", "thumb_up_alt"]
            : value == 4
            ? ["Исполнение прекращено", "block"]
            : ["Остановлен", "do_not_disturb_on"];
    return (
        <Stack direction="row" gap={0.5} alignItems={"center"} justifyContent={justifyContent || "center"}>
            <Icon title={text} sx={COMMON_STYLES.STATE(value)}>
                {icon}
            </Icon>
            {addText == true ? text : null}
        </Stack>
    );
};

//Форматирование ячеек таблицы "Этапы проекта"
const projectStageDataCellRender = ({ row, columnDef, showProjectStage, showStageDetails }) => {
    //Формирование представлений
    switch (columnDef.name) {
        case "NCOST_STATUS":
            return {
                cellProps: { align: "center" },
                data: formatCostStatusValue({ value: row[columnDef.name], onClick: () => showStageDetails(row) })
            };
        case "NCOST_READY":
            return { cellProps: { align: "center" }, data: formatCostReadyValue(row[columnDef.name]) };
        case "NSTATE":
            return { cellProps: { align: "center" }, data: formatStageStatusValue({ value: row[columnDef.name] }) };
        case "SFACEACC":
            return {
                data: (
                    <Link component="button" align="left" underline="hover" onClick={() => showProjectStage(row["NPRN"], row["NRN"])}>
                        {row[columnDef.name]}
                    </Link>
                )
            };
        case "NCOST_SUM":
            return { data: formatNumberRFCurrency(row[columnDef.name]) };
        default:
            return { data: row[columnDef.name] };
    }
};

//----------------
//Интерфейс модуля
//----------------

export { STYLES as STAGES_STYLES, projectStageDataCellRender, formatStageStatusValue };
