Skip to content

Commit

Permalink
Add: select organizations when creating provider
Browse files Browse the repository at this point in the history
  • Loading branch information
georgipavlov-7DIGIT committed Sep 2, 2024
1 parent 7af5bb0 commit 1343b47
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
39 changes: 39 additions & 0 deletions src/blocks/CreateProvider/CreateProvider.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
useGetCountryAndLanguages,
useGetWorkWithCategories,
useCreateProvider,
useGetAllOrganizations,
} from "#hooks";
import Joi from "joi";

Expand All @@ -49,6 +50,7 @@ const initialData = {
languages: [],
workWith: [],
videoLink: "",
organizations: [],
};

/**s
Expand All @@ -75,6 +77,8 @@ export const CreateProvider = ({

const localizationQuery = useGetCountryAndLanguages();
const workWithQuery = useGetWorkWithCategories();
const { data: organizations, isLoading: organizationsLoading } =
useGetAllOrganizations();

const [errors, setErrors] = useState({});

Expand Down Expand Up @@ -108,6 +112,7 @@ export const CreateProvider = ({
totalConsultations: Joi.any(),
earliestAvailableSlot: Joi.any(),
videoLink: Joi.string().uri().allow("", null),
organizations: Joi.array().min(1).label(t("organizations_error")),
});

const sexOptions = [
Expand Down Expand Up @@ -183,6 +188,29 @@ export const CreateProvider = ({
return workWithOptions;
}, [workWithQuery.data, providerData]);

const getOrganizationOptions = useCallback(() => {
const organizationOptions = [];
if (organizations && providerData) {
const providerOrganizations = providerData.organizations.map(
(x) => x.organization_id || x
);
for (let i = 0; i < organizations.length; i++) {
const newOrganizationOption = {};
const organization = organizations[i];
newOrganizationOption.value = organization.organization_id;
newOrganizationOption.label = organization.name;
newOrganizationOption.selected = providerOrganizations.includes(
organization.organization_id
);
newOrganizationOption.selectedIndex = providerOrganizations.indexOf(
organization.organization_id
);
organizationOptions.push(newOrganizationOption);
}
}
return organizationOptions;
});

const handleChange = (field, value) => {
const data = { ...providerData };
data[field] = value;
Expand Down Expand Up @@ -409,6 +437,17 @@ export const CreateProvider = ({
}}
errorMessage={errors.workWith}
/>
<Select
placeholder={t("select")}
options={getOrganizationOptions()}
handleChange={(organizations) =>
handleWorkWithAndLanguageSelect("organizations", organizations)
}
label={t("organizations_label") + " *"}
maxShown={5}
addMoreText={t("add_more_organizations")}
errorMessage={errors.organizations}
/>
</GridItem>
<GridItem md={8} lg={12} classes="create-provider__grid__button-item">
{errors.submit ? <Error message={errors.submit} /> : null}
Expand Down
8 changes: 8 additions & 0 deletions src/hooks/useCreateProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ export default function useCreateProvider(onSuccess, onError) {
}
});

newPayload.organizationIds = newPayload.organizations.map((item) => {
if (typeof item === "object") {
return item.organization_id;
}
return item;
});

newPayload.consultationPrice = Number(newPayload.consultationPrice);
newPayload.email = newPayload.email.toLowerCase();
newPayload.password = "Password1";
Expand All @@ -34,6 +41,7 @@ export default function useCreateProvider(onSuccess, onError) {
delete newPayload.image;
delete newPayload.totalConsultations;
delete newPayload.earliestAvailableSlot;
delete newPayload.organizations;
return newPayload;
};

Expand Down

0 comments on commit 1343b47

Please sign in to comment.