/*
    Парус 8 - Панели мониторинга - УДП - Доски задач
    Компонент: Вкладка информации об исполнителе
*/

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

import React from "react"; //Классы React
import PropTypes from "prop-types"; //Контроль свойств компонента
import { Box, TextField } from "@mui/material"; //Интерфейсные компоненты
import { getInputProps } from "./task_form"; //Формирование кнопки доступа к разделу
import dayjs from "dayjs"; //Работа с датами
import customParseFormat from "dayjs/plugin/customParseFormat"; //Настройка пользовательского формата даты
import { COMMON_STYLES } from "../styles"; //Общие стили
import { useDictionary } from "../hooks/dict_hooks"; //Состояние открытия разделов

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

//Стили
const STYLES = {
    BOX_LEFT_ALIGN: { display: "flex", justifyContent: "flex-start" }
};

//------------------------------------
//Вспомогательные функции и компоненты
//------------------------------------

//Подключение настройки пользовательского формата даты
dayjs.extend(customParseFormat);

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

//Вкладка информации об исполнителе
const TaskFormTabExecutor = ({ task, onFieldEdit }) => {
    //Вспомогательные функции открытия раздела
    const { handleClientPersonOpen } = useDictionary();

    //При изменении сотрудника-инициатора
    const handleInitClnpersonChange = () =>
        handleClientPersonOpen({
            sCode: task.sInitClnperson,
            callBack: res => {
                onFieldEdit({
                    target: {
                        id: "sInitClnperson",
                        value: res.outParameters.out_CODE
                    }
                });
            }
        });

    //Генерация содержимого
    return (
        <Box>
            <Box sx={{ ...COMMON_STYLES.BOX_WITH_LEGEND, ...STYLES.BOX_LEFT_ALIGN }} component="fieldset">
                <legend style={COMMON_STYLES.LEGEND}>Планирование</legend>
                <TextField
                    id="dPlanDate"
                    label="Начало работ"
                    InputLabelProps={{ shrink: true }}
                    type="datetime-local"
                    variant="standard"
                    value={task.dPlanDate ? dayjs(task.dPlanDate, "DD.MM.YYYY HH:mm").format("YYYY-MM-DD HH:mm") : ""}
                    onChange={onFieldEdit}
                    disabled={task.isUpdate}
                ></TextField>
            </Box>
            <Box sx={{ ...COMMON_STYLES.BOX_WITH_LEGEND, ...COMMON_STYLES.BOX_SINGLE_COLUMN }} component="fieldset">
                <legend style={COMMON_STYLES.LEGEND}>Инициатор</legend>
                <TextField
                    id="sInitClnperson"
                    label="Сотрудник"
                    value={task.sInitClnperson}
                    variant="standard"
                    onChange={onFieldEdit}
                    disabled={task.isUpdate}
                    InputProps={getInputProps(() => handleInitClnpersonChange(), task.isUpdate)}
                ></TextField>
                <TextField id="sInitUser" label="Пользователь" value={task.sInitUser} variant="standard" onChange={onFieldEdit} disabled></TextField>
                <TextField
                    id="sInitReason"
                    label="Основание"
                    value={task.sInitReason}
                    variant="standard"
                    onChange={onFieldEdit}
                    disabled={task.isUpdate}
                ></TextField>
            </Box>
            <Box sx={{ ...COMMON_STYLES.BOX_WITH_LEGEND, ...COMMON_STYLES.BOX_SINGLE_COLUMN }} component="fieldset">
                <legend style={COMMON_STYLES.LEGEND}>Направить</legend>
                <TextField id="sToCompany" label="Организация" value={task.sToCompany} variant="standard" onChange={onFieldEdit} disabled></TextField>
                <TextField
                    id="sToDepartment"
                    label="Подразделение"
                    value={task.sToDepartment}
                    variant="standard"
                    onChange={onFieldEdit}
                    disabled
                ></TextField>
                <TextField id="sToClnpost" label="Должность" value={task.sToClnpost} variant="standard" onChange={onFieldEdit} disabled></TextField>
                <TextField
                    id="sToClnpsdep"
                    label="Штатная должность"
                    value={task.sToClnpsdep}
                    variant="standard"
                    onChange={onFieldEdit}
                    disabled
                ></TextField>
                <TextField
                    id="sToClnperson"
                    label="Сотрудник"
                    value={task.sToClnperson}
                    variant="standard"
                    onChange={onFieldEdit}
                    disabled
                ></TextField>
                <TextField
                    id="sToFcstaffgrp"
                    label="Нештатная должность"
                    value={task.sToFcstaffgrp}
                    variant="standard"
                    onChange={onFieldEdit}
                    disabled
                ></TextField>
                <TextField id="sToUser" label="Пользователь" value={task.sToUser} variant="standard" onChange={onFieldEdit} disabled></TextField>
                <TextField
                    id="sToUsergrp"
                    label="Группа пользователей"
                    value={task.sToUsergrp}
                    variant="standard"
                    onChange={onFieldEdit}
                    disabled
                ></TextField>
            </Box>
        </Box>
    );
};

//Контроль свойств - Вкладка информации об исполнителе
TaskFormTabExecutor.propTypes = {
    task: PropTypes.object.isRequired,
    onFieldEdit: PropTypes.func.isRequired
};

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

export { TaskFormTabExecutor };
