HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/self/root/home/arjun/projects/buyercall/buyercall/assets/vue/widgets/Manage_Source/index.vue
<template>
  <breadcrumb
    :rootState="rootState"
    :breadCrumbs="breadCrumbs"
    @onpropagate="onNavPropagate"
  >
    <div class="height-set">
      <div class="spinner-main">
        <Loader :loading="widgetLoading"> </Loader>
      </div>
      <source-list
        v-if="!widgetLoading"
        :sources="sources"
        :loading="sourceLoading"
        @onEdit="onSourceEditClick"
        @onAddButtonClicked="showModal"
      ></source-list>
      <b-modal
        v-model="showSourceEditModal"
        dialog-class="modal-dialog-slideout"
        :hide-footer="true"
        content-class="rounded-0"
        id="source-modal"
        @hide="customCloseMethod"
      >
        <template #modal-header>
          <button type="button" class="btn btn-primary" @click="closeAddEditModal">
            <i class="bx bx-left-arrow-alt font-size-16 align-middle me-2"></i>
            Close
          </button>
        </template>
        <source-edit
          :selectedSourceID="selectedSourceID"
          :AddUser="isAddUser"
          @formSubmit="formSubmit"
          @cancel="cancelmodal"
          :addEditSourceLoading="addEditSourceLoading"
        ></source-edit>
      </b-modal>
    </div>
  </breadcrumb>
</template>

<script>
import { mapActions, mapGetters } from "vuex";

import Loader from "../../components/Loader/loader.vue";
import Breadcrumb from "../../components/Breadcrumb.vue";
import moment from "moment";
import SourceList from "./components/SourceList.vue";
import SourceEdit from "./components/SourceEdit.vue";
import {
  ROOT_GETTER,
  ROOT_ACTION_RESET_SUCCESS_AND_ERROR_MESSAGE,
  ROOT_GETTER_GET_BREADCRUMBS,
  ROOT_ACTION_SET_ERROR_MESSAGE,
  ROOT_ACTION_SET_SUCCESS_MESSAGE,
} from "./constants";
import { toastConfig } from "../../utils/util";
import SourceService from "../../service/source";
import { BModal } from "bootstrap-vue-next";

export default {
  data() {
    return {
      sources: [],
      sourceLoading: false,
      agents: [],
      isAddUser: true,
      agentsLoading: false,
      showSourceEditModal: false,
      selectedSourceID: null,
      addEditSourceLoading: false,
    };
  },
  mounted() {
    console.log(
      "source-edit",
      this.selectedSourceID,
      ".......",
      this.addEditSourceLoading
    );
    this.getSources();
    this.getAgents();
  },
  computed: {
    ...mapGetters("root", {
      rootState: ROOT_GETTER,
      breadCrumbs: ROOT_GETTER_GET_BREADCRUMBS,
    }),
    successMessage() {
      return this.rootState.successMessage;
    },
    errorMessage() {
      return this.rootState.errorMessage;
    },
    widgetLoading() {
      return this.agentsLoading;
    },
  },
  methods: {
    showModal() {
      console.log("showModal");
      this.showSourceEditModal = true;
      this.isAddUser = true;
    },

    customCloseMethod() {
      console.log("custommodalll");
      this.showSourceEditModal = false;
      this.isAddUser = false;
    },
    cancelmodal() {
      console.log("cancelmodal");
      this.showSourceEditModal = false;
      this.isAddUser = false;
    },
    async formSubmit(formData) {
      this.addEditSourceLoading = true;
      if (this.selectedSourceID) {
        const {
          data: { message, success },
        } = await SourceService.updateSource(this.selectedSourceID, formData);
        if (!success) {
          this.setErrorMessage(message);
        } else {
          this.setSuccessMessage(message);
          this.selectedSourceID = null;
          this.showSourceEditModal = false;
          this.getSources();
        }
      } else {
        const {
          data: { message, success },
        } = await SourceService.createSource(formData);
        if (!success) {
          this.setErrorMessage(message);
        } else {
          this.setSuccessMessage(message);
          this.selectedSourceID = null;
          this.showSourceEditModal = false;
          this.getSources();
        }
      }

      this.addEditSourceLoading = false;
    },
    onSourceEditClick(v) {
      this.selectedSourceID = v;
      this.showSourceEditModal = true;
      this.isAddUser = false;
    },
    async getSources() {
      console.log("getSources");
      this.sourceLoading = true;
      const {
        data: { data, message, success },
      } = await SourceService.getSources();
      if (!success) {
        this.setErrorMessage(message);
      } else {
        this.sources = _.map(data, (d) => ({
          ...d,
          createdOn: moment(d.created_at).format("MMM Do"),
          updatedOn: moment(d.updated_at).format("MMM Do"),
        }));
      }
      this.sourceLoading = false;
    },
    async getAgents() {
      this.agentsLoading = true;
      const {
        data: { data, message, success },
      } = await SourceService.getAgents();
      if (!success) {
        this.setErrorMessage(message);
      } else {
        this.agents = data;
      }
      this.agentsLoading = false;
    },
    addEditSource() {},
    closeAddEditModal() {
      this.showSourceEditModal = false;
      this.selectedSourceID = null;
    },
    ...mapActions("root", {
      resetToastMessages: ROOT_ACTION_RESET_SUCCESS_AND_ERROR_MESSAGE,
      setErrorMessage: ROOT_ACTION_SET_ERROR_MESSAGE,
      setSuccessMessage: ROOT_ACTION_SET_SUCCESS_MESSAGE,
    }),
    onNavPropagate() {},
  },
  components: {
    Breadcrumb,
    Loader,
    SourceList,
    SourceEdit,
    BModal,
  },
  watch: {
    successMessage(v) {
      if (v !== null) {
        this.$toast.open(toastConfig.toastSuccess(v));
        this.resetToastMessages();
      }
    },
    errorMessage(v) {
      if (v !== null) {
        this.$toast.open(toastConfig.toastError(v));
        this.resetToastMessages();
      }
    },
  },
};
</script>