From 202f9ec2d250f00517d3fb827e8954e8b576070f Mon Sep 17 00:00:00 2001
From: amalieur <amalieur@stud.ntnu.no>
Date: Wed, 7 Apr 2021 12:19:57 +0200
Subject: [PATCH] Issue: Admin category (#20)

---
 client/src/app/app-routing.module.ts          |  5 +++-
 client/src/app/app.module.ts                  |  4 ++-
 .../admin-category.component.html             |  1 +
 .../admin-category.component.scss             |  0
 .../admin-category.component.spec.ts          | 25 +++++++++++++++++++
 .../admin-category.component.ts               | 15 +++++++++++
 client/src/app/posts/post.service.ts          | 23 +++++++++++++++++
 7 files changed, 71 insertions(+), 2 deletions(-)
 create mode 100644 client/src/app/categories/admin-category/admin-category.component.html
 create mode 100644 client/src/app/categories/admin-category/admin-category.component.scss
 create mode 100644 client/src/app/categories/admin-category/admin-category.component.spec.ts
 create mode 100644 client/src/app/categories/admin-category/admin-category.component.ts

diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts
index c0d5aee..bb9568b 100644
--- a/client/src/app/app-routing.module.ts
+++ b/client/src/app/app-routing.module.ts
@@ -7,6 +7,7 @@ import { UserRegistrationFormComponent } from './users/user-registration-form/us
 import { UserLoginFormComponent } from './users/user-login-form/user-login-form.component';
 import { UserProfileComponent } from './users/user-profile/user-profile.component';
 import { UserGuestProfileComponent } from './users/user-guest-profile/user-guest-profile.component';
+import { AdminCategoryComponent} from './categories/admin-category/admin-category.component';
 
 const routes: Routes = [
   { path: 'annonse/ny', component: PostFormComponent },
@@ -17,7 +18,9 @@ const routes: Routes = [
   { path: 'user/:id', component: UserGuestProfileComponent },
   { path: 'profile', component: UserProfileComponent },
   { path: 'register', component: UserRegistrationFormComponent },
-  { path: 'login', component: UserLoginFormComponent }
+  { path: 'login', component: UserLoginFormComponent },
+  
+  { path: 'admin/category', component: AdminCategoryComponent }
 ];
 
 @NgModule({
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index 9b89086..24d3015 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -9,6 +9,7 @@ import { PostModule } from './posts/post.module';
 import { UserModule } from './users/user.module';
 import { AuthModule } from './authentication/auth.module';
 import { SharedModule } from './shared/shared.module';
+import { AdminCategoryComponent } from './categories/admin-category/admin-category.component';
 
 export function tokenGetter() {
   return localStorage.getItem("token");
@@ -16,7 +17,8 @@ export function tokenGetter() {
 
 @NgModule({
   declarations: [
-    AppComponent
+    AppComponent,
+    AdminCategoryComponent
   ],
   imports: [
     BrowserModule,
diff --git a/client/src/app/categories/admin-category/admin-category.component.html b/client/src/app/categories/admin-category/admin-category.component.html
new file mode 100644
index 0000000..bdbf67b
--- /dev/null
+++ b/client/src/app/categories/admin-category/admin-category.component.html
@@ -0,0 +1 @@
+<p>admin-category works!</p>
diff --git a/client/src/app/categories/admin-category/admin-category.component.scss b/client/src/app/categories/admin-category/admin-category.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/client/src/app/categories/admin-category/admin-category.component.spec.ts b/client/src/app/categories/admin-category/admin-category.component.spec.ts
new file mode 100644
index 0000000..7797ede
--- /dev/null
+++ b/client/src/app/categories/admin-category/admin-category.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdminCategoryComponent } from './admin-category.component';
+
+describe('AdminCategoryComponent', () => {
+  let component: AdminCategoryComponent;
+  let fixture: ComponentFixture<AdminCategoryComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ AdminCategoryComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(AdminCategoryComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/client/src/app/categories/admin-category/admin-category.component.ts b/client/src/app/categories/admin-category/admin-category.component.ts
new file mode 100644
index 0000000..526d7de
--- /dev/null
+++ b/client/src/app/categories/admin-category/admin-category.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'app-admin-category',
+  templateUrl: './admin-category.component.html',
+  styleUrls: ['./admin-category.component.scss']
+})
+export class AdminCategoryComponent implements OnInit {
+
+  constructor() { }
+
+  ngOnInit(): void {
+  }
+
+}
diff --git a/client/src/app/posts/post.service.ts b/client/src/app/posts/post.service.ts
index 63ea702..5a90bf8 100644
--- a/client/src/app/posts/post.service.ts
+++ b/client/src/app/posts/post.service.ts
@@ -104,7 +104,30 @@ export class PostService {
   private add_post(post: Post) {
     return this.http.post(this.postUrl, post.serialize());
   }
+  /**
+   * Adds category to database
+   */
+   addCategory(category: Category): Promise<string> {
+    return new Promise<string>(
+      (resolve, reject) => {
+        this.add_category(category).subscribe((data: any) => {
+          try {
+            resolve(data.status);
+          } catch (err: any) {
+            reject(err);
+          }
+        },
+        (err: any) => {
+          console.log(err.message);
+          reject(err);
+        });
+      }
+    );
+  }
 
+  private add_category(category: Category) {
+    return this.http.post(this.categoryUrl, category.serialize());
+  }
 
   /**
    * Get all categories from database.
-- 
GitLab