diff --git a/src/model/Task.ts b/src/model/Task.ts
index bd1f82f..e919881 100644
--- a/src/model/Task.ts
+++ b/src/model/Task.ts
@@ -1,6 +1,6 @@
export interface Task {
date_task: Date;
- id_group: number;
+ id_group?: number;
id_task: number;
name_task: string;
priority_task: number;
diff --git a/src/services/base.service.ts b/src/services/base.service.ts
index 6e0e336..1060264 100644
--- a/src/services/base.service.ts
+++ b/src/services/base.service.ts
@@ -5,7 +5,13 @@ import { Observable } from 'rxjs';
@Service()
export class BaseService {
private readonly http: HttpClient = inject(HttpClient);
- protected get(url: string):Observable {
- return this.http.get(url);
+ private readonly baseAddress: string = "http://127.0.0.1:8080/";
+
+ protected get(url: string): Observable {
+ return this.http.get(this.baseAddress + url);
+ }
+
+ protected post(url: string, body: T): Observable {
+ return this.http.post(this.baseAddress + url, body);
}
}
diff --git a/src/services/group.service.ts b/src/services/group.service.ts
index df125cc..82afbcb 100644
--- a/src/services/group.service.ts
+++ b/src/services/group.service.ts
@@ -3,8 +3,8 @@ import { BaseService } from './base.service';
import { Observable } from 'rxjs';
import { Group } from '../model/Group';
@Service()
-export class GroupService extends BaseService{
- public getGroups():Observable{
- return this.get("http://127.0.0.1:8080/group");
+export class GroupService extends BaseService {
+ public getGroups(): Observable {
+ return this.get("group");
}
}
diff --git a/src/services/project.service.ts b/src/services/project.service.ts
index f481c96..aba1862 100644
--- a/src/services/project.service.ts
+++ b/src/services/project.service.ts
@@ -6,6 +6,6 @@ import { Project } from '../model/Project';
@Service()
export class ProjectService extends BaseService {
public getProjects(): Observable {
- return this.get("http://127.0.0.1:8080/project");
+ return this.get("project");
}
}
diff --git a/src/services/task.service.ts b/src/services/task.service.ts
index 2aaad94..c7a5597 100644
--- a/src/services/task.service.ts
+++ b/src/services/task.service.ts
@@ -4,8 +4,19 @@ import { Task } from '../model/Task';
import { BaseService } from './base.service';
@Service()
-export class TaskService extends BaseService{
+export class TaskService extends BaseService {
public getTasks(): Observable {
- return this.get("http://127.0.0.1:8080/task");
+ return this.get("task");
+ }
+
+ public addTask(name: string, dueDate: string | null, priority: string | null, status: string | null): Observable {
+ let body: Task = {
+ name_task: name,
+ date_task: new Date(dueDate!),
+ priority_task: parseInt(priority!),
+ status_task: status!,
+ id_task: 0
+ }
+ return this.post("task/add", body);
}
}
diff --git a/src/view/pages/home/home.component.html b/src/view/pages/home/home.component.html
index c433b69..4ca957d 100644
--- a/src/view/pages/home/home.component.html
+++ b/src/view/pages/home/home.component.html
@@ -11,6 +11,28 @@
{{ task.name_task }}
}
+
+
+
+ @if (showTaskForm){
+
+ }
diff --git a/src/view/pages/home/home.component.ts b/src/view/pages/home/home.component.ts
index 9b90134..97992fc 100644
--- a/src/view/pages/home/home.component.ts
+++ b/src/view/pages/home/home.component.ts
@@ -6,9 +6,11 @@ import { GroupService } from '../../../services/group.service';
import { Group } from '../../../model/Group';
import { ProjectService } from '../../../services/project.service';
import { Project } from '../../../model/Project';
+import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
+import { Observable } from 'rxjs';
@Component({
- imports: [RouterOutlet],
+ imports: [RouterOutlet, ReactiveFormsModule],
selector: 'app-root',
styleUrl: './home.component.css',
templateUrl: './home.component.html',
@@ -22,6 +24,15 @@ export class Home {
groups: WritableSignal = signal([]);
projects: WritableSignal = signal([]);
+ newTaskForm = new FormGroup({
+ name: new FormControl('', Validators.required),
+ dueDate: new FormControl(''),
+ priority: new FormControl(''),
+ status: new FormControl(''),
+ });
+
+ showTaskForm: boolean = false;
+
public ngOnInit(): void {
this.taskService.getTasks().subscribe((response: Task[]): void => {
this.tasks.set(response);
@@ -35,4 +46,24 @@ export class Home {
this.projects.set(response);
})
}
+
+ public toggleForm(): void {
+ this.showTaskForm = !this.showTaskForm;
+ }
+
+ /**
+ * submitTask
+ */
+ public submitTask(): void {
+ let response: Observable = this.taskService.addTask(this.newTaskForm.controls.name.value!,
+ this.newTaskForm.controls.dueDate.value,
+ this.newTaskForm.controls.priority.value,
+ this.newTaskForm.controls.status.value);
+
+ response.subscribe(response => {
+ this.tasks.update(values => {
+ return [...values, response];
+ });
+ });
+ }
}