Ignore:
Timestamp:
07/15/22 14:45:30 (2 years ago)
Author:
anastasovv <simon@โ€ฆ>
Branches:
main
Children:
55701f0
Parents:
1df3fde
Message:

Added complaints, managing credits, and lost connection screens

File:
1 edited

Legend:

Unmodified
Added
Removed
  • components/ManageCredits.jsx

    r1df3fde r433e0c5  
    1515    const dispatch = useDispatch();
    1616
    17     function close() {
     17    function close(action = '') {
    1818        dispatch(setStyle({
    1919            ...styleState.style,
    2020            displayManageCreditsScreen: false,
     21            displayDepositModal: false,
     22            displayWithdrawModal: false,
     23            depositModalInputs: {
     24                name: '',
     25                card: '',
     26                expire: '',
     27                ccv: '',
     28                amount: '',
     29            },
     30            displayWithdrawModal: false,
     31            withdrawModalInputs: {
     32                citibank: '',
     33                iban: '',
     34                bic: '',
     35                beneficiary: '',
     36                address: '',
     37                amount: '',
     38            },
     39            inlineAlertText: '',
     40            notification: action === 'deposit' ? {
     41                show: true,
     42                text: `Deposited $${styleState.style.depositModalInputs.amount} successfully`,
     43                status: 'success',
     44            } : action === 'withdraw' ? {
     45                show: true,
     46                text: `Withdrawed $${styleState.style.withdrawModalInputs.amount} successfully`,
     47                status: 'success',
     48            } : {
     49                show: false,
     50                text: '',
     51                status: ''
     52            },
     53        }))
     54    }
     55
     56   
     57    function openDepositModal() {
     58        dispatch(setStyle({
     59            ...styleState.style,
     60            displayDepositModal: true,
     61            displayWithdrawModal: false,
     62            inlineAlertText: '',
     63        }))
     64    }
     65
     66    function openWithdrawModal() {
     67        dispatch(setStyle({
     68            ...styleState.style,
     69            displayDepositModal: false,
     70            displayWithdrawModal: true,
     71            inlineAlertText: '',
    2172        }))
    2273    }
    2374
    2475    function buyCredits() {
    25         axios.get(`/api/postgre/?action=add_credits&session_id=${localStorage.CAESSINO_SESSION_ID}&credits=${500}&dont_update_stats=true`).then(res => {
    26             if (res.data?.success) {
    27                 dispatch(setPlayer({
    28                     ...playerState.player,
    29                     credits: res.data.credits,
    30                 }))
    31             }
    32         });
     76        axios.post(`/api/postgre`, {
     77            action: 'deposit',
     78            session_id: localStorage.CAESSINO_SESSION_ID,
     79            data: styleState.style.depositModalInputs
     80        })
     81            .then(res => {
     82                if (res.data?.success) {
     83                    dispatch(setPlayer({
     84                        ...playerState.player,
     85                        credits: res.data.credits,
     86                    }))
     87
     88                    close('deposit');
     89                }
     90                else {
     91                    dispatch(setStyle({
     92                        ...styleState.style,
     93                        displayManageCreditsScreen: true,
     94                        inlineAlertText: res.data?.message,
     95                    }));
     96                }
     97            })
     98    }
     99
     100    function sellCredits() {
     101        axios.post(`/api/postgre`, {
     102            action: 'withdraw',
     103            session_id: localStorage.CAESSINO_SESSION_ID,
     104            data: styleState.style.withdrawModalInputs
     105        })
     106            .then(res => {
     107                if (res.data?.success) {
     108                    dispatch(setPlayer({
     109                        ...playerState.player,
     110                        credits: res.data.credits,
     111                    }))
     112
     113                    close('withdraw');
     114                }
     115                else {
     116                    dispatch(setStyle({
     117                        ...styleState.style,
     118                        displayManageCreditsScreen: true,
     119                        inlineAlertText: res.data?.message,
     120                    }));
     121                }
     122            })
    33123    }
    34124
     
    37127            <AiOutlineClose onClick={() => close()} style={{position: 'absolute', top: '20px', right: '20px'}}/>
    38128            <div>
    39                 <h1>Manage Credits:</h1>
    40                 <p>You currently have: ${playerState.player.credits}</p>
    41129                <div>
    42                     <button className="primaryButton" onClick={() => buyCredits()}>Buy Credits</button>
     130                    <h2>Manage (In-Game) Credits:</h2>
     131                    <p>You currently have: ${playerState.player.credits}</p>
     132                </div>
     133                <div className="main">
     134                    <div>
     135                        { styleState.style.displayDepositModal && styleState.style.inlineAlertText.length > 0 && <span className="inlineAlert">{styleState.style.inlineAlertText}</span>}
     136                        { !styleState.style.displayDepositModal && <button className="primaryButton" onClick={() => openDepositModal()}>Deposit From Credit Card<br/><span>Buy (In-Game) Credits</span></button> }
     137                        { styleState.style.displayDepositModal && (
     138                            <div className="fs-inputs-container">
     139                                <div>
     140                                    <label>Name and Surname</label>
     141                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeDeposit(e, 'name')}} value={styleState.style.depositModalInputs.name} placeholder="John Doe"/>
     142                                    <label>Card Number</label>
     143                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeDeposit(e, 'card')}} value={styleState.style.depositModalInputs.card} placeholder="2333 9298 9821 1111"/>
     144                                    <label>Expire Date</label>
     145                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeDeposit(e, 'expire')}} value={styleState.style.depositModalInputs.expire} placeholder="07/24"/>
     146                                    <label>CCV</label>
     147                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeDeposit(e, 'ccv')}} value={styleState.style.depositModalInputs.ccv} placeholder="337"/>
     148                                    <label><span>Amount</span></label>
     149                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeDeposit(e, 'amount')}} value={styleState.style.depositModalInputs.amount} placeholder="500"/>
     150                                    <button className="primaryButton" onClick={() => buyCredits()}>Deposit</button>
     151                                </div>
     152                            </div>
     153                        )}
     154                    </div>
     155                    <div>
     156                        { styleState.style.displayWithdrawModal && styleState.style.inlineAlertText.length > 0 && <span className="inlineAlert">{styleState.style.inlineAlertText}</span>}
     157                        { !styleState.style.displayWithdrawModal && <button className="primaryButton" onClick={() => openWithdrawModal()}>Withdraw To Personal Account<br/><span>Sell (In-Game) Credits</span></button> }
     158                        { styleState.style.displayWithdrawModal && (
     159                            <div className="fs-inputs-container">
     160                                <div>
     161                                    <label>Bank name</label>
     162                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeWithdraw(e, 'citibank')}} value={styleState.style.withdrawModalInputs.citibank} placeholder="Swedbank"/>
     163                                    <label>IBAN</label>
     164                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeWithdraw(e, 'iban')}} value={styleState.style.withdrawModalInputs.iban} placeholder="SE45 5000 0000 0583 9825 7466"/>
     165                                    <label>BIC</label>
     166                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeWithdraw(e, 'bic')}} value={styleState.style.withdrawModalInputs.bic} placeholder="SWEDSESSXXX"/>
     167                                    <label>Beneficiary Name</label>
     168                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeWithdraw(e, 'beneficiary')}} value={styleState.style.withdrawModalInputs.beneficiary} placeholder="John Doe"/>
     169                                    <label>Bank Address</label>
     170                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeWithdraw(e, 'address')}} value={styleState.style.withdrawModalInputs.address} placeholder="Landsvรคgen 40, Sundbyberg"/>
     171                                    <label><span>Amount</span></label>
     172                                    <input type="text" className="primaryInput" onChange={(e) => {onChangeWithdraw(e, 'amount')}} value={styleState.style.withdrawModalInputs.amount} placeholder="500"/>
     173                                    <button className="primaryButton" onClick={() => sellCredits()}>Withdraw</button>
     174                                </div>
     175                            </div>
     176                        )}
     177                    </div>
    43178                </div>
    44179            </div>
    45180        </div>
    46181    )
     182
     183    function onChangeDeposit(e, what) {
     184        dispatch(setStyle({
     185            ...styleState.style,
     186            depositModalInputs: {
     187                name: what === 'name' ? e.target.value : styleState.style.depositModalInputs.name,
     188                card: what === 'card' ? e.target.value : styleState.style.depositModalInputs.card,
     189                expire: what === 'expire' ? e.target.value : styleState.style.depositModalInputs.expire,
     190                ccv: what === 'ccv' ? e.target.value : styleState.style.depositModalInputs.ccv,
     191                amount: what === 'amount' ? e.target.value : styleState.style.depositModalInputs.amount,
     192            }
     193        }))
     194    }
     195
     196    function onChangeWithdraw(e, what) {
     197        dispatch(setStyle({
     198            ...styleState.style,
     199            withdrawModalInputs: {
     200                citibank: what === 'citibank' ? e.target.value : styleState.style.depositModalInputs.citibank,
     201                iban: what === 'iban' ? e.target.value : styleState.style.depositModalInputs.iban,
     202                bic: what === 'bic' ? e.target.value : styleState.style.depositModalInputs.bic,
     203                beneficiary: what === 'beneficiary' ? e.target.value : styleState.style.depositModalInputs.beneficiary,
     204                address: what === 'address' ? e.target.value : styleState.style.depositModalInputs.address,
     205                amount: what === 'amount' ? e.target.value : styleState.style.depositModalInputs.amount,
     206            }
     207        }))
     208    }
    47209}
    48210
Note: See TracChangeset for help on using the changeset viewer.