File

src/app/services/db-connection.service.ts

Index

Properties
Methods

Constructor

constructor(http: HttpClient)
Parameters :
Name Type Optional
http HttpClient No

Methods

cancelListing
cancelListing(id: number, userToken: string)

cancel listing

Parameters :
Name Type Optional Description
id number No

listingID

userToken string No

webtoken

Returns : any

http response promise

cancelTransaction
cancelTransaction(transactionID: number, userToken: string)

cancels transaction (doesn't delete)

Parameters :
Name Type Optional Description
transactionID number No

transactionID

userToken string No

webtoken

Returns : any

http response promise

changePassword
changePassword(oldPassword: string, newPassword: string, userToken: string)

change password

Parameters :
Name Type Optional Description
oldPassword string No
newPassword string No
userToken string No

webtoken

Returns : any

http response promise

confirmPayment
confirmPayment(transactionID: number, userToken: string)

confirm payment of transaction

Parameters :
Name Type Optional Description
transactionID number No

transactionID

userToken string No

webtoken

Returns : any

http response promise

createCategory
createCategory(fields: object)

create category @field name (required) @field type

Parameters :
Name Type Optional
fields object No
Returns : any

http response promise

createListing
createListing(userToken: string, fields: Object)

create listing @field name @field description @field availableAssets @field date @field price @field picture: image in base64 format @field location

Parameters :
Name Type Optional Description
userToken string No

webtoken

fields Object No

(not required)

Returns : any

http response promise

createProperty
createProperty(company: string, property: string)
Parameters :
Name Type Optional
company string No
property string No
Returns : any
createTransaction
createTransaction(userToken: string, fields: Object)

create transaction @field listingID @field numberOfAssets

Parameters :
Name Type Optional Description
userToken string No

webtoken

fields Object No
Returns : any

http response promise

deleteCategory
deleteCategory(name: string)

delete category

Parameters :
Name Type Optional Description
name string No

category name

Returns : any

http response promise

deleteCategoryType
deleteCategoryType(type: string)

delete categories with type

Parameters :
Name Type Optional Description
type string No

category type

Returns : any

http response promise

deleteProperty
deleteProperty(company: string, property: string)
Parameters :
Name Type Optional
company string No
property string No
Returns : any
Async executeQuery
executeQuery(query: string)
Parameters :
Name Type Optional
query string No
Returns : unknown
getAllListings
getAllListings()

get all listings

Returns : any

http response promise

getCategories
getCategories()
Returns : any
getCompanies
getCompanies()
Returns : any
getListing
getListing(id: number)

get listingdata

Parameters :
Name Type Optional Description
id number No

listingID

Returns : any

http response promise

getListingReviews
getListingReviews(listingID: number)

get all reviews on listing

Parameters :
Name Type Optional
listingID number No
Returns : any

http response promise

getListingTransactions
getListingTransactions(listingID: number, userToken: string)

get all transactions on a given listing

Parameters :
Name Type Optional Description
listingID number No

listingID

userToken string No

webtoken

Returns : any

http response promise

getProfilePicture
getProfilePicture(userID: number)

get profile picture

Parameters :
Name Type Optional Description
userID number No

userID

Returns : any

http response promise

getProperties
getProperties()
Returns : any
getSelectedCompany
getSelectedCompany()
Returns : any
getTaxonomy
getTaxonomy()
Returns : any
getTokenHeader
getTokenHeader(token: string)
Parameters :
Name Type Optional
token string No
Returns : any
getUserData
getUserData(id: number, userToken: string)

get userdata

Parameters :
Name Type Optional Description
id number No

userID

userToken string No

webtoken

Returns : any

http response promise

getUserListings
getUserListings(userId: number)

get all listings made by given user

Parameters :
Name Type Optional Description
userId number No

userID

Returns : any

http response promise

getUserNotifications
getUserNotifications(userToken: string)

// get all notifications from user

Parameters :
Name Type Optional Description
userToken string No

web token

Returns : any

http response promise

getUserReviews
getUserReviews(userID: number)

get all reviews on user

Parameters :
Name Type Optional Description
userID number No

userID

Returns : any

http response promise

getUserTransactions
getUserTransactions(userToken: string)

get all transactions made by given user

Parameters :
Name Type Optional Description
userToken string No

webtoken

Returns : any

http response promise

markNotificationAsViewed
markNotificationAsViewed(notificationID: number, userToken: string)

mark notification as viewed

Parameters :
Name Type Optional Description
notificationID number No

notificationID

userToken string No

web token

Returns : any

http response promise

postListing
postListing(id: number, userToken: string, fields: Object)

update listingdata @field name @field description @field availableAssets @field date @field price @field picture: image in base64 format @field location

Parameters :
Name Type Optional Description
id number No

listingID

userToken string No

webtoken

fields Object No

(not required)

Returns : any

http response promise

postReview
postReview(userToken: string, transactionID: number, fields: object)

post a review @field comment @field score [1-5]

Parameters :
Name Type Optional Description
userToken string No
transactionID number No

transactionID

fields object No
Returns : any

http response promise

postUserData
postUserData(id: number, userToken: string, fields: Object)

update userdata @field firstName @field lastName @field email @field gender @field address @field birthDate @field phoneNumber

Parameters :
Name Type Optional Description
id number No

userID

userToken string No

webtoken

fields Object No

(not required)

Returns : any

http response promise

signIn
signIn(login: string, password: string)

sign user in

Parameters :
Name Type Optional
login string No
password string No
Returns : any

http response promise

signUp
signUp(fields: Object)

sign user up (creates user) @field firstName @field lastName @field password @field email @field gender @field address @field birthDate @field phoneNumber

Parameters :
Name Type Optional Description
fields Object No

(not required)

Returns : any

http response promise

updateSelectedCompany
updateSelectedCompany(company)
Parameters :
Name Optional
company No
Returns : any

Properties

backendPort
Type : number
Default value : 3000
url
Default value : 'http://localhost:' + this.backendPort
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { query } from '@angular/animations';


@Injectable({
  providedIn: 'root'
})
export class DbConnectionService {

  // backend connection settings
  backendPort = 3000;
  url = 'http://localhost:' + this.backendPort;

  constructor(private http: HttpClient) {
  }

  // create HTTP header with webtoken
  getTokenHeader(token: string){
    return new HttpHeaders().set('x-access-token', token);
  }

  /**
   * sign user in
   * @param login
   * @param password
   * @returns http response promise
   */
  signIn(login: string, password: string){
    return this.http.post(`${this.url}/api/auth/signin`, {'login': login, 'password': password}).toPromise();
  }

  /**
   * sign user up (creates user)
   * @param fields (not required)
   *  @field firstName
   *  @field lastName
   *  @field password
   *  @field email
   *  @field gender
   *  @field address
   *  @field birthDate
   *  @field phoneNumber
   * @returns http response promise
   */
  signUp(fields: Object){
    return this.http.post(`${this.url}/api/auth/signup`, fields).toPromise();
  }

  /**
   * get userdata
   * @param id userID
   * @param userToken webtoken
   * @returns http response promise
   */
  getUserData(id: number, userToken: string){
    return this.http.get(`${this.url}/api/userdata?id=${id}`, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * update userdata
   * @param id userID
   * @param userToken webtoken
   * @param fields (not required)
   *  @field firstName
   *  @field lastName
   *  @field email
   *  @field gender
   *  @field address
   *  @field birthDate
   *  @field phoneNumber
   * @returns http response promise
   */
  postUserData(id: number, userToken: string, fields: Object){
    return this.http.post(`${this.url}/api/userdata?id=${id}`, fields, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * get profile picture
   * @param userID userID
   * @returns http response promise
   */
  getProfilePicture(userID: number){
    return this.http.get(`${this.url}/api/userPicture?id=${userID}`).toPromise();
  }

  /**
   * change password
   * @param oldPassword
   * @param newPassword
   * @param userToken webtoken
   * @returns http response promise
   */
  changePassword(oldPassword: string, newPassword: string, userToken: string){
    return this.http.post(`${this.url}/api/user/changePassword`, {oldPassword: oldPassword, newPassword: newPassword}, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * get all listings
   * @returns http response promise
   */
  getAllListings(){
    return this.http.get(`${this.url}/api/listings`).toPromise();
  }

  /**
   * get all listings made by given user
   * @param userId userID
   * @returns http response promise
   */
  getUserListings(userId: number){
    return this.http.get(`${this.url}/api/listings/user?id=${userId}`).toPromise();
  }

  /**
   * create listing
   * @param userToken webtoken
   * @param fields (not required)
   *  @field name
   *  @field description
   *  @field availableAssets
   *  @field date
   *  @field price
   *  @field picture: image in base64 format
   *  @field location
   * @returns http response promise
   */
  createListing(userToken: string, fields: Object){
    return this.http.post(`${this.url}/api/listing/create`, fields, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * get listingdata
   * @param id listingID
   * @returns http response promise
   */
  getListing(id: number){
    return this.http.get(`${this.url}/api/listing?id=${id}`).toPromise();
  }

  /**
   * update listingdata
   * @param id listingID
   * @param userToken webtoken
   * @param fields (not required)
   *  @field name
   *  @field description
   *  @field availableAssets
   *  @field date
   *  @field price
   *  @field picture: image in base64 format
   *  @field location
   * @returns http response promise
   */
  postListing(id: number,  userToken: string, fields: Object){
    return this.http.post(`${this.url}/api/listing?id=${id}`, fields, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * cancel listing
   * @param id listingID
   * @param userToken webtoken
   * @returns http response promise
   */
  cancelListing(id: number,  userToken: string){
    return this.http.get(`${this.url}/api/listing/cancel?id=${id}`, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * get all transactions on a given listing
   * @param listingID listingID
   * @param userToken webtoken
   * @returns http response promise
   */
  getListingTransactions(listingID: number, userToken: string){
    return this.http.get(`${this.url}/api/transactions/listing?id=${listingID}`, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * get all transactions made by given user
   * @param userToken webtoken
   * @returns http response promise
   */
  getUserTransactions(userToken: string){
    return this.http.get(`${this.url}/api/transactions/user`, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * create transaction
   * @param userToken webtoken
   * @param fields
   *  @field listingID
   *  @field numberOfAssets
   * @returns http response promise
   */
  createTransaction(userToken: string, fields: Object){
    return this.http.post(`${this.url}/api/transaction/create`, fields, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * cancels transaction (doesn't delete)
   * @param transactionID transactionID
   * @param userToken webtoken
   * @returns http response promise
   */
  cancelTransaction(transactionID: number, userToken: string){
    return this.http.get(`${this.url}/api/transaction/cancel?id=${transactionID}`, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * confirm payment of transaction
   * @param transactionID transactionID
   * @param userToken webtoken
   * @returns http response promise
   */
  confirmPayment(transactionID: number, userToken: string){
    return this.http.get(`${this.url}/api/transaction/confirmPayment?id=${transactionID}`, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  // get all categories
  getCategories(){
    return this.http.get(`${this.url}/api/categories`).toPromise();
  }

  /**
   * delete category
   * @param name category name
   * @returns http response promise
   */
  deleteCategory(name: string){
    return this.http.post(`${this.url}/api/category/delete`, {name: name}).toPromise();
  }

  /**
   * delete categories with type
   * @param type category type
   * @returns http response promise
   */
  deleteCategoryType(type: string){
    return this.http.post(`${this.url}/api/category/deleteType`, {type: type}).toPromise();
  }

  /**
   * create category
   * @param fields
   *  @field name (required)
   *  @field type
   * @returns http response promise
   */
  createCategory(fields: object){
    return this.http.post(`${this.url}/api/category/create`, fields).toPromise();
  }

  /**
   * // get all notifications from user
   * @param userToken web token
   * @returns http response promise
   */
  getUserNotifications(userToken: string){
    return this.http.get(`${this.url}/api/notifications`, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * mark notification as viewed
   * @param notificationID notificationID
   * @param userToken web token
   * @returns http response promise
   */
  markNotificationAsViewed(notificationID: number, userToken: string){
    return this.http.get(`${this.url}/api/notification/markViewed?id=${notificationID}`, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * post a review
   * @param transactionID transactionID
   * @param fields
   *  @field comment
   *  @field score [1-5]
   * @returns http response promise
   */
  postReview(userToken: string, transactionID: number, fields: object){
    return this.http.post(`${this.url}/api/review?id=${transactionID}`, fields, {headers: this.getTokenHeader(userToken)}).toPromise();
  }

  /**
   * get all reviews on listing
   * @param ListingID listingID
   * @returns http response promise
   */
  getListingReviews(listingID: number){
    return this.http.get(`${this.url}/api/reviews/listing?id=${listingID}`).toPromise();
  }

  /**
   * get all reviews on user
   * @param userID userID
   * @returns http response promise
   */
  getUserReviews(userID: number){
    return this.http.get(`${this.url}/api/reviews/user?id=${userID}`).toPromise();
  }

  getTaxonomy() {
    return this.http.get(`${this.url}/api/taxonomy`).toPromise();
  }

  getProperties() {
    return this.http.get(`${this.url}/api/properties`).toPromise();
  }

  getSelectedCompany() {
    return this.http.get(`${this.url}/api/company`).toPromise();
  }

  getCompanies() {
    return this.http.get(`${this.url}/api/companies`).toPromise();
  }

  updateSelectedCompany(company) {
    return this.http.put(`${this.url}/api/company/updateSelected`, { name: company }).toPromise();
  }

  createProperty(company: string, property: string){
    // return this.http.post(`${this.url}/api/property/company=${company}`, property).toPromise();
    return this.http.post(`${this.url}/api/property/create`, { company: company, property: property }).toPromise();
  }

  deleteProperty(company: string, property: string) {
    return this.http.delete(`${this.url}/api/property/${property}/${company}`).subscribe(response => {
      console.log("Record deleted", response);
    }, error => {
      console.error("Error deleting record", error);
    });
  }

  // deleteProperties(company: string) {
  //   console.log(company)
  //   return this.http.post(`${this.url}/api/properties/delete` , {company: company}).toPromise()
  // }

  async executeQuery(query: string){
    return this.http.post(this.url, {'query': query}).toPromise().then(r => {
      if (r["error"]) // error handling
        return alert(`Error when connecting to database\n${r["error"]}`)
      return r // forward response
    });
  }
  
}


results matching ""

    No results matching ""