|
@@ -116,6 +116,7 @@ import { userStore } from "src/stores/user";
|
|
|
import { getPartnerAgreements, importParceiros, importConveniosMedicos } from "src/api/partnerAgreement";
|
|
import { getPartnerAgreements, importParceiros, importConveniosMedicos } from "src/api/partnerAgreement";
|
|
|
import { getCategories } from "src/api/category";
|
|
import { getCategories } from "src/api/category";
|
|
|
import { normalizeString } from "src/helpers/utils";
|
|
import { normalizeString } from "src/helpers/utils";
|
|
|
|
|
+import { useImportPoller } from "src/composables/useImportPoller";
|
|
|
import DefaultHeaderPage from "src/components/layout/DefaultHeaderPage.vue";
|
|
import DefaultHeaderPage from "src/components/layout/DefaultHeaderPage.vue";
|
|
|
import PartnerAgreementCard from "./components/PartnerAgreementCard.vue";
|
|
import PartnerAgreementCard from "./components/PartnerAgreementCard.vue";
|
|
|
|
|
|
|
@@ -130,10 +131,10 @@ const allPartners = ref([]);
|
|
|
const categories = ref([]);
|
|
const categories = ref([]);
|
|
|
const activeCategory = ref("all");
|
|
const activeCategory = ref("all");
|
|
|
const searchQuery = ref("");
|
|
const searchQuery = ref("");
|
|
|
-const importingParceiros = ref(false);
|
|
|
|
|
-const importingConvenios = ref(false);
|
|
|
|
|
-const importParceiroInput = useTemplateRef("importParceiroInput");
|
|
|
|
|
|
|
+const importParceiroInput = useTemplateRef("importParceiroInput");
|
|
|
const importConveniosInput = useTemplateRef("importConveniosInput");
|
|
const importConveniosInput = useTemplateRef("importConveniosInput");
|
|
|
|
|
+const { polling: importingParceiros, start: startParceiroPolling } = useImportPoller();
|
|
|
|
|
+const { polling: importingConvenios, start: startConveniosPolling } = useImportPoller();
|
|
|
|
|
|
|
|
const filteredPartners = computed(() => {
|
|
const filteredPartners = computed(() => {
|
|
|
let list = allPartners.value;
|
|
let list = allPartners.value;
|
|
@@ -200,23 +201,27 @@ const onParceiroFileSelected = async (event) => {
|
|
|
const file = event.target.files?.[0];
|
|
const file = event.target.files?.[0];
|
|
|
if (!file) return;
|
|
if (!file) return;
|
|
|
|
|
|
|
|
- importingParceiros.value = true;
|
|
|
|
|
try {
|
|
try {
|
|
|
- const stats = await importParceiros(file);
|
|
|
|
|
- $q.notify({
|
|
|
|
|
- type: "positive",
|
|
|
|
|
- message: t("parceiro.import_parceiros_result", {
|
|
|
|
|
- created: stats.created,
|
|
|
|
|
- updated: stats.updated,
|
|
|
|
|
- inactivated: stats.inactivated,
|
|
|
|
|
- }),
|
|
|
|
|
- timeout: 7000,
|
|
|
|
|
|
|
+ const { import_id } = await importParceiros(file);
|
|
|
|
|
+
|
|
|
|
|
+ startParceiroPolling(import_id, {
|
|
|
|
|
+ onComplete: async (stats) => {
|
|
|
|
|
+ $q.notify({
|
|
|
|
|
+ type: "positive",
|
|
|
|
|
+ message: t("parceiro.import_parceiros_result", {
|
|
|
|
|
+ created: stats.created,
|
|
|
|
|
+ updated: stats.updated,
|
|
|
|
|
+ inactivated: stats.inactivated,
|
|
|
|
|
+ }),
|
|
|
|
|
+ timeout: 7000,
|
|
|
|
|
+ });
|
|
|
|
|
+ await loadPartners();
|
|
|
|
|
+ },
|
|
|
|
|
+ onError: () => $q.notify({ type: "negative", message: t("http.errors.failed") }),
|
|
|
|
|
+ onTimeout: () => $q.notify({ type: "warning", message: t("parceiro.import_processing") }),
|
|
|
});
|
|
});
|
|
|
- await loadPartners();
|
|
|
|
|
} catch {
|
|
} catch {
|
|
|
$q.notify({ type: "negative", message: t("http.errors.failed") });
|
|
$q.notify({ type: "negative", message: t("http.errors.failed") });
|
|
|
- } finally {
|
|
|
|
|
- importingParceiros.value = false;
|
|
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -224,23 +229,27 @@ const onConveniosFileSelected = async (event) => {
|
|
|
const file = event.target.files?.[0];
|
|
const file = event.target.files?.[0];
|
|
|
if (!file) return;
|
|
if (!file) return;
|
|
|
|
|
|
|
|
- importingConvenios.value = true;
|
|
|
|
|
try {
|
|
try {
|
|
|
- const stats = await importConveniosMedicos(file);
|
|
|
|
|
- $q.notify({
|
|
|
|
|
- type: "positive",
|
|
|
|
|
- message: t("parceiro.import_convenios_result", {
|
|
|
|
|
- partners_created: stats.partners_created,
|
|
|
|
|
- services_created: stats.services_created,
|
|
|
|
|
- partners_inactivated: stats.partners_inactivated,
|
|
|
|
|
- }),
|
|
|
|
|
- timeout: 7000,
|
|
|
|
|
|
|
+ const { import_id } = await importConveniosMedicos(file);
|
|
|
|
|
+
|
|
|
|
|
+ startConveniosPolling(import_id, {
|
|
|
|
|
+ onComplete: async (stats) => {
|
|
|
|
|
+ $q.notify({
|
|
|
|
|
+ type: "positive",
|
|
|
|
|
+ message: t("parceiro.import_convenios_result", {
|
|
|
|
|
+ partners_created: stats.partners_created,
|
|
|
|
|
+ services_created: stats.services_created,
|
|
|
|
|
+ partners_inactivated: stats.partners_inactivated,
|
|
|
|
|
+ }),
|
|
|
|
|
+ timeout: 7000,
|
|
|
|
|
+ });
|
|
|
|
|
+ await loadPartners();
|
|
|
|
|
+ },
|
|
|
|
|
+ onError: () => $q.notify({ type: "negative", message: t("http.errors.failed") }),
|
|
|
|
|
+ onTimeout: () => $q.notify({ type: "warning", message: t("parceiro.import_processing") }),
|
|
|
});
|
|
});
|
|
|
- await loadPartners();
|
|
|
|
|
} catch {
|
|
} catch {
|
|
|
$q.notify({ type: "negative", message: t("http.errors.failed") });
|
|
$q.notify({ type: "negative", message: t("http.errors.failed") });
|
|
|
- } finally {
|
|
|
|
|
- importingConvenios.value = false;
|
|
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|