Index: frontend/src/App.js
===================================================================
--- frontend/src/App.js	(revision a26f6a1dc0314af7fc65fdabb78f1acbaca506a0)
+++ frontend/src/App.js	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -17,4 +17,5 @@
 import SendReset from "./Auth/SendReset";
 import Reset from "./Auth/Reset";
+import ToDo from "./Dashboard/ToDo";
 
 
@@ -48,5 +49,5 @@
               <Route path="/dashboard/reservations" element={<Reservations/>}/>
               <Route path="/dashboard/reviews" element={<Review/>}/>
-              <Route path="/dashboard/todo" element={'todo'}/>
+              <Route path="/dashboard/todo" element={<ToDo/>}/>
             </Route>
             <Route path="/login" element={loading ? <Spin /> :  !user ? <Login setUser={setUser}/> :  <Navigate to="/dashboard" replace={true} />}/>
Index: frontend/src/Dashboard/ToDo.js
===================================================================
--- frontend/src/Dashboard/ToDo.js	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ frontend/src/Dashboard/ToDo.js	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,232 @@
+import React, {useEffect, useState} from 'react'
+import {
+    Button,
+    Card,
+    DatePicker,
+    Dropdown,
+    Form,
+    Input,
+    List, Menu,
+    Modal,
+    notification,
+    Rate,
+    Select, Space,
+    Spin,
+    Tooltip
+} from "antd";
+import moment from "moment";
+import axios from "axios";
+import env from "../env";
+import AddNewReservation from "./AddNewReservation";
+import {DownOutlined} from "@ant-design/icons";
+
+const ToDo = ({}) => {
+
+    const [loading, setLoading] = useState(true);
+    const [todoItems, setToDoItems] = useState([]);
+    const [newTodoVisible, setNewTodoVisible] = useState(false);
+    const [saveNewTodoLoading, setSaveNewTodoLoading] = useState(false)
+    const [restaurant, setRestaurant] = useState({reviews:[]})
+    const [showReview, setShowReview] = useState(null);
+    const [sortSelect, setSortSelect] = useState('date')
+
+    useEffect(()=> {
+        setLoading(true);
+        getToDos()
+        getRestaurant()
+    },[])
+
+    const getToDos = () => {
+        setSortSelect(type=> {
+            axios.get(env.api + 'ToDo', {
+                params: {sortBy: type},
+                headers: {Authorization: localStorage.getItem('Auth')}
+            }).then(res => {
+                console.log(res.data)
+                setToDoItems(res.data);
+                setLoading(false);
+            });
+        })
+    }
+
+    const updateSort = (type)=>{
+        setSortSelect(type);
+        getToDos();
+    }
+
+    const createToDo = (data) => {
+        console.log(data)
+        setSaveNewTodoLoading(true);
+        axios.post(env.api + 'ToDo', data, {headers:{Authorization:localStorage.getItem('Auth')}}).then(res=>{
+            setSaveNewTodoLoading(false);
+            setNewTodoVisible(false);
+            getToDos()
+        });
+    }
+
+
+    const getRestaurant = () => {
+        axios.get(env.api + 'Restaurants').then(res=>{
+            setRestaurant(res.data);
+            setLoading(false);
+        });
+    }
+
+    const changeStatus = (id, newStatus) => {
+        axios.put(env.api + 'ToDo/'+id, {}, {params:{newStatus:newStatus}, headers:{Authorization:localStorage.getItem('Auth')}}).then(res=>{
+            getToDos()
+        });
+    }
+
+    return(
+        <div style={{padding: '20px',textAlign:'center'}}>
+            <div style={{
+                width: '100%',
+                backgroundColor: 'white',
+                padding: '20px',
+                height:'75px',
+                border: '1px solid lightgray'
+            }} id={'expandMain'}>
+                <h2 style={{float: 'left'}}>ToDo листа</h2>
+                <Button style={{float:'right'}} type={'primary'} onClick={()=>setNewTodoVisible(true)}>Внеси нов запис</Button>
+                <div style={{float:'right', marginRight:'20px'}}>
+                    <span style={{marginRight:'5px'}}>Начин на подредување:</span>
+                    <Select
+                        defaultValue="date"
+                        style={{
+                            width: 120,
+                        }}
+                        onChange={(el)=>updateSort(el)}
+                    >
+                        <Select.Option value="date">Датум</Select.Option>
+                        <Select.Option value="priority">Приоритет</Select.Option>
+                    </Select>
+                </div>
+            </div>
+            {loading ? <Spin style={{margin: '20px', textAlign:'center'}}/> :
+                <div style={{textAlign:'start'}}>
+                    <List dataSource={todoItems} itemLayout={'horizontal'} locale={{emptyText:'Немате направено ToDo'}}
+                          renderItem={item => (
+                              <Card title={item.title} style={{width:'98%',backgroundColor:'white',margin:'1%'}}
+                                    actions={
+                                      item.status == 0 ?
+                                          [<a style={{color:'#1890ff'}} onClick={()=>changeStatus(item.id,1)}>Започни</a>, <a style={{color:'red'}} onClick={()=>changeStatus(item.id,3)}>Отфрли</a>]
+                                          : item.status == 1 ? [<a style={{color:'green'}} onClick={()=>changeStatus(item.id,2)}>Заврши</a>, <a style={{color:'red'}} onClick={()=>changeStatus(item.id,3)}>Отфрли</a>]
+                                          : []}
+                                    extra={<div style={{textAlign:'end'}}>
+                                            {
+                                                item.status == 0 ? [<span style={{color:'#1890ff'}}>Ново</span>] :
+                                                    item.status == 1 ? [<span style={{color:'orange'}}>Започнато</span>] :
+                                                item.status == 2 ? [<span style={{color:'green'}}>Завршено</span>] :
+                                                    item.status == 3 ? [<span style={{color:'red'}}>Отфрлено</span>] : ''
+                                            }
+                                            <br/>
+                                            <span style={{color:'gray'}}>{moment(item.createdAt).format("DD.MM.yyyy")}</span>
+                                        </div>}
+                                    >
+                                  <p>{item.description}</p>
+                                  <div style={{borderTop:'1px solid rgb(242, 242, 242)', marginBottom:'15px'}}/>
+                                  <span style={{float:'left'}}>{item.linkedReview ? <p onClick={() => setShowReview(item.linkedReview)}>Поврзана оценка: <span style={{textDecoration:'underline', cursor:'pointer'}}>{item.linkedReview.id +' - '+ item.linkedReview.title}</span></p> : <></>}</span>
+                                  <span style={{float:'right'}}>Приоритет: {item.priority}</span>
+                              </Card>
+                          )}/>
+                </div>
+
+            }
+            <Modal
+                style={{top: 20}}
+                width={'700px'}
+                title="Нова ToDo"
+                footer={[
+                    <Button form="newToDoForm" key="submit" htmlType="submit" type={'primary'} loading={saveNewTodoLoading}>
+                        Прати
+                    </Button>
+                ]}
+                onCancel={()=>setNewTodoVisible(false)}
+                visible={newTodoVisible}>
+                <div>
+                    <Form onFinish={createToDo}
+                          id={'newToDoForm'}
+                          onFinishFailed={()=>
+                              notification['error']({
+                                  message: 'Ве молиме поправете ги сите грешки пред зачувување!',
+                              })}>
+                        <Form.Item
+                            label="Наслов"
+                            name="title"
+                            rules={[
+                                {
+                                    required: true,
+                                    message: 'Ве молиме внесете наслов!',
+                                },
+                            ]}
+                        >
+                            <Input/>
+                        </Form.Item>
+                        <Form.Item
+                            label="Опис"
+                            name="description"
+                            rules={[
+                                {
+                                    required: true,
+                                    message: 'Ве молиме внесете опис!',
+                                },
+                            ]}
+                        >
+                            <Input.TextArea rows={4}/>
+                        </Form.Item>
+                        <Form.Item
+                            label="Приоритет"
+                            name="priority"
+                            rules={[
+                                {
+                                    required: true,
+                                    message: 'Ве молиме внесете приоритет!',
+                                },
+                                {
+                                    regex:  new RegExp('^[1-9]\\d*$'),
+                                    message: 'Ве молиме внесете позитивен број!',
+                                },
+                            ]}
+                        >
+                            <Input type={'number'}/>
+                        </Form.Item>
+                        <Form.Item
+                            label="Поврзана оценка"
+                            name="reviewId"
+                        >
+                            <Select>
+                                {restaurant.reviews.map(el =>(
+                                    <Select.Option value={el.id}>{el.id +" - "+ el.title}</Select.Option>
+                                ))}
+                            </Select>
+                        </Form.Item>
+                    </Form>
+                </div>
+            </Modal>
+            <Modal
+                style={{top: '10%', padding:'0'}}
+                bodyStyle={{backgroundColor:'rgb(242, 242, 242)'}}
+                width={'700px'}
+                title="Поврзана оценка"
+                footer={[
+                    <Button onClick={()=>setShowReview(null)}>
+                        Затвори
+                    </Button>
+                ]}
+                onCancel={()=>setShowReview(null)}
+                visible={showReview != null}>
+                <div style={{backgroundColor:'rgb(242, 242, 242)'}}>
+                    {showReview ?
+                        <Card title={showReview.title} >
+                            <p>{showReview.description}</p>
+                            <Rate disabled value={showReview.stars}/>
+                            <p style={{color: 'gray'}}>{moment(showReview.createdAt).format("DD.MM.yyyy")}</p>
+                        </Card>
+                    :<></>}
+                </div>
+            </Modal>
+        </div>
+    )
+}
+export default ToDo;
Index: resTools_backend/backend/Controllers/ToDoController.cs
===================================================================
--- resTools_backend/backend/Controllers/ToDoController.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Controllers/ToDoController.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,44 @@
+﻿namespace backend.Controllers;
+
+using backend.DTOs;
+using backend.Entities;
+using backend.Helpers;
+using backend.Models;
+using backend.Services;
+using Microsoft.AspNetCore.Mvc;
+using System.Security.Claims;
+
+[ApiController]
+[Route("[controller]")]
+public class ToDoController : ControllerBase
+{
+    private readonly IToDoService _toDoService = null;
+
+    public ToDoController(IToDoService todoService)
+    {
+        _toDoService = todoService;
+    }
+
+    [Authorize]
+    [HttpPost()]
+    public async Task<IActionResult> CreateToDoItem([FromBody] CreateToDoItemRequest req)
+    {
+        await _toDoService.AddNewToDoItem(req);
+        return Ok();
+    }
+
+    [Authorize]
+    [HttpGet()]
+    public async Task<List<ToDoItemResponse>> GetToDoItems(string sortBy)
+    {
+        return await _toDoService.GetToDoItems(sortBy);
+    }
+
+    [Authorize]
+    [HttpPut("{id}")]
+    public async Task<IActionResult> UpdateToDoStatus(int id, ToDoStatus newStatus)
+    {
+        await _toDoService.UpdateToDoItemStatus(id, newStatus);
+        return Ok();
+    }
+}
Index: resTools_backend/backend/DTOs/CreateToDoItemRequest.cs
===================================================================
--- resTools_backend/backend/DTOs/CreateToDoItemRequest.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/DTOs/CreateToDoItemRequest.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,10 @@
+﻿namespace backend.DTOs
+{
+    public class CreateToDoItemRequest
+    {
+        public string Title { get; set; }
+        public string Description { get; set; }
+        public int ReviewId { get; set; }
+        public int Priority { get; set; }
+    }
+}
Index: resTools_backend/backend/DTOs/ToDoItemResponse.cs
===================================================================
--- resTools_backend/backend/DTOs/ToDoItemResponse.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/DTOs/ToDoItemResponse.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,15 @@
+﻿using backend.Entities;
+
+namespace backend.DTOs
+{
+    public class ToDoItemResponse
+    {
+        public int Id { get; set; }
+        public DateTime CreatedAt { get; set; }
+        public string Title { get; set; }
+        public string Description { get; set; }
+        public ReviewResponse? LinkedReview { get; set; }
+        public ToDoStatus Status { get; set; }
+        public int Priority { get; set; }
+    }
+}
Index: resTools_backend/backend/Data/DataContext.cs
===================================================================
--- resTools_backend/backend/Data/DataContext.cs	(revision a26f6a1dc0314af7fc65fdabb78f1acbaca506a0)
+++ resTools_backend/backend/Data/DataContext.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -80,4 +80,18 @@
         }
 
