Index: resTools_backend/backend/Controllers/RestaurantsController.cs
===================================================================
--- resTools_backend/backend/Controllers/RestaurantsController.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Controllers/RestaurantsController.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -20,4 +20,5 @@
     }
 
+    /*
     [Authorize]
     [HttpPost()]
@@ -30,4 +31,5 @@
         return Ok();
     }
+    */
 
     [HttpGet()]
Index: resTools_backend/backend/Controllers/ReviewsController.cs
===================================================================
--- resTools_backend/backend/Controllers/ReviewsController.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
+++ resTools_backend/backend/Controllers/ReviewsController.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -0,0 +1,37 @@
+﻿using backend.DTOs;
+using backend.Helpers;
+using backend.Services;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace backend.Controllers
+{
+    [ApiController]
+    [Route("[controller]")]
+    public class ReviewsController : ControllerBase
+    {
+        private readonly IReviewService _reviewService = null;
+
+        public ReviewsController(IReviewService reviewService)
+        {
+            _reviewService = reviewService;
+        }
+
+
+        [Authorize]
+        [HttpPost()]
+        public async Task<IActionResult> CreateReview([FromBody] CreateReviewRequest req)
+        {
+            int userId = 0;
+            try
+            {
+                userId = (int)this.HttpContext.Items["User"];
+            }
+            catch (Exception ex) { return null; }
+            await _reviewService.AddReview(req, userId);
+            return Ok();
+        }
+
+    }
+
+}
Index: resTools_backend/backend/Controllers/UsersController.cs
===================================================================
--- resTools_backend/backend/Controllers/UsersController.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Controllers/UsersController.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -13,8 +13,10 @@
 {
     private readonly IUserService _userService = null;
+    private readonly IRestaurantService _restaurantService = null;
 
-    public UsersController(IUserService userService)
+    public UsersController(IUserService userService, IRestaurantService restaurantService)
     {
         _userService = userService;
+        _restaurantService = restaurantService;
     }
 
@@ -45,5 +47,10 @@
     public async Task<AuthenticateResponse> Register(CreateUserRequest req)
     {
-        var response = await _userService.Register(req);
+        bool isFirst = await _restaurantService.GetRestaurant() == null;
+        var response = await _userService.Register(req, isFirst);
+        if (isFirst)
+        {
+            await _restaurantService.CreateRestaurant("", response.Id);
+        }
         return response;
     }
Index: resTools_backend/backend/DTOs/AuthenticateResponse.cs
===================================================================
--- resTools_backend/backend/DTOs/AuthenticateResponse.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/DTOs/AuthenticateResponse.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -13,3 +13,5 @@
     [JsonProperty]
     public string Token { get; set; }
+    [JsonProperty]
+    public bool IsAdmin { get; set; }
 }
Index: resTools_backend/backend/DTOs/CreateReviewRequest.cs
===================================================================
--- resTools_backend/backend/DTOs/CreateReviewRequest.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
+++ resTools_backend/backend/DTOs/CreateReviewRequest.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -0,0 +1,9 @@
+﻿namespace backend.DTOs
+{
+    public class CreateReviewRequest
+    {
+        public string Title { get; set; }
+        public string Description { get; set; }
+        public int Stars { get; set; } // 1-5
+    }
+}
Index: resTools_backend/backend/DTOs/RestaurantResponse.cs
===================================================================
--- resTools_backend/backend/DTOs/RestaurantResponse.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/DTOs/RestaurantResponse.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -14,4 +14,8 @@
         public List<MenuItemResponse> Menu { get; set; }
         [JsonProperty]
+        public List<ReviewResponse> Reviews { get; set; }
+        [JsonProperty]
+        public double AverageReview { get; set; }
+        [JsonProperty]
         public string Base64Image { get; set; }
     }
Index: resTools_backend/backend/DTOs/ReviewResponse.cs
===================================================================
--- resTools_backend/backend/DTOs/ReviewResponse.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
+++ resTools_backend/backend/DTOs/ReviewResponse.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -0,0 +1,12 @@
+﻿namespace backend.DTOs
+{
+    public class ReviewResponse
+    {
+        public int Id { get; set; }
+        public string Title { get; set; }
+        public string Description { get; set; }
+        public int Stars { get; set; } // 1-5
+        public DateTime CreatedAt { get; set; }
+        public string Username { get; set; }
+    }
+}
Index: resTools_backend/backend/Data/DataContext.cs
===================================================================
--- resTools_backend/backend/Data/DataContext.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Data/DataContext.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -66,4 +66,18 @@
         }
 
+        private DbSet<Review> reviews;
+        public DbSet<Review> Reviews
+        {
+            get
+            {
+                if (reviews == null)
+                {
+                    reviews = Set<Review>();
+                }
+
+                return reviews;
+            }
+        }
+
 
         protected override void OnModelCreating(ModelBuilder modelBuilder)
