IO-948 Vendor add to phonebook
This commit is contained in:
@@ -27022,6 +27022,53 @@
|
|||||||
</concept_node>
|
</concept_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>errors</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>adding</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>saving</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
<folder_node>
|
<folder_node>
|
||||||
<name>fields</name>
|
<name>fields</name>
|
||||||
<children>
|
<children>
|
||||||
@@ -27300,9 +27347,77 @@
|
|||||||
</concept_node>
|
</concept_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>labels</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>vendorcategory</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
<folder_node>
|
<folder_node>
|
||||||
<name>successes</name>
|
<name>successes</name>
|
||||||
<children>
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>added</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>deleted</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>saved</name>
|
<name>saved</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -34534,6 +34649,27 @@
|
|||||||
<folder_node>
|
<folder_node>
|
||||||
<name>actions</name>
|
<name>actions</name>
|
||||||
<children>
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>addtophonebook</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>new</name>
|
<name>new</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ function PhonebookFormContainer({ refetch, bodyshop }) {
|
|||||||
|
|
||||||
if (!result.errors) {
|
if (!result.errors) {
|
||||||
notification["success"]({
|
notification["success"]({
|
||||||
message: t("Phonebook.successes.saved"),
|
message: t("phonebook.successes.saved"),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (refetch) await refetch();
|
if (refetch) await refetch();
|
||||||
@@ -87,7 +87,9 @@ function PhonebookFormContainer({ refetch, bodyshop }) {
|
|||||||
setFormLoading(false);
|
setFormLoading(false);
|
||||||
} else {
|
} else {
|
||||||
notification["error"]({
|
notification["error"]({
|
||||||
message: t("Phonebook.errors.saving"),
|
message: t("phonebook.errors.saving", {
|
||||||
|
error: JSON.stringify(result.errors),
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
setFormLoading(false);
|
setFormLoading(false);
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import PhoneFormItem, {
|
|||||||
PhoneItemFormatterValidation,
|
PhoneItemFormatterValidation,
|
||||||
} from "../form-items-formatted/phone-form-item.component";
|
} from "../form-items-formatted/phone-form-item.component";
|
||||||
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
||||||
|
import VendorsPhonebookAdd from "../vendors-phonebook-add/vendors-phonebook-add.component";
|
||||||
export default function VendorsFormComponent({
|
export default function VendorsFormComponent({
|
||||||
form,
|
form,
|
||||||
formLoading,
|
formLoading,
|
||||||
@@ -53,6 +54,11 @@ export default function VendorsFormComponent({
|
|||||||
<Button type="danger" onClick={handleDelete} loading={formLoading}>
|
<Button type="danger" onClick={handleDelete} loading={formLoading}>
|
||||||
{t("general.actions.delete")}
|
{t("general.actions.delete")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
<VendorsPhonebookAdd
|
||||||
|
form={form}
|
||||||
|
disabled={form.isFieldsTouched()}
|
||||||
|
/>
|
||||||
</Space>
|
</Space>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
import { Button, notification } from "antd";
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import { connect } from "react-redux";
|
||||||
|
import { createStructuredSelector } from "reselect";
|
||||||
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { useMutation } from "@apollo/client";
|
||||||
|
import { INSERT_NEW_PHONEBOOK } from "../../graphql/phonebook.queries";
|
||||||
|
|
||||||
|
const mapStateToProps = createStructuredSelector({
|
||||||
|
bodyshop: selectBodyshop,
|
||||||
|
});
|
||||||
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
|
//setUserLanguage: language => dispatch(setUserLanguage(language))
|
||||||
|
});
|
||||||
|
export default connect(
|
||||||
|
mapStateToProps,
|
||||||
|
mapDispatchToProps
|
||||||
|
)(VendorsPhonebookAdd);
|
||||||
|
|
||||||
|
export function VendorsPhonebookAdd({ form, bodyshop, disabled }) {
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
|
const [insertPhonebook] = useMutation(INSERT_NEW_PHONEBOOK);
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const handleAdd = async () => {
|
||||||
|
setLoading(true);
|
||||||
|
|
||||||
|
const VendorValues = form.getFieldsValue([
|
||||||
|
"name",
|
||||||
|
"email",
|
||||||
|
"phone",
|
||||||
|
"street1",
|
||||||
|
"street2",
|
||||||
|
"city",
|
||||||
|
"state",
|
||||||
|
"zip",
|
||||||
|
"country",
|
||||||
|
]);
|
||||||
|
console.log(`VendorValues`, VendorValues);
|
||||||
|
const result = await insertPhonebook({
|
||||||
|
variables: {
|
||||||
|
phonebook_entry: [
|
||||||
|
{
|
||||||
|
//The phonebook obj,
|
||||||
|
bodyshopid: bodyshop.id,
|
||||||
|
company: VendorValues.name,
|
||||||
|
category: t("phonebook.labels.vendorcategory"),
|
||||||
|
address1: VendorValues.street1,
|
||||||
|
address2: VendorValues.street2,
|
||||||
|
city: VendorValues.city,
|
||||||
|
state: VendorValues.state,
|
||||||
|
zip: VendorValues.zip,
|
||||||
|
country: VendorValues.country,
|
||||||
|
phone1: VendorValues.phone,
|
||||||
|
email: VendorValues.email,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (result.errors) {
|
||||||
|
notification.open({
|
||||||
|
type: "error",
|
||||||
|
message: t("phonebook.errors.adding", {
|
||||||
|
error: JSON.stringify(result.errors),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
notification.open({
|
||||||
|
type: "success",
|
||||||
|
message: t("phonebook.successes.added"),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
setLoading(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Button onClick={handleAdd} loading={loading} disabled={disabled}>
|
||||||
|
{t("vendors.actions.addtophonebook")}
|
||||||
|
</Button>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1618,6 +1618,10 @@
|
|||||||
"actions": {
|
"actions": {
|
||||||
"new": "New Phonebook Entry"
|
"new": "New Phonebook Entry"
|
||||||
},
|
},
|
||||||
|
"errors": {
|
||||||
|
"adding": "Error adding phonebook entry. {{error}}",
|
||||||
|
"saving": "Error saving phonebook entry. {{error}}"
|
||||||
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"category": "Category",
|
"category": "Category",
|
||||||
"city": "City",
|
"city": "City",
|
||||||
@@ -1633,8 +1637,13 @@
|
|||||||
"street1": "Street 1",
|
"street1": "Street 1",
|
||||||
"street2": "Street 2"
|
"street2": "Street 2"
|
||||||
},
|
},
|
||||||
|
"labels": {
|
||||||
|
"vendorcategory": "Vendor"
|
||||||
|
},
|
||||||
"successes": {
|
"successes": {
|
||||||
"saved": ""
|
"added": "Phonebook entry added successfully. ",
|
||||||
|
"deleted": "Phonebook entry deleted successfully. ",
|
||||||
|
"saved": "Phonebook entry saved successfully. "
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"printcenter": {
|
"printcenter": {
|
||||||
@@ -2077,6 +2086,7 @@
|
|||||||
},
|
},
|
||||||
"vendors": {
|
"vendors": {
|
||||||
"actions": {
|
"actions": {
|
||||||
|
"addtophonebook": "Add to Phonebook",
|
||||||
"new": "New Vendor",
|
"new": "New Vendor",
|
||||||
"newpreferredmake": "New Preferred Make"
|
"newpreferredmake": "New Preferred Make"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1618,6 +1618,10 @@
|
|||||||
"actions": {
|
"actions": {
|
||||||
"new": ""
|
"new": ""
|
||||||
},
|
},
|
||||||
|
"errors": {
|
||||||
|
"adding": "",
|
||||||
|
"saving": ""
|
||||||
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"category": "",
|
"category": "",
|
||||||
"city": "",
|
"city": "",
|
||||||
@@ -1633,7 +1637,12 @@
|
|||||||
"street1": "",
|
"street1": "",
|
||||||
"street2": ""
|
"street2": ""
|
||||||
},
|
},
|
||||||
|
"labels": {
|
||||||
|
"vendorcategory": ""
|
||||||
|
},
|
||||||
"successes": {
|
"successes": {
|
||||||
|
"added": "",
|
||||||
|
"deleted": "",
|
||||||
"saved": ""
|
"saved": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2077,6 +2086,7 @@
|
|||||||
},
|
},
|
||||||
"vendors": {
|
"vendors": {
|
||||||
"actions": {
|
"actions": {
|
||||||
|
"addtophonebook": "",
|
||||||
"new": "Nuevo vendedor",
|
"new": "Nuevo vendedor",
|
||||||
"newpreferredmake": ""
|
"newpreferredmake": ""
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1618,6 +1618,10 @@
|
|||||||
"actions": {
|
"actions": {
|
||||||
"new": ""
|
"new": ""
|
||||||
},
|
},
|
||||||
|
"errors": {
|
||||||
|
"adding": "",
|
||||||
|
"saving": ""
|
||||||
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"category": "",
|
"category": "",
|
||||||
"city": "",
|
"city": "",
|
||||||
@@ -1633,7 +1637,12 @@
|
|||||||
"street1": "",
|
"street1": "",
|
||||||
"street2": ""
|
"street2": ""
|
||||||
},
|
},
|
||||||
|
"labels": {
|
||||||
|
"vendorcategory": ""
|
||||||
|
},
|
||||||
"successes": {
|
"successes": {
|
||||||
|
"added": "",
|
||||||
|
"deleted": "",
|
||||||
"saved": ""
|
"saved": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2077,6 +2086,7 @@
|
|||||||
},
|
},
|
||||||
"vendors": {
|
"vendors": {
|
||||||
"actions": {
|
"actions": {
|
||||||
|
"addtophonebook": "",
|
||||||
"new": "Nouveau vendeur",
|
"new": "Nouveau vendeur",
|
||||||
"newpreferredmake": ""
|
"newpreferredmake": ""
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: phonebook
|
||||||
|
schema: public
|
||||||
|
type: drop_delete_permission
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
backend_only: false
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: phonebook
|
||||||
|
schema: public
|
||||||
|
type: create_delete_permission
|
||||||
@@ -3886,6 +3886,18 @@ tables:
|
|||||||
- active:
|
- active:
|
||||||
_eq: true
|
_eq: true
|
||||||
check: null
|
check: null
|
||||||
|
delete_permissions:
|
||||||
|
- role: user
|
||||||
|
permission:
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
- table:
|
- table:
|
||||||
schema: public
|
schema: public
|
||||||
name: scoreboard
|
name: scoreboard
|
||||||
|
|||||||
Reference in New Issue
Block a user