Index: frontend/src/Dashboard/AddNewReservation.js
===================================================================
--- frontend/src/Dashboard/AddNewReservation.js	(revision d76b7ee9036d8c2315eb8ce0de42c77ae3e87822)
+++ frontend/src/Dashboard/AddNewReservation.js	(revision d76b7ee9036d8c2315eb8ce0de42c77ae3e87822)
@@ -0,0 +1,125 @@
+import React,{useState,useEffect} from 'react'
+import {DatePicker, Form, Input, Modal, notification, Radio, Select} from "antd";
+import axios from "axios";
+import env from "../env";
+
+const AddNewReservation = ({ setModalSaveLoading, setModalVisible, fetchData}) => {
+
+    const saveNewReservation = (data) => {
+        setModalSaveLoading(true)
+        const sendObj = {...data,startDate: data.startDate.format('YYYY-MM-DDThh:mm:ss')+'Z', persons: parseInt(data.persons)}
+        console.log(sendObj)
+        axios.post(env.api+"Reservations",sendObj).then(el => {
+            setModalSaveLoading(false)
+            setModalVisible(false)
+            if(fetchData) fetchData()
+            Modal.success({title:'Испратено', content:'Вашата резервација е испратена.'})
+        }).catch(er=>{
+            setModalSaveLoading(false)
+            notification['error']({
+                message: 'Се случи проблем при додавање резервација. Ве молиме пробајте повторно подоцна',
+            });
+
+            console.log(er);
+        });
+    }
+
+
+    return(
+        <div>
+            <Form onFinish={saveNewReservation}
+                  id={'newResForm'}
+                  onFinishFailed={()=>
+                      notification['error']({
+                          message: 'Ве молиме поправете ги сите грешки пред зачувување!',
+                      })}>
+                <i style={{color:'gray'}}>Датум и време за вашата резервација</i>
+                <Form.Item
+                    label="Почеток"
+                    name="startDate"
+                    rules={[
+                        {
+                            required: true,
+                            message: 'Ве молиме внесете датум и време!',
+                        },
+                    ]}
+                >
+                    <DatePicker showTime showNow={false} format={'DD.MM HH:mm'} placeholder={'Избери датум и време'} style={{width:'100%'}}/>
+                </Form.Item>
+                <i style={{color:'gray'}}>Внесете број на гости за резервацијата</i>
+                <Form.Item
+                    label="Број на гости"
+                    name="persons"
+                    rules={[
+                        {
+                            required: true,
+                            message: 'Ве молиме внесете број на гости!',
+                        },
+                    ]}
+                >
+                    <Input placeholder={'Внесете број'} type={'number'}/>
+                </Form.Item>
+                <i style={{color:'gray'}}>Изберете место и тип на резервација</i>
+                <Form.Item
+                    label="Место"
+                    name="reservationPlace"
+                    rules={[
+                        {
+                            required: true,
+                            message: 'Ве молиме изберете место!',
+                        },
+                    ]}
+                >
+                    <Select>
+                        <Select.Option value={0}>Внатре</Select.Option>
+                        <Select.Option value={1}>Надвор</Select.Option>
+                    </Select>
+                </Form.Item>
+                <Form.Item
+                    label="Тип"
+                    name="reservationType"
+                    rules={[
+                        {
+                            required: true,
+                            message: 'Ве молиме изберете тип!',
+                        },
+                    ]}
+                >
+                    <Select>
+                        <Select.Option value={0}>Кратко</Select.Option>
+                        <Select.Option value={1}>Долго</Select.Option>
+                        <Select.Option value={2}>Настан</Select.Option>
+                    </Select>
+                </Form.Item>
+                <i style={{color:'gray'}}>Контакт информации</i>
+                <Form.Item
+                    label="Име"
+                    name="contactName"
+                    rules={[
+                        {
+                            required: true,
+                            message: 'Ве молиме внесете име!',
+                        },
+                    ]}
+                >
+                    <Input/>
+                </Form.Item>
+                <Form.Item
+                    label="Телефонски број"
+                    name="contactNumber"
+                    rules={[
+                        {
+                            required: true,
+                            message: 'Ве молиме внесете број за контакт!',
+                        },
+                    ]}
+                >
+                    <Input placeholder={'пр. 070123456'}/>
+                </Form.Item>
+
+            </Form>
+        </div>
+    )
+}
+
+export default AddNewReservation;
Index: frontend/src/Dashboard/Reservations.js
===================================================================
--- frontend/src/Dashboard/Reservations.js	(revision d76b7ee9036d8c2315eb8ce0de42c77ae3e87822)
+++ frontend/src/Dashboard/Reservations.js	(revision d76b7ee9036d8c2315eb8ce0de42c77ae3e87822)
@@ -0,0 +1,138 @@
+import React, {useEffect, useState} from 'react'
+import {Button, Modal, DatePicker, List, notification} from "antd";
+import AddNewReservation from "./AddNewReservation";
+import moment from 'moment'
+import axios from "axios";
+import env from '../env'
+
+const {RangePicker} = DatePicker
+
+const Reservations = ({}) => {
+    const [newReservationModal, setNewReservationModal] = useState(false);
+    const [saveModalLoading, setSaveModalLoading] = useState(false);
+    const [date, setDate] = useState([moment().startOf('day'), moment().add(24,'hours')]);
+    const [reservations, setReservations] = useState([])
+    const [loadingReservations, setLoadingReservations] = useState(true)
+
+    useEffect(()=> {
+        getReservations()
+    },[])
+    const getReservations = () =>{
+        setLoadingReservations(true)
+        setDate(date => {
+            axios.get(env.api + 'Reservations', {
+                params: {
+                    from: date[0].format('YYYY-MM-DDThh:mm:ss') + 'Z',
+                    to: date[1].format('YYYY-MM-DDThh:mm:ss') + 'Z'
+                }, headers: {Authorization: sessionStorage.getItem('Auth')}
+            })
+                .then(res => {
+                    setReservations(res.data);
+                    console.log(res.data)
+                    setLoadingReservations(false)
+                }).catch(er => {
+                setLoadingReservations(false)
+                notification['error']({
+                    message: 'Се случи проблем при додавање резервација. Ве молиме пробајте повторно подоцна',
+                });
+
+                console.log(er);
+            });
+            return date;
+        })
+    }
+    const dateChanged = (cng) => {
+        setDate(cng)
+        getReservations()
+    }
+    const changeReservationStatus = (id, newStatus) => {
+        console.log(id)
+        axios.put(env.api + 'Reservations/'+id,{}, {
+            params: {
+                status: newStatus
+            }, headers: {Authorization: sessionStorage.getItem('Auth')}
+        }).then(res => {
+            getReservations()
+        }).catch(er => {
+            notification['error']({
+                message: 'Се случи проблем при менување резервација. Ве молиме пробајте повторно подоцна',
+            });
+            console.log(er);
+        });
+    }
+    const ReservationType = [ 'Кратко', 'Долго', 'Настан' ];
+    const ReservationPlace = [ 'Внатре', 'Надвор' ];
+    const ReservationStatus = [ 'New', 'Confirmed', 'Cancelled' ];
+    return(
+        <div style={{padding:'20px'}}>
+            <div style={{
+                width: '100%',
+                backgroundColor: 'white',
+                padding: '20px',
+                height:'75px',
+                border: '1px solid lightgray'
+            }} id={'expandMain'}>
+                <h2 style={{float: 'left'}}>Резервации</h2>
+                <Button style={{float:'right'}} type={'primary'} onClick={()=>setNewReservationModal(true)}>Нова резервација</Button>
+            </div>
+            <div style={{marginTop:'20px', backgroundColor:'white'}}>
+                <div style={{
+                    width: '100%',
+                    height:'75px',
+                    backgroundColor: 'white',
+                    padding: '20px',
+                    border: '1px solid lightgray'
+                }} >
+                    <h3 style={{float: 'left'}}>Сите резервации</h3>
+                    <RangePicker
+                        onChange={dateChanged}
+                        style={{float:'right'}}
+                        ranges={{
+                            'Следни 24 часа': [moment().startOf('day'), moment().add(24,'hours')],
+                            'Овој месец': [moment().startOf('month'), moment().endOf('month')],
+                            'Последни 30 дена': [moment().subtract(30, 'days'), moment()],
+                        }}
+                        defaultValue={date}
+                    />
+                </div>
+                <List loading={loadingReservations} dataSource={reservations} itemLayout={'horizontal'}
+                      renderItem={item => (
+                          <List.Item
+                              actions={
+                                  item.reservationStatus == 0 ?
+                                      [<a onClick={()=>changeReservationStatus(item.id,ReservationStatus[1])}>Прифати</a>, <a style={{color:'red'}} onClick={()=>changeReservationStatus(item.id,ReservationStatus[2])}>Отфрли</a>]
+                                      : item.reservationStatus == 1 ? [<span style={{color:'green'}}>Прифатено</span>] : [<span style={{color:'red'}}>Отфрлено</span>]}>
+                            <div style={{display:'flex',flexDirection:'row',justifyContent:'space-between',width:'100%', padding:'10px'}}>
+                                <div style={{textAlign:'start', width:'200px'}}>
+                                    <div><b>Име:</b> {item.contactName}</div>
+                                    <div><b>Број:</b> {item.contactNumber}</div>
+                                </div>
+                                <div>
+                                    <div><b>Луѓе:</b> {item.persons}</div>
+                                    <div>{ReservationPlace[item.reservationPlace]}, {ReservationType[item.reservationType]}</div>
+                                </div>
+                                <div>
+                                    <div style={{marginTop:'10px'}}>{moment(item.startDate).format('hh:mm DD/MM/YY')}</div>
+                                </div>
+                            </div>
+                          </List.Item>
+                      )}/>
+            </div>
+            <Modal
+                style={{top: 20}}
+                width={'700px'}
+                title="Нова Резервација"
+                footer={[
+                    <Button form="newResForm" key="submit" htmlType="submit" type={'primary'} loading={saveModalLoading}>
+                        Прати
+                    </Button>
+                ]}
+                onCancel={()=>setNewReservationModal(false)}
+                visible={newReservationModal}>
+                <AddNewReservation setModalSaveLoading={setSaveModalLoading} setModalVisible={setNewReservationModal} fetchData={getReservations}/>
+            </Modal>
+        </div>
+    )
+}
+
+export default Reservations;