@@ -89,7 +103,6 @@
             .WithOne(b => b.Restaurant);
             modelBuilder.Entity<Restaurant>()
-            .HasMany(p => p.Menu)
+            .HasMany(p => p.Reviews)
             .WithOne(b => b.Restaurant);
-
 
             //
@@ -108,4 +121,14 @@
             .HasOne(p => p.Restaurant)
             .WithMany(b => b.Menu);
+
+            //
+            // Review
+            // 
+            modelBuilder.Entity<Review>().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd();
+            modelBuilder.Entity<Review>()
+            .HasOne(p => p.Restaurant)
+            .WithMany(b => b.Reviews);
+            modelBuilder.Entity<Review>()
+            .HasOne(p => p.User);
         }
     }
Index: resTools_backend/backend/Entities/Restaurant.cs
===================================================================
--- resTools_backend/backend/Entities/Restaurant.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Entities/Restaurant.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -10,4 +10,5 @@
         public virtual ICollection<Reservation> Reservations { get; set; }
         public virtual ICollection<MenuItem> Menu { get; set; }
+        public virtual ICollection<Review> Reviews { get; set; }
         public string Name { get; set; }
         public string Address { get; set; }
Index: resTools_backend/backend/Entities/Review.cs
===================================================================
--- resTools_backend/backend/Entities/Review.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
+++ resTools_backend/backend/Entities/Review.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -0,0 +1,13 @@
+﻿namespace backend.Entities
+{
+    public class Review
+    {
+        public int Id { get; set; }
+        public string Title { get; set; }
+        public string Description { get; set; }
+        public int Stars { get; set; } // 1-5
+        public DateTime CreatedAt { get; set; }
+        public virtual User User { get; set; }
+        public virtual Restaurant Restaurant { get; set; }
+    }
+}
Index: resTools_backend/backend/Entities/User.cs
===================================================================
--- resTools_backend/backend/Entities/User.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Entities/User.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -8,5 +8,5 @@
     public string Email { get; set; }
     public string Password { get; set; }
-    [JsonIgnore]
+    public bool IsAdmin { get; set; }
     public virtual Restaurant Restaurant { get; set; }
 }
Index: resTools_backend/backend/Migrations/20220706122821_Add-Reviews.Designer.cs
===================================================================
--- resTools_backend/backend/Migrations/20220706122821_Add-Reviews.Designer.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
+++ resTools_backend/backend/Migrations/20220706122821_Add-Reviews.Designer.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -0,0 +1,263 @@
+﻿// <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("20220706122821_Add-Reviews")]
+    partial class AddReviews
+    {
+        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.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    b.Property<bool>("IsAdmin")
+                        .HasColumnType("boolean");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasColumnType("text");
+
+                    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.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/20220706122821_Add-Reviews.cs
===================================================================
--- resTools_backend/backend/Migrations/20220706122821_Add-Reviews.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
+++ resTools_backend/backend/Migrations/20220706122821_Add-Reviews.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -0,0 +1,71 @@
+﻿using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace backend.Migrations
+{
+    public partial class AddReviews : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<bool>(
+                name: "IsAdmin",
+                table: "Users",
+                type: "boolean",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.CreateTable(
+                name: "Reviews",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    Title = table.Column<string>(type: "text", nullable: false),
+                    Description = table.Column<string>(type: "text", nullable: false),
+                    Stars = table.Column<int>(type: "integer", nullable: false),
+                    CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
+                    UserId = table.Column<int>(type: "integer", nullable: false),
+                    RestaurantId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Reviews", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_Reviews_Restoraunts_RestaurantId",
+                        column: x => x.RestaurantId,
+                        principalTable: "Restoraunts",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_Reviews_Users_UserId",
+                        column: x => x.UserId,
+                        principalTable: "Users",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_Reviews_RestaurantId",
+                table: "Reviews",
+                column: "RestaurantId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_Reviews_UserId",
+                table: "Reviews",
+                column: "UserId");
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "Reviews");
+
+            migrationBuilder.DropColumn(
+                name: "IsAdmin",
+                table: "Users");
+        }
+    }
+}
Index: resTools_backend/backend/Migrations/DataContextModelSnapshot.cs
===================================================================
--- resTools_backend/backend/Migrations/DataContextModelSnapshot.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Migrations/DataContextModelSnapshot.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -131,4 +131,41 @@
                 });
 
+            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.User", b =>
                 {
@@ -142,4 +179,7 @@
                         .IsRequired()
                         .HasColumnType("text");
+
+                    b.Property<bool>("IsAdmin")
+                        .HasColumnType("boolean");
 
                     b.Property<string>("Password")
@@ -183,4 +223,23 @@
                 });
 
