All files / app/core/task task.create.service.ts

92.85% Statements 26/28
72.72% Branches 8/11
87.5% Functions 7/8
91.3% Lines 21/23

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62                  3x   3x 3x   3x 3x 3x   3x 3x   3x             1x 1x       1x       2x 2x 2x       1x 1x             1x 1x         1x   1x    
import { inject, Injectable, signal } from "@angular/core";
import { environment } from "../../../environments/environment";
import { TaskCreateValidationService } from "./task.create.validation";
import { HttpClient, HttpErrorResponse } from "@angular/common/http";
import { TaskService } from "./task.service";
import { TaskCard, TaskRequest } from "./task.interfaces";
import { catchError, map, Observable, throwError } from "rxjs";
 
@Injectable({ providedIn: 'root' })
export class CreateTaskService {
 
  readonly taskCreateValidationService = inject(TaskCreateValidationService);
  readonly taskService = inject(TaskService);
 
  private readonly isCreateTaskPanelOpenSignal = signal<boolean>(false);
  private readonly isLoadingSignal = signal<boolean>(false);
  private readonly apiBase = environment.authApiBaseUrl;
 
  readonly isCreateTaskPanelOpen = this.isCreateTaskPanelOpenSignal.asReadonly();
  readonly isLoading = this.isLoadingSignal.asReadonly();
 
  constructor(private http: HttpClient) { }
 
  setLoading(loading: boolean) {
    this.isLoadingSignal.set(loading);
  }
 
  openCreateTaskPanel(): void {
    this.taskCreateValidationService.resetForm();
    this.isCreateTaskPanelOpenSignal.set(true);
  }
 
  closeCreateTaskPanel(): void {
    this.isCreateTaskPanelOpenSignal.set(false);
  }
 
  createTask(taskData: TaskRequest): Observable<string> {
    const { isSubtask , ...rest} = taskData;
    console.log("Tarea a crear: ", rest)
    return this.http.post(this.apiBase + "/api/v1/task/", rest, {
      withCredentials: true
    }).pipe(
      map((res) => {
        this.taskService.addTask(taskData.projectId, res as TaskCard);
        return "Task creada exitosamente";
      }),
      catchError(this.handleError)
    );
  }
 
  private handleError(error: HttpErrorResponse) {
    let errorMessage = 'Error desconocido';
    Iif (error.error instanceof ErrorEvent) {
      // Error del lado del cliente
      errorMessage = `Error: ${error.error.message}`;
    } else {
      // Error del lado del servidor
      errorMessage = `Código: ${error.status} - Mensaje: ${error.message}`;
    }
    return throwError(() => new Error(errorMessage));
  }
}