From de4811ce8d2e739901c047f39e9b4b7c18298e74 Mon Sep 17 00:00:00 2001
From: eug-vs <eug-vs@keemail.me>
Date: Sun, 14 Mar 2021 07:05:45 +0300
Subject: feat: add Contractors section

---
 src/containers/ContractorForm.tsx | 52 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 src/containers/ContractorForm.tsx

(limited to 'src/containers/ContractorForm.tsx')

diff --git a/src/containers/ContractorForm.tsx b/src/containers/ContractorForm.tsx
new file mode 100644
index 0000000..7f0d660
--- /dev/null
+++ b/src/containers/ContractorForm.tsx
@@ -0,0 +1,52 @@
+import React from 'react';
+import { useParams, useHistory } from 'react-router-dom';
+import { Formik, Form, Field } from 'formik';
+import Page, { Action } from './Page';
+import Input from '../components/Input';
+import { useContractor } from '../hooks/useAPIClient';
+import { post, patch } from '../requests';
+
+interface Params {
+  id: string;
+}
+
+const actions: Action[] = [
+  { name: 'Назад', variant: 'outlined', route: '..' },
+  { name: 'Сохранить', type: 'submit', form: 'contractorForm' },
+];
+
+const ContractorForm: React.FC = () => {
+  const history = useHistory();
+  const { id } = useParams<Params>();
+  const { data: contractor } = useContractor(id);
+
+  const onSubmit = (values: any) => {
+    const promise = id
+      ? patch(`/contractors/${id}`, values)
+      : post('/contractors', values);
+    return promise.then(() => history.push('/contractors'));
+  };
+
+  return (
+    <Page title={id ? contractor?.name : 'Новый контрагент'} actions={actions}>
+      {(!id || contractor) && (
+        <Formik
+          initialValues={contractor || { name: '', debt: '', vatId: '' }}
+          onSubmit={onSubmit}
+        >
+          {() => (
+            <Form id="contractorForm">
+              <div className="max-w-lg">
+                <Field name="name" label="Название" as={Input} />
+                <Field name="vatId" label="УНП" as={Input} />
+                <Field name="debt" type="number" label="Долг ($)" as={Input} />
+              </div>
+            </Form>
+          )}
+        </Formik>
+      )}
+    </Page>
+  );
+};
+
+export default ContractorForm;
-- 
cgit v1.2.3

