IO-948 Vendor add to phonebook

This commit is contained in:
Patrick Fic
2021-04-28 07:37:07 -07:00
parent 2e7ecfebe9
commit f4ec377da4
10 changed files with 295 additions and 3 deletions

View File

@@ -27022,6 +27022,53 @@
</concept_node>
</children>
</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>
<name>fields</name>
<children>
@@ -27300,9 +27347,77 @@
</concept_node>
</children>
</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>
<name>successes</name>
<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>
<name>saved</name>
<definition_loaded>false</definition_loaded>
@@ -34534,6 +34649,27 @@
<folder_node>
<name>actions</name>
<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>
<name>new</name>
<definition_loaded>false</definition_loaded>

View File

@@ -77,7 +77,7 @@ function PhonebookFormContainer({ refetch, bodyshop }) {
if (!result.errors) {
notification["success"]({
message: t("Phonebook.successes.saved"),
message: t("phonebook.successes.saved"),
});
if (refetch) await refetch();
@@ -87,7 +87,9 @@ function PhonebookFormContainer({ refetch, bodyshop }) {
setFormLoading(false);
} else {
notification["error"]({
message: t("Phonebook.errors.saving"),
message: t("phonebook.errors.saving", {
error: JSON.stringify(result.errors),
}),
});
setFormLoading(false);

View File

@@ -20,6 +20,7 @@ import PhoneFormItem, {
PhoneItemFormatterValidation,
} from "../form-items-formatted/phone-form-item.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({
form,
formLoading,
@@ -53,6 +54,11 @@ export default function VendorsFormComponent({
<Button type="danger" onClick={handleDelete} loading={formLoading}>
{t("general.actions.delete")}
</Button>
<VendorsPhonebookAdd
form={form}
disabled={form.isFieldsTouched()}
/>
</Space>
}
/>

View File

@@ -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>
);
}

View File

@@ -1618,6 +1618,10 @@
"actions": {
"new": "New Phonebook Entry"
},
"errors": {
"adding": "Error adding phonebook entry. {{error}}",
"saving": "Error saving phonebook entry. {{error}}"
},
"fields": {
"category": "Category",
"city": "City",
@@ -1633,8 +1637,13 @@
"street1": "Street 1",
"street2": "Street 2"
},
"labels": {
"vendorcategory": "Vendor"
},
"successes": {
"saved": ""
"added": "Phonebook entry added successfully. ",
"deleted": "Phonebook entry deleted successfully. ",
"saved": "Phonebook entry saved successfully. "
}
},
"printcenter": {
@@ -2077,6 +2086,7 @@
},
"vendors": {
"actions": {
"addtophonebook": "Add to Phonebook",
"new": "New Vendor",
"newpreferredmake": "New Preferred Make"
},

View File

@@ -1618,6 +1618,10 @@
"actions": {
"new": ""
},
"errors": {
"adding": "",
"saving": ""
},
"fields": {
"category": "",
"city": "",
@@ -1633,7 +1637,12 @@
"street1": "",
"street2": ""
},
"labels": {
"vendorcategory": ""
},
"successes": {
"added": "",
"deleted": "",
"saved": ""
}
},
@@ -2077,6 +2086,7 @@
},
"vendors": {
"actions": {
"addtophonebook": "",
"new": "Nuevo vendedor",
"newpreferredmake": ""
},

View File

@@ -1618,6 +1618,10 @@
"actions": {
"new": ""
},
"errors": {
"adding": "",
"saving": ""
},
"fields": {
"category": "",
"city": "",
@@ -1633,7 +1637,12 @@
"street1": "",
"street2": ""
},
"labels": {
"vendorcategory": ""
},
"successes": {
"added": "",
"deleted": "",
"saved": ""
}
},
@@ -2077,6 +2086,7 @@
},
"vendors": {
"actions": {
"addtophonebook": "",
"new": "Nouveau vendeur",
"newpreferredmake": ""
},

View File

@@ -0,0 +1,6 @@
- args:
role: user
table:
name: phonebook
schema: public
type: drop_delete_permission

View File

@@ -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

View File

@@ -3886,6 +3886,18 @@ tables:
- active:
_eq: true
check: null
delete_permissions:
- role: user
permission:
filter:
bodyshop:
associations:
_and:
- user:
authid:
_eq: X-Hasura-User-Id
- active:
_eq: true
- table:
schema: public
name: scoreboard