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();
+        }
+    }
+}
