Ignore:
Timestamp:
07/06/22 13:13:35 (2 years ago)
Author:
Danilo <danilo.najkov@…>
Branches:
master
Children:
899b19d
Parents:
d76b7ee
Message:

reservation module changes + contact module + menu module

File:
1 edited

Legend:

Unmodified
Added
Removed
  • frontend/src/Dashboard/Reservations.js

    rd76b7ee rcc4db18  
    11import React, {useEffect, useState} from 'react'
    2 import {Button, Modal, DatePicker, List, notification} from "antd";
     2import {Button, Modal, DatePicker, List, notification, Input} from "antd";
    33import AddNewReservation from "./AddNewReservation";
    44import moment from 'moment'
     
    1313    const [date, setDate] = useState([moment().startOf('day'), moment().add(24,'hours')]);
    1414    const [reservations, setReservations] = useState([])
     15    const [newReservations, setNewReservations] = useState([])
    1516    const [loadingReservations, setLoadingReservations] = useState(true)
    1617
     
    2627                    to: date[1].format('YYYY-MM-DDThh:mm:ss') + 'Z'
    2728                }, headers: {Authorization: sessionStorage.getItem('Auth')}
    28             })
    29                 .then(res => {
     29            }).then(res => {
     30                axios.get(env.api + 'Reservations/new', {
     31                     headers: {Authorization: sessionStorage.getItem('Auth')}
     32                }).then(newres=>{
     33                    setNewReservations(newres.data);
    3034                    setReservations(res.data);
    31                     console.log(res.data)
    3235                    setLoadingReservations(false)
    33                 }).catch(er => {
     36                })
     37            }).catch(er => {
    3438                setLoadingReservations(false)
    3539                notification['error']({
    3640                    message: 'Се случи проблем при додавање резервација. Ве молиме пробајте повторно подоцна',
    3741                });
    38 
    3942                console.log(er);
    4043            });
     
    4851    const changeReservationStatus = (id, newStatus) => {
    4952        console.log(id)
    50         axios.put(env.api + 'Reservations/'+id,{}, {
     53        axios.put(env.api + 'Reservations/'+id+'/status',{}, {
    5154            params: {
    5255                status: newStatus
     
    5962            });
    6063            console.log(er);
    61         });
    62     }
     64        })
     65    }
     66    const changeTable = (ev, item) => {
     67        axios.put(env.api + 'Reservations/'+item.id+'/table',{}, {
     68            params: {
     69                tableId: ev.target.value == '' ? 0 : ev.target.value
     70            }, headers: {Authorization: sessionStorage.getItem('Auth')}
     71        }).then(res => {
     72            console.log("success");
     73        }).catch(er => {
     74            notification['error']({
     75                message: 'Се случи проблем при менување резервација. Ве молиме пробајте повторно подоцна',
     76            });
     77            console.log(er);
     78        })
     79        setNewReservations(old =>{
     80            const newRes = old.indexOf(item);
     81            if(newRes == -1) return old;
     82            const copy = [...old];
     83            copy[newRes].table = ev.target.value;
     84            return copy;
     85        })
     86        setReservations(old =>{
     87            const newRes = old.indexOf(item);
     88            if(newRes == -1) return old;
     89            const copy = [...old];
     90            copy[newRes].table = ev.target.value;
     91            return copy;
     92        })
     93    }
     94
    6395    const ReservationType = [ 'Кратко', 'Долго', 'Настан' ];
    6496    const ReservationPlace = [ 'Внатре', 'Надвор' ];
     
    84116                    border: '1px solid lightgray'
    85117                }} >
     118                    <h3 style={{float: 'left'}}>Нови резервации</h3>
     119                </div>
     120                <List loading={loadingReservations} dataSource={newReservations} itemLayout={'horizontal'} locale={{emptyText:'Немате нови резервации'}}
     121                      renderItem={item => (
     122                          <List.Item
     123                              actions={
     124                                  item.reservationStatus == 0 ?
     125                                      [<a onClick={()=>changeReservationStatus(item.id,ReservationStatus[1])}>Прифати</a>, <a style={{color:'red'}} onClick={()=>changeReservationStatus(item.id,ReservationStatus[2])}>Отфрли</a>]
     126                                      : item.reservationStatus == 1 ? [<span style={{color:'green'}}>Прифатено</span>] : [<span style={{color:'red'}}>Отфрлено</span>]}>
     127                              <div style={{display:'flex',flexDirection:'row',justifyContent:'space-between',width:'100%', padding:'10px'}}>
     128                                  <div style={{textAlign:'start', width:'200px'}}>
     129                                      <div><b>Име:</b> {item.contactName}</div>
     130                                      <div><b>Број:</b> {item.contactNumber}</div>
     131                                  </div>
     132                                  <div style={{marginTop:'10px'}}>
     133                                      Маса: <Input style={{ width: '60px' }} type={'number'} value={item.table == 0 ? '' : item.table} onChange={(ev)=>changeTable(ev,item)}/>
     134                                  </div>
     135                                  <div>
     136                                      <div><b>Луѓе:</b> {item.persons}</div>
     137                                      <div>{ReservationPlace[item.reservationPlace]}, {ReservationType[item.reservationType]}</div>
     138                                  </div>
     139                                  <div>
     140                                      <div style={{marginTop:'10px'}}>{moment(item.startDate).format('hh:mm DD/MM/YY')}</div>
     141                                  </div>
     142                              </div>
     143                          </List.Item>
     144                      )}/>
     145            </div>
     146            <div style={{marginTop:'20px', backgroundColor:'white'}}>
     147                <div style={{
     148                    width: '100%',
     149                    height:'75px',
     150                    backgroundColor: 'white',
     151                    padding: '20px',
     152                    border: '1px solid lightgray'
     153                }} >
    86154                    <h3 style={{float: 'left'}}>Сите резервации</h3>
    87155                    <RangePicker
     
    89157                        style={{float:'right'}}
    90158                        ranges={{
     159                            'Наредни 3 часа': [moment(), moment().add(3,'hours')],
    91160                            'Следни 24 часа': [moment().startOf('day'), moment().add(24,'hours')],
    92161                            'Овој месец': [moment().startOf('month'), moment().endOf('month')],
     
    96165                    />
    97166                </div>
    98                 <List loading={loadingReservations} dataSource={reservations} itemLayout={'horizontal'}
     167                <List loading={loadingReservations} dataSource={reservations} itemLayout={'horizontal'} locale={{emptyText:'Нема резервации за овој период'}}
    99168                      renderItem={item => (
    100169                          <List.Item
     
    107176                                    <div><b>Име:</b> {item.contactName}</div>
    108177                                    <div><b>Број:</b> {item.contactNumber}</div>
     178                                </div>
     179                                <div style={{marginTop:'10px'}}>
     180                                    Маса: <Input style={{ width: '60px' }} type={'number'} value={item.table == 0 ? '' : item.table} onChange={(ev)=>changeTable(ev,item)}/>
    109181                                </div>
    110182                                <div>
Note: See TracChangeset for help on using the changeset viewer.