+            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.Restaurant", b =>
                 {
@@ -188,4 +247,6 @@
 
                     b.Navigation("Reservations");
+
+                    b.Navigation("Reviews");
                 });
 
Index: resTools_backend/backend/Program.cs
===================================================================
--- resTools_backend/backend/Program.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Program.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -47,4 +47,5 @@
 builder.Services.AddScoped<IReservationService, ReservationService>();
 builder.Services.AddScoped<IMenuService, MenuService>();
+builder.Services.AddScoped<IReviewService, ReviewService>();
 builder.Services.AddScoped<ISmsService, SmsService>();
 
Index: resTools_backend/backend/Services/RestaurantService.cs
===================================================================
--- resTools_backend/backend/Services/RestaurantService.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Services/RestaurantService.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -32,4 +32,6 @@
         {
             RestaurantResponse res = await _context.Restoraunts
+                .Include(x => x.Menu)
+                .Include(x => x.Reviews).ThenInclude(x => x.User)
                 .Select(x => new RestaurantResponse()
                 {
@@ -44,5 +46,15 @@
                         Description = x.Description,
                         Price = x.Price
-                    }).ToList()
+                    }).ToList(),
+                    Reviews = x.Reviews.OrderByDescending(x => x.CreatedAt).Select(x => new ReviewResponse()
+                    {
+                        Id = x.Id,
+                        Title = x.Title,
+                        Description = x.Description,
+                        Stars = x.Stars,
+                        CreatedAt = x.CreatedAt,
+                        Username = x.User == null ? "Anonymous" : x.User.Email
+                    }).ToList(),
+                    AverageReview = x.Reviews.Count>0 ? x.Reviews.Select(x => x.Stars).Average() : 0
                 })
                 .FirstOrDefaultAsync();
Index: resTools_backend/backend/Services/ReviewService.cs
===================================================================
--- resTools_backend/backend/Services/ReviewService.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
+++ resTools_backend/backend/Services/ReviewService.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -0,0 +1,41 @@
+﻿using backend.Data;
+using backend.DTOs;
+using backend.Entities;
+using Microsoft.EntityFrameworkCore;
+
+namespace backend.Services
+{
+    public interface IReviewService
+    {
+        public Task AddReview(CreateReviewRequest review, int userId);
+    }
+    public class ReviewService : IReviewService
+    {
+        private readonly DataContext _context = null;
+
+        public ReviewService(DataContext context)
+        {
+            _context = context;
+        }
+
+        public async Task AddReview(CreateReviewRequest review, int userId)
+        {
+            var user = await _context.Users.FindAsync(userId);
+            var res = await _context.Restoraunts.Include(x => x.Reviews).FirstOrDefaultAsync();
+            if(res.Reviews == null)
+            {
+                res.Reviews = new List<Review>();
+            }
+            res.Reviews.Add(new Review()
+            {
+                Title = review.Title,
+                Description = review.Description,
+                Stars = review.Stars,
+                CreatedAt = DateTime.UtcNow,
+                User = user
+            });
+            _context.Restoraunts.Update(res);
+            await _context.SaveChangesAsync();
+        }
+    }
+}
Index: resTools_backend/backend/Services/UserService.cs
===================================================================
--- resTools_backend/backend/Services/UserService.cs	(revision cc4db18b6d338be00c6c1e9b88f8e93ef763f7b6)
+++ resTools_backend/backend/Services/UserService.cs	(revision 899b19da4d7326788e23e45dd1881ec1395e1d88)
@@ -15,5 +15,5 @@
 {
     Task<AuthenticateResponse> Authenticate(AuthenticateRequest model);
-    Task<AuthenticateResponse> Register(CreateUserRequest req);
+    Task<AuthenticateResponse> Register(CreateUserRequest req, bool isFirst);
     Task<User> GetById(int id);
 }
@@ -40,5 +40,5 @@
         var token = generateJwtToken(user);
 
-        return new AuthenticateResponse { Email = user.Email, Id = user.Id, Token = token};
+        return new AuthenticateResponse { Email = user.Email, Id = user.Id, Token = token, IsAdmin = user.IsAdmin};
     }
 
@@ -48,11 +48,11 @@
     }
 
-    public async Task<AuthenticateResponse> Register(CreateUserRequest req)
+    public async Task<AuthenticateResponse> Register(CreateUserRequest req, bool isFirst)
     {
-        User user = new User() { Email = req.Email, Password = req.Password };
+        User user = new User() { Email = req.Email, Password = req.Password, IsAdmin = isFirst };
         await _context.Users.AddAsync(user);
         await _context.SaveChangesAsync();
         var token = generateJwtToken(user);
-        return new AuthenticateResponse { Email = user.Email, Id = user.Id, Token = token };
+        return new AuthenticateResponse { Email = user.Email, Id = user.Id, Token = token, IsAdmin = user.IsAdmin };
     }
 
