Not a member of GistPad yet?
Sign Up,
it unlocks many cool features!
- import { isEmpty, startCase } from "lodash";
- import React, { useContext, useEffect, useState } from "react";
- import AuthProvider from "../context/AuthContext";
- import BetSlipContext from "../context/BetSlipContext";
- import { apiGet } from "../Utils/apiFetch";
- import apiPath from "../Utils/apiPath";
- import { FancyListing, SportsBookListing } from "./BetsListing";
- import OpenBetsDetails from "./OpenBetsDetails";
- import helper from "../Utils/helpers";
- import axios from "axios";
- import ParlyFIltered from "./ParlyFIltered";
- import obj from "../Utils/helpers";
- function Openbets() {
- let { setOpenBetsToogle, openBetsToogle, openBetSelection, setLoader, user } =
- useContext(AuthProvider);
- let {
- messaageBox,
- refreshCurrentBet,
- setRefreshCurrentBets,
- isBetPlaced,
- setIsBetPlaced,
- setMessageBox,
- umMachedBetPlace,
- setUnMatchedBetPlace,
- } = useContext(BetSlipContext);
- const [parlayData, setParlayData] = useState([]);
- const [currentBets, setCurrentBets] = useState([]);
- const [filtered, setFiltered] = useState({});
- const [data, setData] = useState({});
- const [type, setType] = useState("");
- const [betinfo, setBetInfo] = useState(false);
- const [sortbyTime, setSortbyTime] = useState(false);
- const getCurrentBets = async () => {
- if (!isEmpty(user)) {
- // Cache-bust so we always get fresh data (avoid 304 Not Modified / stale list)
- const nocache = { _: Date.now() };
- const promiseOne = apiGet(apiPath.mobileCurrentBets, nocache);
- const promiseTwo = apiGet(apiPath.currentParlay, nocache);
- Promise.all([promiseOne, promiseTwo]).then((res) => {
- setCurrentBets(res[0]?.data?.results);
- setParlayData(res[1]?.data?.results);
- });
- // if (status === 200) {
- // if (response_users.success) {
- // setCurrentBets(response_users.results);
- // setRefreshCurrentBets(false);
- // }
- // }
- }
- };
- const getParlayData = async () => {
- if (!isEmpty(user)) {
- const { status, data: response_users } = await apiGet(
- apiPath.currentParlay,
- { _: Date.now() }
- );
- if (status === 200) {
- if (response_users.success) {
- setParlayData(response_users.results);
- setRefreshCurrentBets(false);
- }
- }
- }
- };
- // console.log(currentBets, "currentBets");
- const sortTime = (check) => {
- setSortbyTime(check);
- };
- const handle = (item, type) => {
- setData(item);
- setType(type);
- let obj = currentBets?.find((res) => res?.eventName == item?.eventName);
- setFiltered(
- type == "BetFair"
- ? obj.betList
- : type == "Bookmaker"
- ? obj.bookmakerList
- : type == "Fancy"
- ? obj.sessionBetList
- : type == "SportsBook"
- ? obj.sportBookBetList
- : type == "Toss"
- ? obj?.tossBetList?.map((res) => {
- return { ...res, isMatched: true };
- })
- : type == "Tie"
- ? obj?.tieBetList
- : type == "Parly"
- ? item?.bets
- : ""
- );
- };
- useEffect(() => {
- if (refreshCurrentBet) {
- setRefreshCurrentBets(false);
- handle();
- getCurrentBets();
- // getParlayData();
- }
- }, [refreshCurrentBet]);
- const clearBets = async (id) => {
- setLoader(true);
- const { status, data: response_users } = await apiGet(
- `${apiPath.clearBets}matchBetId=${id}`
- );
- if (status === 200) {
- if (response_users.success) {
- setLoader(false);
- setRefreshCurrentBets(true);
- setIsBetPlaced("clearBet");
- setMessageBox(true);
- // setOpenBetsToogle(true);
- setData({});
- setType("");
- setFiltered({});
- getCurrentBets();
- }
- setLoader(false);
- } else {
- setLoader(false);
- }
- };
- useEffect(() => {
- if (umMachedBetPlace) {
- setData({});
- setType("");
- setFiltered({});
- setUnMatchedBetPlace(false);
- }
- }, [umMachedBetPlace]);
- return (
- <>
- <div
- id="openBetsLeftSide"
- className="overlay left-side"
- style={{
- display: openBetsToogle ? "block" : "none",
- }}
- >
- <div
- id="openBetSlide"
- className="side-wrap"
- style={{ display: "flex" }}
- >
- <div id="sideHead" className="side-head">
- <h3 className="a-open_bets">
- <img
- src={
- // import.meta.env.VITE_IMAGE_URL +
- "/assets/images/home/transparent.gif"
- }
- alt={""}
- />
- Open Bets
- </h3>
- <a
- id="close"
- onClick={() => setOpenBetsToogle(false)}
- className="close"
- href="#"
- ></a>
- </div>
- <div id="sideContent" className="side-content">
- {/* <div
- id="openBetMsgBox"
- className="message-wrap success"
- style={{ display: "block" }}
- >
- <div className="message">
- <h4 id="header">Bet Matched</h4>
- <p id="info">
- <span id="sideType" className="back">
- Back
- </span>
- <strong id="selectionName">England</strong>{" "}
- <strong id="stake">$1,000</strong> at odds{" "}
- <strong id="odds">1.29</strong>
- </p>
- </div>
- <a id="close" className="close" href="#">
- Close
- </a>
- </div> */}
- {isEmpty(data) && (
- <ul
- id="eventMenuList"
- style={{ display: "block" }}
- className="menu-list"
- >
- {currentBets?.length > 0 &&
- currentBets?.map((res) => {
- return (
- <>
- {res?.betList?.length > 0 && (
- <li
- id="eventMenuTemplate"
- className="inplay-off"
- style={{ display: "block" }}
- >
- <a
- onClick={() => handle(res, "BetFair")}
- href="javascript:void(0)"
- >
- {res?.eventName} - BetFair
- </a>
- </li>
- )}
- {res?.bookmakerList?.length > 0 && (
- <li
- id="eventMenuTemplate"
- className="inplay-off"
- style={{ display: "block" }}
- >
- <a
- onClick={() => handle(res, "Bookmaker")}
- href="javascript:void(0)"
- >
- {res?.eventName}- Bookmaker
- </a>
- </li>
- )}
- {res?.sessionBetList?.length > 0 && (
- <li
- id="eventMenuTemplate"
- className="inplay-off"
- style={{ display: "block" }}
- >
- <a
- onClick={() => handle(res, "Fancy")}
- href="javascript:void(0)"
- >
- {res?.eventName} - Fancy
- </a>
- </li>
- )}
- {res?.sportBookBetList?.length > 0 && (
- <li
- id="eventMenuTemplate"
- className="inplay-off"
- style={{ display: "block" }}
- >
- <a
- onClick={() => handle(res, "SportsBook")}
- href="javascript:void(0)"
- >
- {res?.eventName} - SportsBook
- </a>
- </li>
- )}
- {res?.tieBetList?.length > 0 && (
- <li
- id="eventMenuTemplate"
- className="inplay-off"
- style={{ display: "block" }}
- >
- <a
- onClick={() => handle(res, "Tie")}
- href="javascript:void(0)"
- >
- {res?.eventName} - Tie
- </a>
- </li>
- )}
- {res?.tossBetList?.length > 0 && (
- <li
- id="eventMenuTemplate"
- className="inplay-off"
- style={{ display: "block" }}
- >
- <a
- onClick={() => handle(res, "Toss")}
- href="javascript:void(0)"
- >
- {res?.eventName} - Toss
- </a>
- </li>
- )}
- </>
- );
- })}
- {parlayData?.length > 0 &&
- parlayData?.map((res) => {
- return (
- <li
- id="eventMenuTemplate"
- className="inplay-off"
- style={{ display: "block" }}
- >
- <a
- onClick={() => handle(res, "Parly")}
- href="javascript:void(0)"
- >
- Bet Placed -{" "}
- {res?.bets?.length == 0
- ? ""
- : res?.bets?.length == 1
- ? "SINGLE"
- : res?.bets?.length == 2
- ? "DOUBLE"
- : res?.bets?.length == 3
- ? "TREBLE"
- : "ACCMULATOR"}{" "}
- - Parly
- </a>
- </li>
- );
- })}
- </ul>
- )}
- {!isEmpty(data) && (
- <>
- <div
- id="pathWrap"
- className="path-wrap"
- style={{ display: "flex" }}
- >
- <a
- id="goBack"
- className="go_back"
- onClick={() => {
- setData("");
- setSortbyTime(false);
- setType("");
- setBetInfo(false);
- }}
- href="javascript:void(0)"
- ></a>
- <ul>
- <li id="eventName">
- {type == "Parly" ? (
- <p>
- {" "}
- Bet Placed -{" "}
- {type == "Parly"
- ? data?.bets?.length == 0
- ? ""
- : data?.bets?.length == 1
- ? "SINGLE"
- : data?.bets?.length == 2
- ? "DOUBLE"
- : data?.bets?.length == 3
- ? "TREBLE"
- : "ACCMULATOR"
- : data?.eventName}{" "}
- - {type}
- </p>
- ) : (
- <p>
- {" "}
- {data?.eventName} - {type}
- </p>
- )}
- </li>
- </ul>
- </div>
- {type == "Parly" && (
- <div
- id="pathWrap"
- className="path-wrap new-path"
- style={{ display: "flex" }}
- >
- <span> Bet Id : {data?.matchBetId}</span>
- <span> Stake : {Number(data?.amount)?.toFixed(2)}</span>
- <span> Odds : {Number(data?.bhav)?.toFixed(2)}</span>
- <span>
- {" "}
- Win/Loss :{" "}
- {data?.isDeclared ? (
- <>
- {data?.result == "loss" ? (
- <strong
- className="d-block"
- style={{ color: "red" }}
- >
- {startCase(data?.result)}
- </strong>
- ) : (
- <strong
- className="d-block"
- style={{ color: "green" }}
- >
- {startCase(data?.result)}
- </strong>
- )}
- </>
- ) : (
- "..."
- )}
- </span>
- </div>
- )}
- </>
- )}
- {!isEmpty(data) && (
- <>
- {type == "Fancy" ? (
- <FancyListing
- filtered={filtered}
- sortbyTime={sortbyTime}
- sortTime={sortTime}
- betinfo={betinfo}
- setBetInfo={setBetInfo}
- type={"Matched"}
- helper={helper}
- />
- ) : type == "SportsBook" ? (
- <SportsBookListing
- filtered={filtered}
- sortbyTime={sortbyTime}
- sortTime={sortTime}
- betinfo={betinfo}
- setBetInfo={setBetInfo}
- type={"Matched"}
- helper={helper}
- />
- ) : type == "Parly" ? (
- <ParlyFIltered
- filtered={filtered}
- sortbyTime={sortbyTime}
- sortTime={sortTime}
- betType={type}
- betinfo={betinfo}
- setBetInfo={setBetInfo}
- type={"Matched"}
- />
- ) : (
- <OpenBetsDetails
- filtered={filtered}
- sortbyTime={sortbyTime}
- sortTime={sortTime}
- betType={type}
- betinfo={betinfo}
- setBetInfo={setBetInfo}
- type={"Matched"}
- />
- )}
- {filtered?.some((res) => !res?.isMatched) &&
- type == "BetFair" && (
- <OpenBetsDetails
- filtered={filtered}
- sortbyTime={sortbyTime}
- betinfo={betinfo}
- betType={type}
- setBetInfo={setBetInfo}
- sortTime={sortTime}
- type={"UnMatched"}
- clearBets={clearBets}
- />
- )}
- </>
- )}
- {type == "Parly"
- ? ""
- : type !== "" &&
- !isEmpty(filtered) && (
- <ul
- id="openBetOption"
- className="check-list"
- style={{ display: "flex" }}
- >
- <li>
- <a
- id="showBetInfo"
- onClick={() => setBetInfo(!betinfo)}
- className={betinfo ? "checked" : ""}
- href="javascript:void(0)"
- >
- Bet Info
- </a>
- </li>
- {filtered?.length > 1 && type !== "SportsBook" && (
- <li>
- <a
- id="showTimeOrder"
- onClick={() => sortTime(!sortbyTime)}
- className={sortbyTime ? "checked" : ""}
- href="javascript:void(0)"
- >
- Time Order
- </a>
- </li>
- )}
- {/* <li name="txnOption">
- <a id="averageOdds" className="" href="javascript:void(0)">
- Average Odds
- </a>
- </li> */}
- </ul>
- )}
- </div>
- </div>
- </div>
- </>
- );
- }
- export default Openbets;
RAW Paste Data
Copied
