aboutsummaryrefslogtreecommitdiff
path: root/API
diff options
context:
space:
mode:
Diffstat (limited to 'API')
-rw-r--r--API/API.csproj2
-rw-r--r--API/Controllers/ErrorController.cs7
-rw-r--r--API/Controllers/UserController.cs6
-rw-r--r--API/Database/DbRepository.cs4
-rw-r--r--API/Database/DevHiveContext.cs2
-rw-r--r--API/Database/UserDbRepository.cs4
-rw-r--r--API/Migrations/20201210085843_UserAddTest.Designer.cs325
-rw-r--r--API/Migrations/20201210121627_UserTableImplemented.cs44
-rw-r--r--API/Migrations/20201211123448_UserTableImplemented.Designer.cs (renamed from API/Migrations/20201210121627_UserTableImplemented.Designer.cs)224
-rw-r--r--API/Migrations/20201211123448_UserTableImplemented.cs (renamed from API/Migrations/20201210085843_UserAddTest.cs)14
-rw-r--r--API/Migrations/DevHiveContextModelSnapshot.cs222
-rw-r--r--API/Service/UserService.cs39
-rw-r--r--API/Startup.cs5
13 files changed, 269 insertions, 629 deletions
diff --git a/API/API.csproj b/API/API.csproj
index 3232fb9..0ea2d2e 100644
--- a/API/API.csproj
+++ b/API/API.csproj
@@ -17,6 +17,6 @@
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.0" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\Models\Models.csproj" />
+ <ProjectReference Include="..\Data\Data.csproj" />
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/API/Controllers/ErrorController.cs b/API/Controllers/ErrorController.cs
index 9af73ef..792d8cd 100644
--- a/API/Controllers/ErrorController.cs
+++ b/API/Controllers/ErrorController.cs
@@ -1,16 +1,19 @@
using System;
using System.Net;
+using System.Net.Http;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers
{
[ApiController]
- [Route("/api/[controller]")]
public class ErrorController
{
[HttpGet]
- public HttpStatusCode Error(Exception exception)
+ [Route("HttpError")]
+ public HttpStatusCode HttpError(HttpRequestException exception)
{
+ Console.WriteLine("WE HERE, BOIIIIIII");
+
return HttpStatusCode.OK;
}
}
diff --git a/API/Controllers/UserController.cs b/API/Controllers/UserController.cs
index e8a58b8..3f18dbe 100644
--- a/API/Controllers/UserController.cs
+++ b/API/Controllers/UserController.cs
@@ -5,8 +5,8 @@ using API.Database;
using API.Service;
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
-using Models.Classes;
-using Models.DTOs;
+using Data.Models.Classes;
+using Data.Models.DTOs;
namespace API.Controllers
{
@@ -30,7 +30,7 @@ namespace API.Controllers
//Read
[HttpGet]
- public async Task<string> GetById(int id)
+ public async Task<User> GetById(int id)
{
return await this._service.GetUserById(id);
}
diff --git a/API/Database/DbRepository.cs b/API/Database/DbRepository.cs
index a24be36..786062c 100644
--- a/API/Database/DbRepository.cs
+++ b/API/Database/DbRepository.cs
@@ -1,9 +1,9 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using Models.Interfaces.Database;
+using Data.Models.Interfaces.Database;
using Microsoft.EntityFrameworkCore;
-using Models.Classes;
+using Data.Models.Classes;
namespace API.Database
{
diff --git a/API/Database/DevHiveContext.cs b/API/Database/DevHiveContext.cs
index 4c342b5..f7bf82a 100644
--- a/API/Database/DevHiveContext.cs
+++ b/API/Database/DevHiveContext.cs
@@ -1,6 +1,6 @@
using Microsoft.AspNetCore;
using Microsoft.EntityFrameworkCore;
-using Models.Classes;
+using Data.Models.Classes;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.AspNetCore.Identity;
diff --git a/API/Database/UserDbRepository.cs b/API/Database/UserDbRepository.cs
index a51e3a8..2aa1b55 100644
--- a/API/Database/UserDbRepository.cs
+++ b/API/Database/UserDbRepository.cs
@@ -1,9 +1,9 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using Models.Interfaces.Database;
+using Data.Models.Interfaces.Database;
using Microsoft.EntityFrameworkCore;
-using Models.Classes;
+using Data.Models.Classes;
namespace API.Database
{
diff --git a/API/Migrations/20201210085843_UserAddTest.Designer.cs b/API/Migrations/20201210085843_UserAddTest.Designer.cs
deleted file mode 100644
index 1f39c12..0000000
--- a/API/Migrations/20201210085843_UserAddTest.Designer.cs
+++ /dev/null
@@ -1,325 +0,0 @@
-// <auto-generated />
-using System;
-using API.Database;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-namespace API.Migrations
-{
- [DbContext(typeof(DevHiveContext))]
- [Migration("20201210085843_UserAddTest")]
- partial class UserAddTest
- {
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .UseIdentityByDefaultColumns()
- .HasAnnotation("Relational:MaxIdentifierLength", 63)
- .HasAnnotation("ProductVersion", "5.0.1");
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole<int>", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.Property<string>("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property<string>("Name")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property<string>("NormalizedName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.HasKey("Id");
-
- b.HasIndex("NormalizedName")
- .IsUnique()
- .HasDatabaseName("RoleNameIndex");
-
- b.ToTable("AspNetRoles");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.Property<string>("ClaimType")
- .HasColumnType("text");
-
- b.Property<string>("ClaimValue")
- .HasColumnType("text");
-
- b.Property<int>("RoleId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetRoleClaims");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.Property<string>("ClaimType")
- .HasColumnType("text");
-
- b.Property<string>("ClaimValue")
- .HasColumnType("text");
-
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserClaims");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
- {
- b.Property<string>("LoginProvider")
- .HasColumnType("text");
-
- b.Property<string>("ProviderKey")
- .HasColumnType("text");
-
- b.Property<string>("ProviderDisplayName")
- .HasColumnType("text");
-
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.HasKey("LoginProvider", "ProviderKey");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserLogins");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<int>", b =>
- {
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.Property<int>("RoleId")
- .HasColumnType("integer");
-
- b.HasKey("UserId", "RoleId");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetUserRoles");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
- {
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.Property<string>("LoginProvider")
- .HasColumnType("text");
-
- b.Property<string>("Name")
- .HasColumnType("text");
-
- b.Property<string>("Value")
- .HasColumnType("text");
-
- b.HasKey("UserId", "LoginProvider", "Name");
-
- b.ToTable("AspNetUserTokens");
- });
-
- modelBuilder.Entity("Models.Classes.Language", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.HasKey("Id");
-
- b.ToTable("Languages");
- });
-
- modelBuilder.Entity("Models.Classes.Technology", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.HasKey("Id");
-
- b.ToTable("Technologies");
- });
-
- modelBuilder.Entity("Models.Classes.User", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.Property<int>("AccessFailedCount")
- .HasColumnType("integer");
-
- b.Property<string>("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property<string>("Email")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property<bool>("EmailConfirmed")
- .HasColumnType("boolean");
-
- b.Property<string>("FirstName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property<string>("LastName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property<bool>("LockoutEnabled")
- .HasColumnType("boolean");
-
- b.Property<DateTimeOffset?>("LockoutEnd")
- .HasColumnType("timestamp with time zone");
-
- b.Property<string>("NormalizedEmail")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property<string>("NormalizedUserName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property<string>("PasswordHash")
- .HasColumnType("text");
-
- b.Property<string>("PhoneNumber")
- .HasColumnType("text");
-
- b.Property<bool>("PhoneNumberConfirmed")
- .HasColumnType("boolean");
-
- b.Property<string>("ProfilePicture")
- .HasColumnType("text");
-
- b.Property<string>("SecurityStamp")
- .HasColumnType("text");
-
- b.Property<bool>("TwoFactorEnabled")
- .HasColumnType("boolean");
-
- b.Property<int?>("UserId")
- .HasColumnType("integer");
-
- b.Property<string>("UserName")
- .IsRequired()
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.HasKey("Id");
-
- b.HasIndex("NormalizedEmail")
- .HasDatabaseName("EmailIndex");
-
- b.HasIndex("NormalizedUserName")
- .IsUnique()
- .HasDatabaseName("UserNameIndex");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUsers");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
- {
- b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole<int>", null)
- .WithMany()
- .HasForeignKey("RoleId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
- {
- b.HasOne("Models.Classes.User", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
- {
- b.HasOne("Models.Classes.User", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<int>", b =>
- {
- b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole<int>", null)
- .WithMany()
- .HasForeignKey("RoleId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("Models.Classes.User", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
- {
- b.HasOne("Models.Classes.User", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Models.Classes.User", b =>
- {
- b.HasOne("Models.Classes.User", null)
- .WithMany("Friends")
- .HasForeignKey("UserId");
- });
-
- modelBuilder.Entity("Models.Classes.User", b =>
- {
- b.Navigation("Friends");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/API/Migrations/20201210121627_UserTableImplemented.cs b/API/Migrations/20201210121627_UserTableImplemented.cs
deleted file mode 100644
index ea39ff8..0000000
--- a/API/Migrations/20201210121627_UserTableImplemented.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace API.Migrations
-{
- public partial class UserTableImplemented : Migration
- {
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropForeignKey(
- name: "FK_AspNetUsers_AspNetUsers_UserId",
- table: "AspNetUsers");
-
- migrationBuilder.DropIndex(
- name: "IX_AspNetUsers_UserId",
- table: "AspNetUsers");
-
- migrationBuilder.DropColumn(
- name: "UserId",
- table: "AspNetUsers");
- }
-
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.AddColumn<int>(
- name: "UserId",
- table: "AspNetUsers",
- type: "integer",
- nullable: true);
-
- migrationBuilder.CreateIndex(
- name: "IX_AspNetUsers_UserId",
- table: "AspNetUsers",
- column: "UserId");
-
- migrationBuilder.AddForeignKey(
- name: "FK_AspNetUsers_AspNetUsers_UserId",
- table: "AspNetUsers",
- column: "UserId",
- principalTable: "AspNetUsers",
- principalColumn: "Id",
- onDelete: ReferentialAction.Restrict);
- }
- }
-}
diff --git a/API/Migrations/20201210121627_UserTableImplemented.Designer.cs b/API/Migrations/20201211123448_UserTableImplemented.Designer.cs
index ee570a2..3b0902e 100644
--- a/API/Migrations/20201210121627_UserTableImplemented.Designer.cs
+++ b/API/Migrations/20201211123448_UserTableImplemented.Designer.cs
@@ -10,7 +10,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace API.Migrations
{
[DbContext(typeof(DevHiveContext))]
- [Migration("20201210121627_UserTableImplemented")]
+ [Migration("20201211123448_UserTableImplemented")]
partial class UserTableImplemented
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -21,108 +21,7 @@ namespace API.Migrations
.HasAnnotation("Relational:MaxIdentifierLength", 63)
.HasAnnotation("ProductVersion", "5.0.1");
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.Property<string>("ClaimType")
- .HasColumnType("text");
-
- b.Property<string>("ClaimValue")
- .HasColumnType("text");
-
- b.Property<int>("RoleId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetRoleClaims");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.Property<string>("ClaimType")
- .HasColumnType("text");
-
- b.Property<string>("ClaimValue")
- .HasColumnType("text");
-
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserClaims");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
- {
- b.Property<string>("LoginProvider")
- .HasColumnType("text");
-
- b.Property<string>("ProviderKey")
- .HasColumnType("text");
-
- b.Property<string>("ProviderDisplayName")
- .HasColumnType("text");
-
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.HasKey("LoginProvider", "ProviderKey");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserLogins");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<int>", b =>
- {
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.Property<int>("RoleId")
- .HasColumnType("integer");
-
- b.HasKey("UserId", "RoleId");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetUserRoles");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
- {
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.Property<string>("LoginProvider")
- .HasColumnType("text");
-
- b.Property<string>("Name")
- .HasColumnType("text");
-
- b.Property<string>("Value")
- .HasColumnType("text");
-
- b.HasKey("UserId", "LoginProvider", "Name");
-
- b.ToTable("AspNetUserTokens");
- });
-
- modelBuilder.Entity("Models.Classes.Language", b =>
+ modelBuilder.Entity("Data.Models.Classes.Language", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -134,7 +33,7 @@ namespace API.Migrations
b.ToTable("Languages");
});
- modelBuilder.Entity("Models.Classes.Roles", b =>
+ modelBuilder.Entity("Data.Models.Classes.Roles", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -162,7 +61,7 @@ namespace API.Migrations
b.ToTable("AspNetRoles");
});
- modelBuilder.Entity("Models.Classes.Technology", b =>
+ modelBuilder.Entity("Data.Models.Classes.Technology", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -174,7 +73,7 @@ namespace API.Migrations
b.ToTable("Technologies");
});
- modelBuilder.Entity("Models.Classes.User", b =>
+ modelBuilder.Entity("Data.Models.Classes.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -254,7 +153,108 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
{
- b.HasOne("Models.Classes.Roles", null)
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .UseIdentityByDefaultColumn();
+
+ b.Property<string>("ClaimType")
+ .HasColumnType("text");
+
+ b.Property<string>("ClaimValue")
+ .HasColumnType("text");
+
+ b.Property<int>("RoleId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetRoleClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .UseIdentityByDefaultColumn();
+
+ b.Property<string>("ClaimType")
+ .HasColumnType("text");
+
+ b.Property<string>("ClaimValue")
+ .HasColumnType("text");
+
+ b.Property<int>("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
+ {
+ b.Property<string>("LoginProvider")
+ .HasColumnType("text");
+
+ b.Property<string>("ProviderKey")
+ .HasColumnType("text");
+
+ b.Property<string>("ProviderDisplayName")
+ .HasColumnType("text");
+
+ b.Property<int>("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserLogins");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<int>", b =>
+ {
+ b.Property<int>("UserId")
+ .HasColumnType("integer");
+
+ b.Property<int>("RoleId")
+ .HasColumnType("integer");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
+ {
+ b.Property<int>("UserId")
+ .HasColumnType("integer");
+
+ b.Property<string>("LoginProvider")
+ .HasColumnType("text");
+
+ b.Property<string>("Name")
+ .HasColumnType("text");
+
+ b.Property<string>("Value")
+ .HasColumnType("text");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("AspNetUserTokens");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
+ {
+ b.HasOne("Data.Models.Classes.Roles", null)
.WithMany()
.HasForeignKey("RoleId")
.OnDelete(DeleteBehavior.Cascade)
@@ -263,7 +263,7 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
{
- b.HasOne("Models.Classes.User", null)
+ b.HasOne("Data.Models.Classes.User", null)
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
@@ -272,7 +272,7 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
{
- b.HasOne("Models.Classes.User", null)
+ b.HasOne("Data.Models.Classes.User", null)
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
@@ -281,13 +281,13 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<int>", b =>
{
- b.HasOne("Models.Classes.Roles", null)
+ b.HasOne("Data.Models.Classes.Roles", null)
.WithMany()
.HasForeignKey("RoleId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
- b.HasOne("Models.Classes.User", null)
+ b.HasOne("Data.Models.Classes.User", null)
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
@@ -296,7 +296,7 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
{
- b.HasOne("Models.Classes.User", null)
+ b.HasOne("Data.Models.Classes.User", null)
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
diff --git a/API/Migrations/20201210085843_UserAddTest.cs b/API/Migrations/20201211123448_UserTableImplemented.cs
index c036a75..2c4082d 100644
--- a/API/Migrations/20201210085843_UserAddTest.cs
+++ b/API/Migrations/20201211123448_UserTableImplemented.cs
@@ -4,7 +4,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace API.Migrations
{
- public partial class UserAddTest : Migration
+ public partial class UserTableImplemented : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
@@ -33,7 +33,6 @@ namespace API.Migrations
FirstName = table.Column<string>(type: "text", nullable: false),
LastName = table.Column<string>(type: "text", nullable: false),
ProfilePicture = table.Column<string>(type: "text", nullable: true),
- UserId = table.Column<int>(type: "integer", nullable: true),
NormalizedUserName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
Email = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
NormalizedEmail = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
@@ -51,12 +50,6 @@ namespace API.Migrations
constraints: table =>
{
table.PrimaryKey("PK_AspNetUsers", x => x.Id);
- table.ForeignKey(
- name: "FK_AspNetUsers_AspNetUsers_UserId",
- column: x => x.UserId,
- principalTable: "AspNetUsers",
- principalColumn: "Id",
- onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
@@ -221,11 +214,6 @@ namespace API.Migrations
column: "NormalizedEmail");
migrationBuilder.CreateIndex(
- name: "IX_AspNetUsers_UserId",
- table: "AspNetUsers",
- column: "UserId");
-
- migrationBuilder.CreateIndex(
name: "UserNameIndex",
table: "AspNetUsers",
column: "NormalizedUserName",
diff --git a/API/Migrations/DevHiveContextModelSnapshot.cs b/API/Migrations/DevHiveContextModelSnapshot.cs
index cf670a2..eb9d6a4 100644
--- a/API/Migrations/DevHiveContextModelSnapshot.cs
+++ b/API/Migrations/DevHiveContextModelSnapshot.cs
@@ -19,108 +19,7 @@ namespace API.Migrations
.HasAnnotation("Relational:MaxIdentifierLength", 63)
.HasAnnotation("ProductVersion", "5.0.1");
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.Property<string>("ClaimType")
- .HasColumnType("text");
-
- b.Property<string>("ClaimValue")
- .HasColumnType("text");
-
- b.Property<int>("RoleId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetRoleClaims");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
- {
- b.Property<int>("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .UseIdentityByDefaultColumn();
-
- b.Property<string>("ClaimType")
- .HasColumnType("text");
-
- b.Property<string>("ClaimValue")
- .HasColumnType("text");
-
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserClaims");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
- {
- b.Property<string>("LoginProvider")
- .HasColumnType("text");
-
- b.Property<string>("ProviderKey")
- .HasColumnType("text");
-
- b.Property<string>("ProviderDisplayName")
- .HasColumnType("text");
-
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.HasKey("LoginProvider", "ProviderKey");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserLogins");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<int>", b =>
- {
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.Property<int>("RoleId")
- .HasColumnType("integer");
-
- b.HasKey("UserId", "RoleId");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetUserRoles");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
- {
- b.Property<int>("UserId")
- .HasColumnType("integer");
-
- b.Property<string>("LoginProvider")
- .HasColumnType("text");
-
- b.Property<string>("Name")
- .HasColumnType("text");
-
- b.Property<string>("Value")
- .HasColumnType("text");
-
- b.HasKey("UserId", "LoginProvider", "Name");
-
- b.ToTable("AspNetUserTokens");
- });
-
- modelBuilder.Entity("Models.Classes.Language", b =>
+ modelBuilder.Entity("Data.Models.Classes.Language", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -132,7 +31,7 @@ namespace API.Migrations
b.ToTable("Languages");
});
- modelBuilder.Entity("Models.Classes.Roles", b =>
+ modelBuilder.Entity("Data.Models.Classes.Roles", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -160,7 +59,7 @@ namespace API.Migrations
b.ToTable("AspNetRoles");
});
- modelBuilder.Entity("Models.Classes.Technology", b =>
+ modelBuilder.Entity("Data.Models.Classes.Technology", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -172,7 +71,7 @@ namespace API.Migrations
b.ToTable("Technologies");
});
- modelBuilder.Entity("Models.Classes.User", b =>
+ modelBuilder.Entity("Data.Models.Classes.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -252,7 +151,108 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
{
- b.HasOne("Models.Classes.Roles", null)
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .UseIdentityByDefaultColumn();
+
+ b.Property<string>("ClaimType")
+ .HasColumnType("text");
+
+ b.Property<string>("ClaimValue")
+ .HasColumnType("text");
+
+ b.Property<int>("RoleId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetRoleClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .UseIdentityByDefaultColumn();
+
+ b.Property<string>("ClaimType")
+ .HasColumnType("text");
+
+ b.Property<string>("ClaimValue")
+ .HasColumnType("text");
+
+ b.Property<int>("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
+ {
+ b.Property<string>("LoginProvider")
+ .HasColumnType("text");
+
+ b.Property<string>("ProviderKey")
+ .HasColumnType("text");
+
+ b.Property<string>("ProviderDisplayName")
+ .HasColumnType("text");
+
+ b.Property<int>("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserLogins");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<int>", b =>
+ {
+ b.Property<int>("UserId")
+ .HasColumnType("integer");
+
+ b.Property<int>("RoleId")
+ .HasColumnType("integer");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
+ {
+ b.Property<int>("UserId")
+ .HasColumnType("integer");
+
+ b.Property<string>("LoginProvider")
+ .HasColumnType("text");
+
+ b.Property<string>("Name")
+ .HasColumnType("text");
+
+ b.Property<string>("Value")
+ .HasColumnType("text");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("AspNetUserTokens");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<int>", b =>
+ {
+ b.HasOne("Data.Models.Classes.Roles", null)
.WithMany()
.HasForeignKey("RoleId")
.OnDelete(DeleteBehavior.Cascade)
@@ -261,7 +261,7 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<int>", b =>
{
- b.HasOne("Models.Classes.User", null)
+ b.HasOne("Data.Models.Classes.User", null)
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
@@ -270,7 +270,7 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<int>", b =>
{
- b.HasOne("Models.Classes.User", null)
+ b.HasOne("Data.Models.Classes.User", null)
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
@@ -279,13 +279,13 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<int>", b =>
{
- b.HasOne("Models.Classes.Roles", null)
+ b.HasOne("Data.Models.Classes.Roles", null)
.WithMany()
.HasForeignKey("RoleId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
- b.HasOne("Models.Classes.User", null)
+ b.HasOne("Data.Models.Classes.User", null)
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
@@ -294,7 +294,7 @@ namespace API.Migrations
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<int>", b =>
{
- b.HasOne("Models.Classes.User", null)
+ b.HasOne("Data.Models.Classes.User", null)
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
diff --git a/API/Service/UserService.cs b/API/Service/UserService.cs
index d32b31f..a03de45 100644
--- a/API/Service/UserService.cs
+++ b/API/Service/UserService.cs
@@ -2,10 +2,14 @@ using System.Net;
using System.Threading.Tasks;
using API.Database;
using AutoMapper;
-using Models.Classes;
-using Models.DTOs;
+using Data.Models.Classes;
+using Data.Models.DTOs;
using Newtonsoft.Json;
using System.Web.Http;
+using System.Net.Http;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Query.ExpressionTranslators.Internal;
+using System;
+using Microsoft.AspNetCore.Mvc.Routing;
namespace API.Service
{
@@ -22,30 +26,32 @@ namespace API.Service
public async Task<HttpStatusCode> CreateUser(UserDTO userDTO)
{
- if(this._userDbRepository.DoesUsernameExist(userDTO.UserName))
- return HttpStatusCode.Forbidden;
+ if (this._userDbRepository.DoesUsernameExist(userDTO.UserName))
+ ThrowHttpRequestException(HttpStatusCode.BadRequest, "Username already exists!");
User user = this._userMapper.Map<User>(userDTO);
await this._userDbRepository.AddAsync(user);
- return HttpStatusCode.OK;
+ return HttpStatusCode.Created;
}
- public async Task<string> GetUserById(int id)
+ public async Task<User> GetUserById(int id)
{
- User user = await this._userDbRepository.FindByIdAsync(id) ??
- throw new HttpResponseException(HttpStatusCode.NotFound);
+ User user = await this._userDbRepository.FindByIdAsync(id);
- return JsonConvert.SerializeObject(user);
+ if (user == null)
+ ThrowHttpRequestException(HttpStatusCode.NotFound);
+
+ return user;
}
public async Task<HttpStatusCode> UpdateUser(int id, UserDTO userDTO)
{
if (!this._userDbRepository.DoesUserExist(id))
- return HttpStatusCode.NotFound;
+ ThrowHttpRequestException(HttpStatusCode.NotFound);
if (this._userDbRepository.DoesUsernameExist(userDTO.UserName))
- return HttpStatusCode.Forbidden;
+ ThrowHttpRequestException(HttpStatusCode.Forbidden);
User user = this._userMapper.Map<User>(userDTO);
await this._userDbRepository.EditAsync(id, user);
@@ -62,5 +68,16 @@ namespace API.Service
return HttpStatusCode.OK;
}
+
+ private void ThrowHttpRequestException(HttpStatusCode statusCode, string errorMessage = "")
+ {
+ HttpResponseMessage message = new()
+ {
+ StatusCode = statusCode,
+ Content = new StringContent(errorMessage)
+ };
+
+ throw new HttpResponseException(message);
+ }
}
}
diff --git a/API/Startup.cs b/API/Startup.cs
index 796f13a..f373f7a 100644
--- a/API/Startup.cs
+++ b/API/Startup.cs
@@ -9,7 +9,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
-using Models.Classes;
+using Data.Models.Classes;
namespace API
{
@@ -56,7 +56,8 @@ namespace API
{
if (env.IsDevelopment())
{
- app.UseDeveloperExceptionPage();
+ //app.UseDeveloperExceptionPage();
+ app.UseExceptionHandler("/api/Error"); //TESTING
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "API v1"));
}