allfree-angular-frontend / src / app / _services / user-service / user.service.ts
user.service.ts
Raw
import { APIResponse, Article, User, UserLogged, NewArticleDTO } from '../../models/models';
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { TokenStorageService } from '../jwt-service/token-storage.service';
import { NumberSymbol } from '@angular/common';

const API_TEST_URL = 'http://localhost:8081/api/v1/test/';
const API_BASE_URL = 'http://localhost:8081/api/v1/';
const TEST_API = 'https://mocki.io/v1/0ec1472c-2146-4b4f-8b37-edb4a8d893c2';

@Injectable({
  providedIn: 'root',
})
export class UserService {
  userId: number = this.tokenStorage.getUser().userDetails.id;

  constructor(
    private http: HttpClient,
    private tokenStorage: TokenStorageService
  ) {}

  getUserAcceptedArticles():Observable<APIResponse<Article>>{
  this.userId = this.tokenStorage.getUser().userDetails.id;
  return this.http.get<APIResponse<Article>>(
  API_BASE_URL + 'user/' + this.userId + '/articles/ACCEPTED'
);
  }

  getUserPendingArticles(): Observable<APIResponse<Article>> {
    this.userId = this.tokenStorage.getUser().userDetails.id;
    return this.http.get<APIResponse<Article>>(
      API_BASE_URL + 'user/' + this.userId + '/articles/PENDING'
    );
  }
  getAllUsers(): Observable<Array<User>> {
    return this.http.get<Array<User>>(API_BASE_URL + 'users');
  }
  deleteUser(id: number): Observable<Object> {
    let response = this.http.delete<Object>(
      API_BASE_URL + 'users/delete/' + id
    );
    console.log('deleted', response);
    return response;
  }
  updateUser(id: number, user: User): Observable<Object> {
    let response = this.http.put<Observable<User>>(
      API_BASE_URL + 'users/update/' + id,
      user
    );
    console.log('update-response', response);
    return response;
  }
  getUserById(id: number): Observable<User> {
    return this.http.get<User>(API_BASE_URL + 'users/' + id);
  }
  addArticleToUser(newArticleRequest:NewArticleDTO): Observable<User>{
    // @ts-ignore
    return this.http.put(API_BASE_URL + 'articleToUser', newArticleRequest);
    // console.log(response);
  }
  addArticleToFav(articleId: number){
    // @ts-ignore
    let response = this.http.put(API_TEST_URL + 'fav/add?' + 'userID=' + this.tokenStorage.getUser().userDetails.id + '&articleID=' + articleId);
    response.subscribe((data) => {
      console.log(data);
    });
    return response;
  }

  getUserFavoriteArticles() {
    return this.http.get(API_TEST_URL + 'fav/get?' + 'userID=' + this.userId);
  }
  getArticlesForLoggedUser(){
    return this.http.get(API_BASE_URL + 'articlesForUser/' +this.tokenStorage.getUser().userDetails.id );
    // return this.http.get(TEST_API);
  }
  sendMessageForArticle(message: string, articleId: number) {
    return this.http.post(API_BASE_URL + 'message/add', {
      fromUserId: this.tokenStorage.getUser().userDetails.id,
      toArticleId: articleId,
      message: message
    });
  }
}