You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

editTimeShareAdminPage.vue 34KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957
  1. <template>
  2. <main id="main">
  3. <div v-if="wait" id="preloader"></div>
  4. <section v-else id="contact2">
  5. <div class="container">
  6. <div class="row">
  7. <div class="col-lg-12">
  8. <div class="section-header">
  9. <h2>Week Information</h2>
  10. </div>
  11. <div align="left" class="custom-control custom-switch mb-2">
  12. <div class="row">
  13. <div align="center" class="col"></div>
  14. </div>
  15. </div>
  16. <div class="form">
  17. <div id="sendmessage">Your details has been sent. Thank you!</div>
  18. <div id="errormessage"></div>
  19. <div class="form-row">
  20. <div class="form-group col-md-6">
  21. <div class="input-group">
  22. <label v-if="!selectedRegion" class="uniSelectLabel" for="weekInfoRegionSelect"
  23. >REGION</label
  24. >
  25. </div>
  26. <float-label label="REGION" fixed>
  27. <select
  28. class="form-control uniSelect"
  29. v-model="selectedRegion"
  30. style="font-size: 15px"
  31. >
  32. <option v-for="(region, r) in regions" :key="r" :value="region.regionCode">
  33. {{ region.regionName }}
  34. </option>
  35. </select>
  36. </float-label>
  37. <div class="validation"></div>
  38. <div class="validation"></div>
  39. </div>
  40. <div class="form-group col-md-6">
  41. <div class="input-group">
  42. <float-label label="RESORT NAME" style="width: 100%" fixed>
  43. <select class="form-control uniSelect" v-model="selectedResort">
  44. <option value="Other">Other</option>
  45. <option
  46. v-for="(resort, r) in filteredResort"
  47. :key="r"
  48. :value="resort.resortCode"
  49. >
  50. {{ resort.resortName }}
  51. </option>
  52. </select>
  53. </float-label>
  54. <div class="validation"></div>
  55. </div>
  56. <!-- <div v-else class="input-group">
  57. <float-label label="RESORT NAME" style="width:100%" fixed>
  58. <select class="form-control uniSelect" v-model="selectedResort">
  59. <option value="Other">{{ week.otherResortName }}</option>
  60. <option
  61. v-for="(resort, r) in filteredResort"
  62. :key="r"
  63. :value="resort.resortCode"
  64. >{{ resort.resortName }}</option
  65. >
  66. </select>
  67. </float-label>
  68. <div class="validation"></div>
  69. </div> -->
  70. <div class="validation"></div>
  71. </div>
  72. <div class="form-group col-md-6">
  73. <float-label>
  74. <input
  75. class="form-control"
  76. v-if="weekParam.otherResort"
  77. placeholder="NAME OF RESORT (* IF OTHER)"
  78. type="text"
  79. name="other"
  80. v-model="week.otherResortName"
  81. />
  82. </float-label>
  83. </div>
  84. <div class="form-group col-md-6">
  85. <div v-if="weekParam.otherResort">
  86. <label v-if="!weekParam.region" class="uniSelectLabel" for="region"
  87. >REGION</label
  88. >
  89. </div>
  90. <float-label>
  91. <select
  92. class="form-control uniSelect"
  93. v-if="weekParam.otherResort"
  94. name="region"
  95. id="region"
  96. v-model="weekParam.region"
  97. >
  98. <option v-for="(region, r) in regions" :key="r">
  99. {{ region.regionName }}
  100. </option>
  101. </select>
  102. </float-label>
  103. </div>
  104. <div class="form-group col-md-6">
  105. <float-label>
  106. <input
  107. type="text"
  108. class="form-control"
  109. name="unitNumber"
  110. id="unitNumber"
  111. placeholder="UNIT NUMBER"
  112. v-model="weekParam.unitNumber"
  113. data-msg="Please enter unit number"
  114. />
  115. </float-label>
  116. <div class="validation"></div>
  117. </div>
  118. <div class="form-group col-md-6">
  119. <float-label>
  120. <input
  121. type="text"
  122. class="form-control"
  123. name="week"
  124. id="week"
  125. placeholder="WEEK MODULE"
  126. v-model="week.module"
  127. data-msg="Please enter week number"
  128. />
  129. </float-label>
  130. <div class="validation"></div>
  131. </div>
  132. <div class="form-group col-md-6 mt-2">
  133. <float-label label="SEASON" fixed>
  134. <select
  135. class="form-control uniSelect"
  136. name="season"
  137. id="season"
  138. v-model="selectedSeason"
  139. >
  140. <option :value="season.name" v-for="(season, r) in seasons" :key="r">
  141. {{ season.name }}
  142. </option>
  143. </select>
  144. </float-label>
  145. <div class="validation"></div>
  146. </div>
  147. <div class="form-group col-md-6 mt-2">
  148. <float-label label="BEDROOM/S" fixed>
  149. <select
  150. class="form-control uniSelect"
  151. name="region"
  152. id="region"
  153. v-model="selectedBedrooms"
  154. >
  155. <option v-for="(item, i) in resortBedrooms" :key="i">
  156. {{ item }}
  157. </option>
  158. </select>
  159. </float-label>
  160. <div class="validation"></div>
  161. </div>
  162. <div class="form-group col-md-6 mt-2">
  163. <float-label label="SLEEP MAX" fixed>
  164. <select
  165. class="form-control uniSelect"
  166. name="region"
  167. id="region"
  168. v-model="selectedMaxSleep"
  169. >
  170. <option v-for="(item, i) in maxSleep" :key="i">
  171. {{ item }}
  172. </option>
  173. </select>
  174. </float-label>
  175. <div class="validation"></div>
  176. </div>
  177. <div class="form-group col-md-6 mt-2">
  178. <float-label>
  179. <input
  180. type="number"
  181. class="form-control"
  182. name="levy"
  183. id="levy"
  184. placeholder="Levy Amount"
  185. v-model="weekParam.levyAmount"
  186. data-msg="Please enter levy amount"
  187. />
  188. </float-label>
  189. <div class="validation"></div>
  190. </div>
  191. <div class="form-group col-md-6 mt-2">
  192. <float-label label="WEEK TYPE" fixed>
  193. <select
  194. class="form-control uniSelect"
  195. name="region"
  196. id="region"
  197. v-model="selectedWeekType"
  198. >
  199. <option :key="0">Flexi</option>
  200. <option :key="1">Fixed</option>
  201. <option :key="2">Module</option>
  202. <option :key="3">Syndicate</option>
  203. </select>
  204. </float-label>
  205. </div>
  206. <div class="form-group col-md-6 mt-2"></div>
  207. <div class="form-group col-md-6 mt-4">
  208. <float-label label="ARRIVAL DATE" fixed>
  209. <input
  210. type="date"
  211. class="form-control"
  212. name="occupationDate1"
  213. v-model="dateParam"
  214. />
  215. </float-label>
  216. <div class="validation"></div>
  217. </div>
  218. <div class="form-group col-md-6 mt-4">
  219. <float-label label="DEPARTURE DATE" fixed>
  220. <input
  221. type="date"
  222. class="form-control"
  223. name="occupationDate2"
  224. v-model="depDateParam"
  225. />
  226. </float-label>
  227. <div class="validation"></div>
  228. </div>
  229. <div class="form-group col-md-6 mt-2">
  230. <float-label label="ASKING PRICE" fixed>
  231. <currency-input
  232. onclick="this.setSelectionRange(0, this.value.length)"
  233. name="tsaPrice"
  234. :value="week.askingPrice"
  235. @input="week.askingPrice = $event"
  236. v-model="week.askingPrice"
  237. id="resPrice"
  238. class="form-control uniInput"
  239. />
  240. </float-label>
  241. <div class="validation"></div>
  242. </div>
  243. <div class="form-group col-md-6 mt-2">
  244. <float-label label="FINAL PRICE">
  245. <currency-input
  246. onclick="this.setSelectionRange(0, this.value.length)"
  247. name="tsPrice"
  248. :value="weekParam.sellPrice"
  249. @input="weekParam.sellPrice = $event"
  250. v-model="weekParam.sellPrice"
  251. id="resPrice"
  252. class="form-control uniInput"
  253. />
  254. </float-label>
  255. <div class="validation"></div>
  256. </div>
  257. </div>
  258. </div>
  259. <div align="left" class="custom-control custom-switch mb-2">
  260. <div class="row">
  261. <div align="center" class="col">
  262. <label class="mr-5">Has your week been spacebanked for the current year?</label>
  263. <input
  264. type="checkbox"
  265. class="custom-control-input"
  266. id="customSwitch2"
  267. :checked="weekParam.currentYearBanked"
  268. @change="changeCurrentBanked"
  269. />
  270. <label class="custom-control-label" for="customSwitch2">
  271. {{ weekParam.currentYearBanked ? "Yes" : "No" }}
  272. </label>
  273. <div
  274. class="spacebanked1"
  275. :class="{
  276. 'spacebanked1--clicked': weekParam.currentYearBanked
  277. }"
  278. >
  279. <div class="col-md-6">
  280. <label
  281. for="If yes, please confirm with whom"
  282. v-if="weekParam.currentYearBanked"
  283. >Please confirm with whom</label
  284. >
  285. <select
  286. class="form-control uniSelect"
  287. name="spacebankOwner"
  288. v-if="weekParam.currentYearBanked"
  289. v-model="weekParam.bankedWith"
  290. >
  291. <option v-for="(item, i) in bankedEntities" :key="i" :value="item">
  292. {{ item }}
  293. </option>
  294. </select>
  295. </div>
  296. </div>
  297. </div>
  298. </div>
  299. </div>
  300. <div class="section-header" style="margin-top: 50px">
  301. <h2>Detailed Individual Information</h2>
  302. </div>
  303. <div class="form">
  304. <div v-if="ROLE === 'Super Admin'" class="row mb-4">
  305. <div class="col">
  306. <float-label label="OWNER TYPE" fixed>
  307. <select v-model="weekParam.customOwner" class="form-control uniSelect mt-3">
  308. <option v-bind:value="true">Custom Owner</option>
  309. <option v-bind:value="false">Registered User</option>
  310. </select>
  311. </float-label>
  312. </div>
  313. </div>
  314. <div v-if="ROLE === 'Super Admin'" class="row mb-4">
  315. <div class="col">
  316. <float-label label="SELECT OWNER" fixed>
  317. <select
  318. :disabled="weekParam.customOwner"
  319. v-model="weekParam.ownerId"
  320. class="form-control uniSelect mt-3"
  321. @change="updateCurrentUser()"
  322. >
  323. <option v-for="indiv in individuals" :key="indiv.id" :value="indiv.id">
  324. {{ indiv.fullName }}
  325. </option>
  326. </select>
  327. </float-label>
  328. </div>
  329. </div>
  330. <div class="row">
  331. <div class="form-group col-md-6">
  332. <float-label>
  333. <input
  334. type="text"
  335. name="name"
  336. :disabled="!weekParam.customOwner"
  337. class="form-control"
  338. id="name"
  339. placeholder="Name"
  340. data-rule="minlen:4"
  341. data-msg="Please enter your name"
  342. v-model="week.owner.name"
  343. />
  344. </float-label>
  345. <div class="validation"></div>
  346. </div>
  347. <div class="form-group col-md-6">
  348. <float-label>
  349. <input
  350. type="text"
  351. :disabled="!weekParam.customOwner"
  352. class="form-control"
  353. name="surname"
  354. id="surname"
  355. placeholder="Surname"
  356. data-msg="Please enter your surname"
  357. v-model="week.owner.surname"
  358. />
  359. </float-label>
  360. <div class="validation"></div>
  361. </div>
  362. </div>
  363. <div class="row mt-2">
  364. <div class="form-group col-md-6">
  365. <float-label>
  366. <input
  367. type="text"
  368. :disabled="!weekParam.customOwner"
  369. name="idnum"
  370. class="form-control"
  371. id="idnum"
  372. placeholder="ID Number"
  373. data-rule="minlen:4"
  374. data-msg="Please enter your ID number"
  375. v-model="week.owner.idNumber"
  376. />
  377. </float-label>
  378. <div class="validation"></div>
  379. </div>
  380. <div class="form-group col-md-6">
  381. <float-label>
  382. <input
  383. type="text"
  384. :disabled="!weekParam.customOwner"
  385. class="form-control"
  386. name="company"
  387. id="company"
  388. placeholder="Company Reg Number"
  389. data-rule="minlen:4"
  390. data-msg="Please enter your company reg number"
  391. v-model="week.owner.companyRegNumber"
  392. />
  393. </float-label>
  394. <div class="validation"></div>
  395. </div>
  396. </div>
  397. <div class="row mt-2">
  398. <div class="form-group col-md-6">
  399. <float-label>
  400. <input
  401. type="text"
  402. :disabled="!weekParam.customOwner"
  403. class="form-control"
  404. name="email"
  405. id="email"
  406. placeholder="Email Address"
  407. data-msg="Please enter your email address"
  408. v-model="week.owner.email"
  409. />
  410. </float-label>
  411. <div class="validation"></div>
  412. </div>
  413. </div>
  414. <div class="row mt-2">
  415. <div class="form-group col-md-6">
  416. <float-label>
  417. <input
  418. type="text"
  419. :disabled="!weekParam.customOwner"
  420. name="cell"
  421. class="form-control"
  422. id="cell"
  423. placeholder="Cell Number"
  424. data-rule="minlen:4"
  425. data-msg="Please enter your cell number"
  426. v-model="week.owner.cellNumber"
  427. />
  428. </float-label>
  429. <div class="validation"></div>
  430. </div>
  431. <div class="form-group col-md-6">
  432. <float-label>
  433. <input
  434. type="text"
  435. :disabled="!weekParam.customOwner"
  436. class="form-control"
  437. name="landline"
  438. id="landline"
  439. placeholder="Landline Number"
  440. data-msg="Please enter your landline number"
  441. v-model="week.owner.telephone"
  442. />
  443. </float-label>
  444. <div class="validation"></div>
  445. </div>
  446. </div>
  447. </div>
  448. <div class="section-header" style="margin-top: 50px">
  449. <h2>Week Agent</h2>
  450. </div>
  451. <div class="row">
  452. <div class="col-md-6">
  453. <label for="Name of Agency">Agency</label>
  454. <select
  455. class="form-control uniSelect"
  456. id="Agency"
  457. name="agency"
  458. v-model="weekParam.agencyId"
  459. >
  460. <option value=""></option>
  461. <option v-for="(item, i) in agencies" :key="i" :value="item.id">
  462. {{ item.agencyName }}
  463. </option>
  464. </select>
  465. </div>
  466. <div class="col-md-6">
  467. <label for="Name of Agent">Agent</label>
  468. <select
  469. class="form-control uniSelect"
  470. id="agent"
  471. name="agent"
  472. v-model="weekParam.agentId"
  473. :disabled="!weekParam.agencyId"
  474. >
  475. <option value=""></option>
  476. <option v-for="(item, i) in displayNotDeletedAgents" :key="i" :value="item.id">
  477. <div>{{ item.name + " " + item.surname }}</div>
  478. </option>
  479. </select>
  480. </div>
  481. </div>
  482. <div v-if="!boolAwaitingPayment">
  483. <div class="section-header">
  484. <h2>Publish Timeshare Week</h2>
  485. </div>
  486. <div class="form">
  487. <div class="row">
  488. <div class="form-group col-md-6">
  489. <float-label label="STATUS" fixed>
  490. <select
  491. class="form-control uniSelect"
  492. name="status"
  493. id="status"
  494. v-model="weekParam.status.id"
  495. >
  496. <option :key="status.id" :value="status.id" v-for="status in statusPerRole">
  497. {{ status.description }}
  498. </option>
  499. </select>
  500. </float-label>
  501. </div>
  502. <div class="form-group col-md-6">
  503. <float-label label="Publish" fixed>
  504. <select
  505. class="form-control uniSelect"
  506. name="publish"
  507. id="publish"
  508. v-model="weekParam.publish"
  509. >
  510. <option :key="0" :value="false">No</option>
  511. <option :key="1" :value="true">Yes</option>
  512. </select>
  513. </float-label>
  514. </div>
  515. <div class="form-group col-md-6 mt-2">
  516. <float-label label="DATE PUBLISHED" fixed>
  517. <input
  518. type="date"
  519. class="form-control"
  520. name="publishDate"
  521. v-model="pubDateParam"
  522. />
  523. </float-label>
  524. <div class="validation"></div>
  525. </div>
  526. </div>
  527. </div>
  528. <div class="form-row">
  529. <div class="col-md-12">
  530. <alert :text="errorMessage" :type="errorOccurred" />
  531. </div>
  532. </div>
  533. <div class="row">
  534. <div class="text-center col-6">
  535. <button class="btn-solid-blue" v-on:click="saveEdit()">
  536. SAVE
  537. </button>
  538. </div>
  539. <div class="text-center col-6">
  540. <button class="btn-solid-blue" v-on:click="backToListView()">
  541. BACK
  542. </button>
  543. </div>
  544. </div>
  545. </div>
  546. <div v-else>
  547. <div class="row mt-5">
  548. <div class="col">
  549. <p>
  550. Payment for this timeshare week has not been confirmed yet.
  551. </p>
  552. </div>
  553. </div>
  554. <!-- <div class="row ">
  555. <div class="col-6">
  556. <button class="btn-solid-blue" v-on:click="paygateRedirect()">
  557. MAKE PAYMENT
  558. </button>
  559. </div>
  560. </div> -->
  561. </div>
  562. </div>
  563. </div>
  564. </div>
  565. </section>
  566. </main>
  567. </template>
  568. <script>
  569. /* eslint-disable */
  570. import { mapState, mapActions, mapGetters } from "vuex";
  571. import addressAutoComplete from "../../shared/addressAutoComplete";
  572. import Alert from "../../shared/alert.vue";
  573. import Log from "../../../assets/Log";
  574. import _ from "lodash";
  575. export default {
  576. name: "EditTimeshare",
  577. props: {
  578. weekParam: {},
  579. weekId: {
  580. default: 0
  581. }
  582. },
  583. data() {
  584. return {
  585. wait: true,
  586. userLoggedIn: Log.isLoggedIn(),
  587. listedWeekId: this.$route.params.id,
  588. selectedItems: [],
  589. selectedRegion: {},
  590. selectedResort: {},
  591. selectedSeason: {},
  592. selectedBedrooms: {},
  593. selectedMaxSleep: {},
  594. selectedWeekType: {},
  595. selectedStatus: {},
  596. selectedPublish: {},
  597. dateParam: {},
  598. depDateParam: {},
  599. pubDateParam: {},
  600. boolAwaitingPayment: false,
  601. selectedUser: "",
  602. errorOccurred: "",
  603. errorMessage: ""
  604. };
  605. },
  606. components: {
  607. addressAutoComplete,
  608. Alert
  609. },
  610. async mounted() {
  611. if (this.sellItem.id) {
  612. this.newSale();
  613. }
  614. if (this.weekParam.season === "Peak") {
  615. this.selectedSeason = "Peak 1";
  616. } else {
  617. this.selectedSeason = this.weekParam.season;
  618. }
  619. this.initTimeshare(0);
  620. this.getIndividual(Log.getUser().id);
  621. this.getBanks();
  622. //this.getWeek(this.weekParam.id);
  623. // console.log(this.regions);
  624. // console.log(this.weekParam.region.regionCode);
  625. this.selectedRegion = this.weekParam.region.regionCode;
  626. this.selectedResort = this.weekParam.resort.resortCode;
  627. this.selectedBedrooms = this.weekParam.bedrooms;
  628. this.selectedMaxSleep = this.weekParam.maxSleep;
  629. this.selectedWeekType = this.weekParam.weekType;
  630. this.selectedStatus = this.weekParam.status;
  631. this.selectedPublish = this.weekParam.publish;
  632. this.fixDates();
  633. if (
  634. this.weekParam.status.description === "Awaiting Payment" ||
  635. this.weekParam.status.description === "Awaiting EFT Payment"
  636. ) {
  637. if (this.ROLE !== "Super Admin") {
  638. this.boolAwaitingPayment = true;
  639. }
  640. }
  641. //console.log(this.individuals);
  642. },
  643. created() {
  644. this.initTimeshare(this.weekId);
  645. this.getIndividuals();
  646. this.getStatusList();
  647. this.getWeek(this.weekParam.id).then(() => {
  648. if (this.weekParam.customOwner) {
  649. this.retrieveNonRegIndiv(this.weekParam.id).then(() => {
  650. this.week.owner.name = this.getIndiv[0].name;
  651. this.week.owner.surname = this.getIndiv[0].surname;
  652. this.week.owner.idNumber = this.getIndiv[0].idNumber;
  653. this.week.owner.companyRegNumber = this.getIndiv[0].companyRegNumber;
  654. this.week.owner.email = this.getIndiv[0].emailAddress;
  655. this.week.owner.cellNumber = this.getIndiv[0].cellNumber;
  656. this.week.owner.telephone = this.getIndiv[0].telephoneNumber;
  657. this.wait = false;
  658. });
  659. } else {
  660. this.wait = false;
  661. }
  662. });
  663. },
  664. computed: {
  665. ...mapState("timeshare", [
  666. "resorts",
  667. "regions",
  668. "detailedRegion",
  669. "seasons",
  670. "result",
  671. "resortBedrooms",
  672. "maxSleep",
  673. "bankedEntities",
  674. "sellItem",
  675. "agencies",
  676. "agents",
  677. "getTemplate"
  678. ]),
  679. ...mapGetters("nonRegIndividual", ["getIndiv"]),
  680. ...mapState("individual", ["indiv"]),
  681. ...mapState("authentication", ["isLoggedIn"]),
  682. ...mapState("myWeeks", ["items", "week"]),
  683. ...mapState("status", ["statusList"]),
  684. ...mapGetters({
  685. user: "authentication/getUser",
  686. person: "authentication/getPerson"
  687. }),
  688. ...mapState("bank", ["banks"]),
  689. ...mapState("register", ["individuals", "removeIndividual"]),
  690. ...mapGetters("fees", ["getListingFee"]),
  691. refAgent() {
  692. return this.sellItem && this.sellItem.referedByAgent;
  693. },
  694. ROLE() {
  695. var userObj = JSON.parse(localStorage.getItem("user"));
  696. return userObj.role;
  697. },
  698. statusPerRole() {
  699. var list = [];
  700. this.statusList.forEach(status => {
  701. if (this.ROLE !== "Super Admin") {
  702. if (status.code !== "AP") {
  703. if (status.code !== "APEFT") {
  704. list.push(status);
  705. }
  706. }
  707. } else {
  708. list.push(status);
  709. }
  710. });
  711. return list;
  712. },
  713. filteredResort() {
  714. let list = [];
  715. if (this.week && this.week.region && this.selectedRegion) {
  716. const item = this.detailedRegion.find(
  717. region => region.region.regionCode === this.selectedRegion
  718. );
  719. if (item) {
  720. list = item.children;
  721. }
  722. } else {
  723. list = this.resorts;
  724. }
  725. return _.sortBy(list, x => x.resortName);
  726. },
  727. isLoggedIn() {
  728. return this.user && this.person;
  729. },
  730. displayNotDeletedAgents() {
  731. var notDeletedArr = [];
  732. this.agents.forEach(agent => {
  733. if (!agent.isDeleted) {
  734. if (agent.agencyId === this.weekParam.agencyId) {
  735. notDeletedArr.push(agent);
  736. }
  737. }
  738. });
  739. return notDeletedArr;
  740. }
  741. },
  742. methods: {
  743. ...mapActions("individual", ["getIndividual"]),
  744. ...mapActions("nonRegIndividual", ["retrieveNonRegIndiv"]),
  745. ...mapActions("timeshare", ["initTimeshare", "onResortChange", "saveWeek", "getBlankWeek"]),
  746. ...mapActions("payment", ["addPayment"]),
  747. ...mapActions("bank", ["getBanks"]),
  748. ...mapActions("myWeeks", ["getItems", "getWeek", "editSave"]),
  749. ...mapActions("status", ["getStatusList"]),
  750. ...mapActions("register", ["getIndividuals", "deleteIndividual"]),
  751. newSale() {
  752. this.weekId = 0;
  753. this.getBlankWeek();
  754. },
  755. fixDates() {
  756. var date = new Date(this.weekParam.arrivalDate).setHours(+4);
  757. var finDate = new Date(date).toISOString().substring(0, 10);
  758. this.dateParam = finDate;
  759. var depDate = new Date(this.weekParam.departureDate).setHours(+4);
  760. var finDepDate = new Date(depDate).toISOString().substring(0, 10);
  761. this.depDateParam = finDepDate;
  762. var datePub = new Date(this.weekParam.pulbishedDate).setHours(+4);
  763. var finDatePub = new Date(datePub).toISOString().substring(0, 10);
  764. this.pubDateParam = finDatePub;
  765. },
  766. updateCurrentUser() {
  767. this.individuals.forEach(indiv => {
  768. if (this.weekParam.ownerId === indiv.id) {
  769. this.week.owner.name = indiv.name;
  770. this.week.owner.surname = indiv.surname;
  771. this.week.owner.idNumer = indiv.idNumber;
  772. this.week.owner.companyRegNumber = indiv.companyRegNumber;
  773. this.week.owner.email = indiv.emailAddress;
  774. this.week.owner.cellNumber = indiv.cellNumber;
  775. this.week.owner.landlineNumber = indiv.telephone;
  776. //console.log(this.week.owner);
  777. }
  778. });
  779. },
  780. saveEdit() {
  781. this.regions.forEach(region => {
  782. if (region.regionCode === this.selectedRegion) {
  783. //console.log(region);
  784. this.weekParam.regionId = region.id;
  785. }
  786. });
  787. this.resorts.forEach(resort => {
  788. if (resort.resortCode === this.selectedResort) {
  789. this.weekParam.resortCode = resort.resortCode;
  790. this.weekParam.resortName = resort.resortName;
  791. }
  792. });
  793. console.log(this.selectedSeason);
  794. this.weekParam.season = this.selectedSeason;
  795. this.resortBedrooms.forEach(bedroom => {
  796. if (bedroom === this.selectedBedrooms) {
  797. this.weekParam.bedroom = bedroom;
  798. }
  799. });
  800. this.maxSleep.forEach(sleepMax => {
  801. if (sleepMax === this.selectedMaxSleep) {
  802. this.weekParam.maxSleep = sleepMax;
  803. }
  804. });
  805. if (this.week.owner.cellNumber === "") {
  806. delete this.week.owner.cellNumber;
  807. }
  808. if (this.week.owner.telephone === "") {
  809. delete this.week.owner.telephone;
  810. }
  811. if (this.week.owner.spouseTelephone === "") {
  812. this.week.owner.spouseTelephone = null;
  813. }
  814. if (this.week.owner.spouseCellnumber === "") {
  815. this.week.owner.spouseCellnumber = null;
  816. }
  817. this.weekParam.arrivalDate = new Date(this.dateParam).toISOString().substring(0, 10);
  818. this.weekParam.departureDate = new Date(this.depDateParam).toISOString().substring(0, 10);
  819. //console.log(this.pubDateParam);
  820. if (this.pubDateParam) {
  821. this.weekParam.pulbishedDate = new Date(this.pubDateParam).toISOString().substring(0, 19);
  822. }
  823. this.weekParam.owner = this.week.owner;
  824. this.weekParam.askingPrice = this.week.askingPrice;
  825. this.weekParam.module = this.week.module;
  826. parseFloat(this.weekParam.sellPrice);
  827. parseFloat(this.weekParam.levyAmount);
  828. this.weekParam.weekType = this.selectedWeekType;
  829. delete this.weekParam.Owner;
  830. delete this.weekParam.agency;
  831. delete this.weekParam.agent;
  832. //delete this.status;
  833. delete this.weekParam.owner.howMarried;
  834. delete this.weekParam.cellNumber;
  835. console.log(this.week.owner);
  836. this.week.owner.name =
  837. this.week.owner.name.charAt(0).toUpperCase() + this.week.owner.name.slice(1);
  838. this.week.owner.surname =
  839. this.week.owner.surname.charAt(0).toUpperCase() + this.week.owner.surname.slice(1);
  840. this.weekParam.statusId = this.selectedStatus.id;
  841. //console.log(this.weekParam);
  842. //console.log(JSON.stringify(this.weekParam));
  843. //console.log(this.weekParam);
  844. this.editSave(this.weekParam)
  845. .then(e => {
  846. this.backToListView();
  847. })
  848. .catch(ex => {
  849. //console.log(ex);
  850. this.errorOccurred = "ERRORHTML";
  851. this.errorMessage = ex;
  852. });
  853. },
  854. resortChange() {
  855. this.onResortChange({
  856. resortName: this.week.resort.resortName,
  857. resortCode: this.week.resort.resortCode
  858. });
  859. if (this.week && this.week.resort === "Other") {
  860. this.week.otherResortName = undefined;
  861. this.week.otherResort = true;
  862. } else {
  863. this.week.otherResortName = undefined;
  864. this.week.otherResort = false;
  865. }
  866. },
  867. changeCurrentBanked() {
  868. this.weekParam.bankedWith = undefined;
  869. this.weekParam.currentYearBanked = !this.weekParam.currentYearBanked;
  870. },
  871. backToListView() {
  872. this.$router.push("/status/timeshareAdmin");
  873. },
  874. paygateRedirect() {
  875. var amount = this.getListingFee.amount;
  876. var paymentObj = {
  877. timeshareWeekId: this.weekParam.id, // this.sellItem.Id,
  878. propertyId: 0,
  879. creatydById: Log.getUser().id, //Log.getUser().id,
  880. amount: amount,
  881. paymentStatus: "",
  882. paymentToken: ""
  883. };
  884. this.addPayment(paymentObj).then(res => {
  885. this.$router.push({
  886. name: "PaymentGateway",
  887. params: {
  888. paymentReqId: res.PAY_REQUEST_ID,
  889. checksum: res.CHECKSUM
  890. }
  891. });
  892. });
  893. }
  894. }
  895. };
  896. </script>
  897. <style lang="scss" scoped>
  898. .refbyAgent {
  899. will-change: transform;
  900. transition: height 500ms;
  901. height: 0px;
  902. }
  903. .refbyAgent--clicked {
  904. height: 150px;
  905. }
  906. .spacebanked1 {
  907. will-change: transform;
  908. transition: height 500ms;
  909. height: 0px;
  910. }
  911. .spacebanked1--clicked {
  912. height: 150px;
  913. }
  914. .custom-file-label {
  915. border-width: 2px;
  916. border-color: rgb(27, 117, 187);
  917. margin-bottom: 20px;
  918. }
  919. .custom-file-label::after {
  920. border-left: none;
  921. border-bottom: solid;
  922. border-width: 2px;
  923. border-color: rgb(27, 117, 187);
  924. font-family: "Muli";
  925. }
  926. </style>