+        private DbSet<ToDoItem> toDoItems;
+        public DbSet<ToDoItem> ToDoItems
+        {
+            get
+            {
+                if (toDoItems == null)
+                {
+                    toDoItems = Set<ToDoItem>();
+                }
+
+                return toDoItems;
+            }
+        }
+
 
         protected override void OnModelCreating(ModelBuilder modelBuilder)
@@ -131,4 +145,11 @@
             modelBuilder.Entity<Review>()
             .HasOne(p => p.User);
+
+            //
+            // ToDoItem
+            // 
+            modelBuilder.Entity<ToDoItem>().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd();
+            modelBuilder.Entity<ToDoItem>()
+            .HasOne(p => p.LinkedReview);
         }
     }
Index: resTools_backend/backend/Entities/ToDoItem.cs
===================================================================
--- resTools_backend/backend/Entities/ToDoItem.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Entities/ToDoItem.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,14 @@
+﻿namespace backend.Entities
+{
+    public class ToDoItem
+    {
+        public int Id { get; set; }
+        public DateTime CreatedAt { get; set; }
+        public string Title { get; set; }
+        public string Description { get; set; }
+        public virtual Review? LinkedReview { get; set; }
+        public ToDoStatus Status { get; set; }
+        public int Priority { get; set; }
+    }
+    public enum ToDoStatus { New, InProgress, Completed, Cancelled}
+}
Index: resTools_backend/backend/Migrations/20220822164146_ToDoItems.Designer.cs
===================================================================
--- resTools_backend/backend/Migrations/20220822164146_ToDoItems.Designer.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Migrations/20220822164146_ToDoItems.Designer.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,321 @@
+﻿// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using backend.Data;
+
+#nullable disable
+
+namespace backend.Migrations
+{
+    [DbContext(typeof(DataContext))]
+    [Migration("20220822164146_ToDoItems")]
+    partial class ToDoItems
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "6.0.3")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("backend.Entities.MenuItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("Price")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.ToTable("MenuItems");
+                });
+
+            modelBuilder.Entity("backend.Entities.Reservation", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("ContactName")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<string>("ContactNumber")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("Persons")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationPlace")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationStatus")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationType")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<DateTime>("StartDate")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<int>("Table")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.ToTable("Reservations");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Address")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<byte[]>("Image")
+                        .IsRequired()
+                        .HasColumnType("bytea");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int?>("OwnerFk")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Phone")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OwnerFk")
+                        .IsUnique();
+
+                    b.ToTable("Restoraunts");
+                });
+
+            modelBuilder.Entity("backend.Entities.Review", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Stars")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("Reviews");
+                });
+
+            modelBuilder.Entity("backend.Entities.ToDoItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("LinkedReviewId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("LinkedReviewId");
+
+                    b.ToTable("ToDoItems");
+                });
+
+            modelBuilder.Entity("backend.Entities.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("ConfirmationURL")
+                        .HasColumnType("text");
+
+                    b.Property<DateTime?>("ConfirmationValidTo")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<bool>("IsAdmin")
+                        .HasColumnType("boolean");
+
+                    b.Property<bool>("IsConfirmed")
+                        .HasColumnType("boolean");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<string>("PasswordResetURL")
+                        .HasColumnType("text");
+
+                    b.Property<DateTime?>("PasswordResetValidTo")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Users");
+                });
+
+            modelBuilder.Entity("backend.Entities.MenuItem", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Menu")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+                });
+
+            modelBuilder.Entity("backend.Entities.Reservation", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Reservations")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.HasOne("backend.Entities.User", "Owner")
+                        .WithOne("Restaurant")
+                        .HasForeignKey("backend.Entities.Restaurant", "OwnerFk");
+
+                    b.Navigation("Owner");
+                });
+
+            modelBuilder.Entity("backend.Entities.Review", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Reviews")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("backend.Entities.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("backend.Entities.ToDoItem", b =>
+                {
+                    b.HasOne("backend.Entities.Review", "LinkedReview")
+                        .WithMany()
+                        .HasForeignKey("LinkedReviewId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("LinkedReview");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.Navigation("Menu");
+
+                    b.Navigation("Reservations");
+
+                    b.Navigation("Reviews");
+                });
+
+            modelBuilder.Entity("backend.Entities.User", b =>
+                {
+                    b.Navigation("Restaurant")
+                        .IsRequired();
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
Index: resTools_backend/backend/Migrations/20220822164146_ToDoItems.cs
===================================================================
--- resTools_backend/backend/Migrations/20220822164146_ToDoItems.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Migrations/20220822164146_ToDoItems.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,48 @@
+﻿using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace backend.Migrations
+{
+    public partial class ToDoItems : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "ToDoItems",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
+                    Title = table.Column<string>(type: "text", nullable: false),
+                    Description = table.Column<string>(type: "text", nullable: false),
+                    LinkedReviewId = table.Column<int>(type: "integer", nullable: false),
+                    Status = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ToDoItems", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_ToDoItems_Reviews_LinkedReviewId",
+                        column: x => x.LinkedReviewId,
+                        principalTable: "Reviews",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ToDoItems_LinkedReviewId",
+                table: "ToDoItems",
+                column: "LinkedReviewId");
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "ToDoItems");
+        }
+    }
+}
Index: resTools_backend/backend/Migrations/20220822165148_ToDoItems-nullable-review.Designer.cs
===================================================================
--- resTools_backend/backend/Migrations/20220822165148_ToDoItems-nullable-review.Designer.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Migrations/20220822165148_ToDoItems-nullable-review.Designer.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,319 @@
+﻿// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using backend.Data;
+
+#nullable disable
+
+namespace backend.Migrations
+{
+    [DbContext(typeof(DataContext))]
+    [Migration("20220822165148_ToDoItems-nullable-review")]
+    partial class ToDoItemsnullablereview
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "6.0.3")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("backend.Entities.MenuItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("Price")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.ToTable("MenuItems");
+                });
+
+            modelBuilder.Entity("backend.Entities.Reservation", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("ContactName")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<string>("ContactNumber")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("Persons")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationPlace")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationStatus")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationType")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<DateTime>("StartDate")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<int>("Table")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.ToTable("Reservations");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Address")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<byte[]>("Image")
+                        .IsRequired()
+                        .HasColumnType("bytea");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int?>("OwnerFk")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Phone")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OwnerFk")
+                        .IsUnique();
+
+                    b.ToTable("Restoraunts");
+                });
+
+            modelBuilder.Entity("backend.Entities.Review", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Stars")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("Reviews");
+                });
+
+            modelBuilder.Entity("backend.Entities.ToDoItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int?>("LinkedReviewId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("LinkedReviewId");
+
+                    b.ToTable("ToDoItems");
+                });
+
+            modelBuilder.Entity("backend.Entities.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("ConfirmationURL")
+                        .HasColumnType("text");
+
+                    b.Property<DateTime?>("ConfirmationValidTo")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<bool>("IsAdmin")
+                        .HasColumnType("boolean");
+
+                    b.Property<bool>("IsConfirmed")
+                        .HasColumnType("boolean");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<string>("PasswordResetURL")
+                        .HasColumnType("text");
+
+                    b.Property<DateTime?>("PasswordResetValidTo")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Users");
+                });
+
+            modelBuilder.Entity("backend.Entities.MenuItem", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Menu")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+                });
+
+            modelBuilder.Entity("backend.Entities.Reservation", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Reservations")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.HasOne("backend.Entities.User", "Owner")
+                        .WithOne("Restaurant")
+                        .HasForeignKey("backend.Entities.Restaurant", "OwnerFk");
+
+                    b.Navigation("Owner");
+                });
+
+            modelBuilder.Entity("backend.Entities.Review", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Reviews")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("backend.Entities.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("backend.Entities.ToDoItem", b =>
+                {
+                    b.HasOne("backend.Entities.Review", "LinkedReview")
+                        .WithMany()
+                        .HasForeignKey("LinkedReviewId");
+
+                    b.Navigation("LinkedReview");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.Navigation("Menu");
+
+                    b.Navigation("Reservations");
+
+                    b.Navigation("Reviews");
+                });
+
+            modelBuilder.Entity("backend.Entities.User", b =>
+                {
+                    b.Navigation("Restaurant")
+                        .IsRequired();
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
Index: resTools_backend/backend/Migrations/20220822165148_ToDoItems-nullable-review.cs
===================================================================
--- resTools_backend/backend/Migrations/20220822165148_ToDoItems-nullable-review.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Migrations/20220822165148_ToDoItems-nullable-review.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,56 @@
+﻿using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace backend.Migrations
+{
+    public partial class ToDoItemsnullablereview : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_ToDoItems_Reviews_LinkedReviewId",
+                table: "ToDoItems");
+
+            migrationBuilder.AlterColumn<int>(
+                name: "LinkedReviewId",
+                table: "ToDoItems",
+                type: "integer",
+                nullable: true,
+                oldClrType: typeof(int),
+                oldType: "integer");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_ToDoItems_Reviews_LinkedReviewId",
+                table: "ToDoItems",
+                column: "LinkedReviewId",
+                principalTable: "Reviews",
+                principalColumn: "Id");
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_ToDoItems_Reviews_LinkedReviewId",
+                table: "ToDoItems");
+
+            migrationBuilder.AlterColumn<int>(
+                name: "LinkedReviewId",
+                table: "ToDoItems",
+                type: "integer",
+                nullable: false,
+                defaultValue: 0,
+                oldClrType: typeof(int),
+                oldType: "integer",
+                oldNullable: true);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_ToDoItems_Reviews_LinkedReviewId",
+                table: "ToDoItems",
+                column: "LinkedReviewId",
+                principalTable: "Reviews",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+        }
+    }
+}
Index: resTools_backend/backend/Migrations/20220824133642_Priority-ToDO.Designer.cs
===================================================================
--- resTools_backend/backend/Migrations/20220824133642_Priority-ToDO.Designer.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Migrations/20220824133642_Priority-ToDO.Designer.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,322 @@
+﻿// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using backend.Data;
+
+#nullable disable
+
+namespace backend.Migrations
+{
+    [DbContext(typeof(DataContext))]
+    [Migration("20220824133642_Priority-ToDO")]
+    partial class PriorityToDO
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "6.0.3")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("backend.Entities.MenuItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("Price")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.ToTable("MenuItems");
+                });
+
+            modelBuilder.Entity("backend.Entities.Reservation", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("ContactName")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<string>("ContactNumber")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("Persons")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationPlace")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationStatus")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("ReservationType")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<DateTime>("StartDate")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<int>("Table")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.ToTable("Reservations");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Address")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<byte[]>("Image")
+                        .IsRequired()
+                        .HasColumnType("bytea");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int?>("OwnerFk")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Phone")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OwnerFk")
+                        .IsUnique();
+
+                    b.ToTable("Restoraunts");
+                });
+
+            modelBuilder.Entity("backend.Entities.Review", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("RestaurantId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Stars")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RestaurantId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("Reviews");
+                });
+
+            modelBuilder.Entity("backend.Entities.ToDoItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int?>("LinkedReviewId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Priority")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("LinkedReviewId");
+
+                    b.ToTable("ToDoItems");
+                });
+
+            modelBuilder.Entity("backend.Entities.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("ConfirmationURL")
+                        .HasColumnType("text");
+
+                    b.Property<DateTime?>("ConfirmationValidTo")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<bool>("IsAdmin")
+                        .HasColumnType("boolean");
+
+                    b.Property<bool>("IsConfirmed")
+                        .HasColumnType("boolean");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<string>("PasswordResetURL")
+                        .HasColumnType("text");
+
+                    b.Property<DateTime?>("PasswordResetValidTo")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Users");
+                });
+
+            modelBuilder.Entity("backend.Entities.MenuItem", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Menu")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+                });
+
+            modelBuilder.Entity("backend.Entities.Reservation", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Reservations")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.HasOne("backend.Entities.User", "Owner")
+                        .WithOne("Restaurant")
+                        .HasForeignKey("backend.Entities.Restaurant", "OwnerFk");
+
+                    b.Navigation("Owner");
+                });
+
+            modelBuilder.Entity("backend.Entities.Review", b =>
+                {
+                    b.HasOne("backend.Entities.Restaurant", "Restaurant")
+                        .WithMany("Reviews")
+                        .HasForeignKey("RestaurantId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("backend.Entities.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Restaurant");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("backend.Entities.ToDoItem", b =>
+                {
+                    b.HasOne("backend.Entities.Review", "LinkedReview")
+                        .WithMany()
+                        .HasForeignKey("LinkedReviewId");
+
+                    b.Navigation("LinkedReview");
+                });
+
+            modelBuilder.Entity("backend.Entities.Restaurant", b =>
+                {
+                    b.Navigation("Menu");
+
+                    b.Navigation("Reservations");
+
+                    b.Navigation("Reviews");
+                });
+
+            modelBuilder.Entity("backend.Entities.User", b =>
+                {
+                    b.Navigation("Restaurant")
+                        .IsRequired();
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
Index: resTools_backend/backend/Migrations/20220824133642_Priority-ToDO.cs
===================================================================
--- resTools_backend/backend/Migrations/20220824133642_Priority-ToDO.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Migrations/20220824133642_Priority-ToDO.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,26 @@
+﻿using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace backend.Migrations
+{
+    public partial class PriorityToDO : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<int>(
+                name: "Priority",
+                table: "ToDoItems",
+                type: "integer",
+                nullable: false,
+                defaultValue: 0);
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "Priority",
+                table: "ToDoItems");
+        }
+    }
+}
Index: resTools_backend/backend/Migrations/DataContextModelSnapshot.cs
===================================================================
--- resTools_backend/backend/Migrations/DataContextModelSnapshot.cs	(revision a26f6a1dc0314af7fc65fdabb78f1acbaca506a0)
+++ resTools_backend/backend/Migrations/DataContextModelSnapshot.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -168,4 +168,39 @@
                 });
 
