From 76a15c3f4e0fb05191a7dfcaa1a482889ddc9e82 Mon Sep 17 00:00:00 2001
From: elforjani13 <39470382+elforjani13@users.noreply.github.com>
Date: Tue, 8 Feb 2022 20:16:46 +0200
Subject: [PATCH] feat(branche & warehouse activate) add api.
---
.../BranchActivateDialogContent.js | 40 ++----------
.../BranchActivateForm.js | 64 +++++++++++++++++++
.../BranchActivateFormContent.js | 21 ++++++
.../BranchActivateFormFloatingActions.js | 47 ++++++++++++++
.../BranchActivateFormProvider.js | 29 +++++++++
.../WarehouseActivateDialogContent.js | 45 ++-----------
.../WarehouseActivateForm.js | 63 ++++++++++++++++++
.../WarehouseActivateFormContent.js | 22 +++++++
.../WarehouseActivateFormFloatingActions.js | 46 +++++++++++++
.../WarehouseActivateFormProvider.js | 31 +++++++++
10 files changed, 335 insertions(+), 73 deletions(-)
create mode 100644 src/containers/Dialogs/BranchActivateDialog/BranchActivateForm.js
create mode 100644 src/containers/Dialogs/BranchActivateDialog/BranchActivateFormContent.js
create mode 100644 src/containers/Dialogs/BranchActivateDialog/BranchActivateFormFloatingActions.js
create mode 100644 src/containers/Dialogs/BranchActivateDialog/BranchActivateFormProvider.js
create mode 100644 src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateForm.js
create mode 100644 src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormContent.js
create mode 100644 src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormFloatingActions.js
create mode 100644 src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormProvider.js
diff --git a/src/containers/Dialogs/BranchActivateDialog/BranchActivateDialogContent.js b/src/containers/Dialogs/BranchActivateDialog/BranchActivateDialogContent.js
index ab0d71c3f..31c1f8a86 100644
--- a/src/containers/Dialogs/BranchActivateDialog/BranchActivateDialogContent.js
+++ b/src/containers/Dialogs/BranchActivateDialog/BranchActivateDialogContent.js
@@ -1,43 +1,15 @@
import React from 'react';
-import { Intent, Button, Callout, Classes } from '@blueprintjs/core';
-import { DialogContent, T } from 'components';
-import withDialogActions from 'containers/Dialog/withDialogActions';
-import { compose } from 'utils';
+import BranchActivateForm from './BranchActivateForm';
+import { BranchActivateFormProvider } from './BranchActivateFormProvider';
-function BranchActivateDialogContent({
+export default function BranchActivateDialogContent({
// #ownProps
dialogName,
- // #withDialogActions
- closeDialog,
}) {
- // Handle close button click.
- const handleCancelBtnClick = () => {
- closeDialog(dialogName);
- };
return (
-
-
-
- Aute esse eiusmod dolore ipsum dolor sint qui proident pariatur
- proident fugiat ea ad aliquip.
-
-
-
-
+
+
+
);
}
-export default compose(withDialogActions)(BranchActivateDialogContent);
diff --git a/src/containers/Dialogs/BranchActivateDialog/BranchActivateForm.js b/src/containers/Dialogs/BranchActivateDialog/BranchActivateForm.js
new file mode 100644
index 000000000..d5f154a40
--- /dev/null
+++ b/src/containers/Dialogs/BranchActivateDialog/BranchActivateForm.js
@@ -0,0 +1,64 @@
+import React from 'react';
+import intl from 'react-intl-universal';
+
+import { Formik } from 'formik';
+import { Intent } from '@blueprintjs/core';
+
+import { AppToaster } from 'components';
+import { useBranchActivateContext } from './BranchActivateFormProvider';
+import BranchActivateFormContent from './BranchActivateFormContent';
+
+import withDialogActions from 'containers/Dialog/withDialogActions';
+
+import { compose } from 'utils';
+
+/**
+ * Branch activate form.
+ */
+function BranchActivateForm({
+ // #withDialogActions
+ closeDialog,
+}) {
+ const { activateBranches, dialogName } = useBranchActivateContext();
+
+ // Initial form values
+ const initialValues = {};
+
+ // Handles the form submit.
+ const handleFormSubmit = (values, { setSubmitting, setErrors }) => {
+ const form = {
+ ...values,
+ };
+ setSubmitting(true);
+ // Handle request response success.
+ const onSuccess = (response) => {
+ AppToaster.show({
+ message: intl.get('branch_activate.dialog_success_message'),
+ intent: Intent.SUCCESS,
+ });
+ closeDialog(dialogName);
+ };
+
+ // Handle request response errors.
+ const onError = ({
+ response: {
+ data: { errors },
+ },
+ }) => {
+ if (errors) {
+ }
+ setSubmitting(false);
+ };
+ activateBranches(form).then(onSuccess).catch(onError);
+ };
+
+ return (
+
+ );
+}
+
+export default compose(withDialogActions)(BranchActivateForm);
diff --git a/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormContent.js b/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormContent.js
new file mode 100644
index 000000000..e6b7d0169
--- /dev/null
+++ b/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormContent.js
@@ -0,0 +1,21 @@
+import React from 'react';
+import { Form } from 'formik';
+import { Intent, Callout, Classes } from '@blueprintjs/core';
+import BranchActivateFormFloatingActions from './BranchActivateFormFloatingActions';
+
+/**
+ * Branch activate form content.
+ */
+export default function BranchActivateFormContent() {
+ return (
+
+ );
+}
diff --git a/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormFloatingActions.js b/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormFloatingActions.js
new file mode 100644
index 000000000..395758d44
--- /dev/null
+++ b/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormFloatingActions.js
@@ -0,0 +1,47 @@
+import React from 'react';
+import { Intent, Button, Classes } from '@blueprintjs/core';
+import { useFormikContext } from 'formik';
+import { FormattedMessage as T } from 'components';
+
+import { useBranchActivateContext } from './BranchActivateFormProvider';
+import withDialogActions from 'containers/Dialog/withDialogActions';
+import { compose } from 'utils';
+
+/**
+ * branch activate form floating actions.
+ */
+function BranchActivateFormFloatingActions({
+ // #withDialogActions
+ closeDialog,
+}) {
+ // branch activate dialog context.
+ const { dialogName } = useBranchActivateContext();
+
+ // Formik context.
+ const { isSubmitting } = useFormikContext();
+
+ // Handle close button click.
+ const handleCancelBtnClick = () => {
+ closeDialog(dialogName);
+ };
+
+ return (
+
+ );
+}
+
+export default compose(withDialogActions)(BranchActivateFormFloatingActions);
diff --git a/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormProvider.js b/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormProvider.js
new file mode 100644
index 000000000..5e0299b6f
--- /dev/null
+++ b/src/containers/Dialogs/BranchActivateDialog/BranchActivateFormProvider.js
@@ -0,0 +1,29 @@
+import React from 'react';
+
+import { DialogContent } from 'components';
+import { useActivateBranches } from 'hooks/query';
+
+const BranchActivateContext = React.createContext();
+
+/**
+ * Branch activate form provider.
+ */
+function BranchActivateFormProvider({ dialogName, ...props }) {
+ const { mutateAsync: activateBranches, isLoading } = useActivateBranches();
+
+ // State provider.
+ const provider = {
+ activateBranches,
+ dialogName,
+ };
+
+ return (
+
+
+
+ );
+}
+
+const useBranchActivateContext = () => React.useContext(BranchActivateContext);
+
+export { BranchActivateFormProvider, useBranchActivateContext };
diff --git a/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateDialogContent.js b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateDialogContent.js
index c5d481e63..b0950d535 100644
--- a/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateDialogContent.js
+++ b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateDialogContent.js
@@ -1,48 +1,15 @@
import React from 'react';
-import { Intent, Button, Callout, Classes } from '@blueprintjs/core';
-import { DialogContent, T } from 'components';
-import withDialogActions from 'containers/Dialog/withDialogActions';
-import { compose } from 'utils';
+import WarehouseActivateForm from './WarehouseActivateForm';
+import { WarehouseActivateFormProvider } from './WarehouseActivateFormProvider';
-/**
- * Warehouse activate dialog content.
- * @returns
- */
-function WarehouseActivateDialogContent({
+export default function WarehouseActivateDialogContent({
// #ownProps
dialogName,
- // #withDialogActions
- closeDialog,
}) {
- // Handle close button click.
- const handleCancelBtnClick = () => {
- closeDialog(dialogName);
- };
return (
-
-
-
- Aute esse eiusmod dolore ipsum dolor sint qui proident pariatur
- proident fugiat ea ad aliquip.
-
-
-
-
+
+
+
);
}
-
-export default compose(withDialogActions)(WarehouseActivateDialogContent);
diff --git a/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateForm.js b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateForm.js
new file mode 100644
index 000000000..748023d45
--- /dev/null
+++ b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateForm.js
@@ -0,0 +1,63 @@
+import React from 'react';
+import intl from 'react-intl-universal';
+
+import { Formik } from 'formik';
+import { Intent } from '@blueprintjs/core';
+
+import { AppToaster } from 'components';
+import { useWarehouseActivateContext } from './WarehouseActivateFormProvider';
+import WarehouseActivateFormContent from './WarehouseActivateFormContent';
+
+import withDialogActions from 'containers/Dialog/withDialogActions';
+
+import { compose } from 'utils';
+
+/**
+ * warehouse activate form.
+ */
+function WarehouseActivateForm({
+ // #withDialogActions
+ closeDialog,
+}) {
+ const { activateWarehouses, dialogName } = useWarehouseActivateContext();
+
+ // Initial form values
+ const initialValues = {};
+
+ // Handles the form submit.
+ const handleFormSubmit = (values, { setSubmitting, setErrors }) => {
+ const form = {
+ ...values,
+ };
+ setSubmitting(true);
+ // Handle request response success.
+ const onSuccess = (response) => {
+ AppToaster.show({
+ message: intl.get('warehouse_activate.dialog_success_message'),
+ intent: Intent.SUCCESS,
+ });
+ closeDialog(dialogName);
+ };
+
+ // Handle request response errors.
+ const onError = ({
+ response: {
+ data: { errors },
+ },
+ }) => {
+ if (errors) {
+ }
+ setSubmitting(false);
+ };
+ activateWarehouses(form).then(onSuccess).catch(onError);
+ };
+
+ return (
+
+ );
+}
+export default compose(withDialogActions)(WarehouseActivateForm);
diff --git a/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormContent.js b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormContent.js
new file mode 100644
index 000000000..137142a05
--- /dev/null
+++ b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormContent.js
@@ -0,0 +1,22 @@
+import React from 'react';
+import { Form } from 'formik';
+import { Intent, Callout, Classes } from '@blueprintjs/core';
+
+import WarehouseActivateFormFloatingActions from './WarehouseActivateFormFloatingActions';
+
+/**
+ * warehouse activate form content.
+ */
+export default function WarehouseActivateFormContent() {
+ return (
+
+ );
+}
diff --git a/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormFloatingActions.js b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormFloatingActions.js
new file mode 100644
index 000000000..ab6444268
--- /dev/null
+++ b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormFloatingActions.js
@@ -0,0 +1,46 @@
+import React from 'react';
+import { Intent, Button, Classes } from '@blueprintjs/core';
+import { useFormikContext } from 'formik';
+import { FormattedMessage as T } from 'components';
+
+import { useWarehouseActivateContext } from './WarehouseActivateFormProvider';
+import withDialogActions from 'containers/Dialog/withDialogActions';
+import { compose } from 'utils';
+
+/**
+ * warehouse activate form floating actions.
+ */
+function WarehouseActivateFormFloatingActions({
+ // #withDialogActions
+ closeDialog,
+}) {
+ // warehouse activate dialog context.
+ const { dialogName } = useWarehouseActivateContext();
+
+ // Formik context.
+ const { isSubmitting } = useFormikContext();
+
+ // Handle close button click.
+ const handleCancelBtnClick = () => {
+ closeDialog(dialogName);
+ };
+
+ return (
+
+ );
+}
+export default compose(withDialogActions)(WarehouseActivateFormFloatingActions);
diff --git a/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormProvider.js b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormProvider.js
new file mode 100644
index 000000000..5d8b84a40
--- /dev/null
+++ b/src/containers/Dialogs/WarehouseActivateDialog/WarehouseActivateFormProvider.js
@@ -0,0 +1,31 @@
+import React from 'react';
+
+import { DialogContent } from 'components';
+import { useActivateWarehouses } from 'hooks/query';
+
+const WarehouseActivateContext = React.createContext();
+
+/**
+ * warehouse activate form provider.
+ */
+function WarehouseActivateFormProvider({ dialogName, ...props }) {
+ const { mutateAsync: activateWarehouses, isLoading } =
+ useActivateWarehouses();
+
+ // State provider.
+ const provider = {
+ activateWarehouses,
+ dialogName,
+ };
+
+ return (
+
+
+
+ );
+}
+
+const useWarehouseActivateContext = () =>
+ React.useContext(WarehouseActivateContext);
+
+export { WarehouseActivateFormProvider, useWarehouseActivateContext };