"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResolveScreen = void 0; var tslib_1 = require("tslib"); var React = tslib_1.__importStar(require("react")); var models_1 = require("../../models"); var ui_1 = require("../ui"); var STATUS_OPTIONS = [models_1.RouteStepStatus.Approval, models_1.RouteStepStatus.Execution] .map(function (v) { return ({ value: v, label: models_1.routeStepStatusLabels[v] }); }); var ResolveScreen = function (_a) { var api = _a.api, currentUserEmail = _a.currentUserEmail; var _b = React.useState([]), requestTypes = _b[0], setRequestTypes = _b[1]; var _c = React.useState(''), requestTypeId = _c[0], setRequestTypeId = _c[1]; var _d = React.useState(''), userEmail = _d[0], setUserEmail = _d[1]; var _e = React.useState(''), projectId = _e[0], setProjectId = _e[1]; var _f = React.useState(models_1.RouteStepStatus.Approval), status = _f[0], setStatus = _f[1]; var _g = React.useState(false), busy = _g[0], setBusy = _g[1]; var _h = React.useState(), error = _h[0], setError = _h[1]; var _j = React.useState(), result = _j[0], setResult = _j[1]; React.useEffect(function () { api.requestTypes.list().then(setRequestTypes).catch(function () { }); }, [api]); var run = function () { if (!requestTypeId) { setError('Выберите тип заявки.'); return; } setBusy(true); setError(undefined); setResult(undefined); api.templateRoutes .resolve({ requestTypeId: Number(requestTypeId), userEmail: userEmail.trim() || undefined, projectId: projectId.trim() || undefined, status: status }) .then(setResult) .catch(function (e) { return setError(e.message); }) .finally(function () { return setBusy(false); }); }; return (React.createElement("div", null, React.createElement(ui_1.Breadcrumbs, { items: [{ label: 'Главная' }, { label: 'Проверка маршрута' }] }), React.createElement(ui_1.PageHeader, { icon: "search", subtitle: "\u0414\u0438\u0430\u0433\u043D\u043E\u0441\u0442\u0438\u043A\u0430", title: "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u0430" }), React.createElement("div", { style: { background: '#fff', borderRadius: 14, padding: 26, boxShadow: 'var(--sh-1)', border: '1px solid var(--gray-200)', marginBottom: 24 } }, React.createElement(ui_1.FormGrid, null, React.createElement(ui_1.Field, { label: "\u0422\u0438\u043F \u0437\u0430\u044F\u0432\u043A\u0438", required: true, full: true }, React.createElement(ui_1.Select, { options: requestTypes.map(function (rt) { return ({ value: String(rt.id), label: rt.name }); }), placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043F \u0437\u0430\u044F\u0432\u043A\u0438", value: requestTypeId, onChange: function (e) { return setRequestTypeId(e.target.value); } })), React.createElement(ui_1.Field, { label: "Email \u0438\u043D\u0438\u0446\u0438\u0430\u0442\u043E\u0440\u0430", hint: currentUserEmail ? "\u041F\u0443\u0441\u0442\u043E = \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C (".concat(currentUserEmail, ").") : 'Пусто = текущий пользователь из токена.' }, React.createElement(ui_1.TextInput, { value: userEmail, onChange: function (e) { return setUserEmail(e.target.value); }, placeholder: "user@tnsu.kz" })), React.createElement(ui_1.Field, { label: "Id \u043F\u0440\u043E\u0435\u043A\u0442\u0430 (Guid)", hint: "\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435, \u0435\u0441\u043B\u0438 \u043C\u0430\u0440\u0448\u0440\u0443\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 \u043F\u0440\u043E\u0435\u043A\u0442\u0430." }, React.createElement(ui_1.TextInput, { value: projectId, onChange: function (e) { return setProjectId(e.target.value); }, placeholder: "\u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E" })), React.createElement(ui_1.Field, { label: "\u0421\u0442\u0430\u0442\u0443\u0441", required: true }, React.createElement(ui_1.Select, { options: STATUS_OPTIONS, value: status, onChange: function (e) { return setStatus(e.target.value); } }))), React.createElement("div", { style: { marginTop: 18 } }, React.createElement(ui_1.Button, { variant: "accent", icon: "search", onClick: run, disabled: busy }, busy ? 'Проверка...' : 'Проверить'))), error && React.createElement(ui_1.Alert, { kind: "err" }, error), result && (React.createElement(React.Fragment, null, React.createElement(ui_1.Alert, { kind: "ok" }, "\u041C\u0430\u0440\u0448\u0440\u0443\u0442 #", result.routeId, " \u00B7 ", models_1.routeTypeLabels[result.routeType], result.requiresControl ? ' · требуется контроль исполнения' : ''), React.createElement(ui_1.DataTable, { columns: [ { key: 'order', header: '№', width: '50px', render: function (r) { return r.orderNo; } }, { key: 'executor', header: 'Исполнитель', render: function (r) { var _a; return React.createElement(ui_1.PrimaryCell, null, (_a = r.executorEmail) !== null && _a !== void 0 ? _a : '—'); } }, { key: 'position', header: 'Должность', render: function (r) { var _a; return (_a = r.position) !== null && _a !== void 0 ? _a : '—'; } }, { key: 'reassign', header: 'Переназначение', align: 'center', render: function (r) { return (r.allowReassignToOtherApprovers ? 'Разрешено' : 'Нет'); } } ], rows: result.steps, keyOf: function (r) { return r.id; }, emptyMessage: "\u041C\u0430\u0440\u0448\u0440\u0443\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043B\u0441\u044F \u0431\u0435\u0437 \u0448\u0430\u0433\u043E\u0432 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0441\u0442\u0430\u0442\u0443\u0441\u0430." }))))); }; exports.ResolveScreen = ResolveScreen; //# sourceMappingURL=ResolveScreen.js.map