+            modelBuilder.Entity("backend.Entities.ToDoItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<int?>("LinkedReviewId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Priority")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("LinkedReviewId");
+
+                    b.ToTable("ToDoItems");
+                });
+
             modelBuilder.Entity("backend.Entities.User", b =>
                 {
@@ -257,4 +292,13 @@
                 });
 
+            modelBuilder.Entity("backend.Entities.ToDoItem", b =>
+                {
+                    b.HasOne("backend.Entities.Review", "LinkedReview")
+                        .WithMany()
+                        .HasForeignKey("LinkedReviewId");
+
+                    b.Navigation("LinkedReview");
+                });
+
             modelBuilder.Entity("backend.Entities.Restaurant", b =>
                 {
Index: resTools_backend/backend/Program.cs
===================================================================
--- resTools_backend/backend/Program.cs	(revision a26f6a1dc0314af7fc65fdabb78f1acbaca506a0)
+++ resTools_backend/backend/Program.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -50,4 +50,5 @@
 builder.Services.AddScoped<IReviewService, ReviewService>();
 builder.Services.AddScoped<ISmsService, SmsService>();
+builder.Services.AddScoped<IToDoService, ToDoService>();
 
 builder.Services.AddTransient<IEmailSender, EmailSender>();
Index: resTools_backend/backend/Services/ToDoService.cs
===================================================================
--- resTools_backend/backend/Services/ToDoService.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
+++ resTools_backend/backend/Services/ToDoService.cs	(revision a569b7c47ec1eff82cdd9fe4da6371d29ab9e984)
@@ -0,0 +1,82 @@
+﻿using backend.Data;
+using backend.DTOs;
+using backend.Entities;
+using Microsoft.EntityFrameworkCore;
+
+namespace backend.Services
+{
+    public interface IToDoService
+    {
+        Task AddNewToDoItem(CreateToDoItemRequest item);
+        Task<List<ToDoItemResponse>> GetToDoItems(string sortBy);
+        Task UpdateToDoItemStatus(int id, ToDoStatus status);
+    }
+    public class ToDoService : IToDoService
+    {
+        private readonly DataContext _context = null;
+        public ToDoService(DataContext context)
+        {
+            _context = context;
+        }
+        public async Task AddNewToDoItem(CreateToDoItemRequest item)
+        {
+
+            var linkedReview = await _context.Reviews.FirstOrDefaultAsync(x => x.Id == item.ReviewId);
+
+            var newItem = new ToDoItem()
+            {
+                Description = item.Description,
+                CreatedAt = DateTime.UtcNow,
+                Status = ToDoStatus.New,
+                Title = item.Title,
+                LinkedReview = linkedReview,
+                Priority = item.Priority
+            };
+            await _context.ToDoItems.AddAsync(newItem);
+            await _context.SaveChangesAsync();
+        }
+
+        public async Task<List<ToDoItemResponse>> GetToDoItems(string sortBy)
+        {
+            var items = await _context.ToDoItems
+                .Include(x => x.LinkedReview)
+                .Select(x => new ToDoItemResponse()
+                {
+                    Description = x.Description,
+                    CreatedAt = x.CreatedAt,
+                    Id = x.Id,
+                    LinkedReview = x.LinkedReview == null ? null : new ReviewResponse()
+                    {
+                        Description = x.LinkedReview.Description,
+                        CreatedAt = x.LinkedReview.CreatedAt,
+                        Id = x.LinkedReview.Id,
+                        Stars = x.LinkedReview.Stars,
+                        Title = x.LinkedReview.Title
+                    },
+                    Status = x.Status,
+                    Title = x.Title,
+                    Priority = x.Priority
+                })
+                .ToListAsync();
+
+            if (sortBy.Equals("date"))
+            {
+                items = items.OrderByDescending(x => x.Status == ToDoStatus.New || x.Status == ToDoStatus.InProgress).ThenByDescending(x => x.CreatedAt).ToList();
+            }
+            else
+            {
+                items = items.OrderByDescending(x => x.Status == ToDoStatus.New || x.Status == ToDoStatus.InProgress).ThenBy(x => x.Priority).ToList();
+            }
+
+            return items;
+        }
+
+        public async Task UpdateToDoItemStatus(int id, ToDoStatus status)
+        {
+            var item = await _context.ToDoItems.FirstOrDefaultAsync(x => x.Id == id);
+            item.Status = status;
+            _context.Update(item);
+            await _context.SaveChangesAsync();
+        }
+    }
+}
