cortex-atm
TypeScript icon, indicating that this package has built-in type declarations

1.0.7 • Public • Published

Cortex ATM Library

The library is the Angular module which provides access to the Cortex Platform API from application written with the Angular web framework 7 version. The library contains methods to initialize the application, interacts with peripherals devices such as cash dispenser and bill acceptor, listeners for outside events.

Installation

You can install this package either with npm or with bower.

npm

npm install cortex-atm

bower

bower install cortex-atm

Requirements

angular-core 7
angular-common 7
rxjs ^5
node v10.13.0
npm 6.9.0

Usage

Create angular application

ng new cortex-test-app
cd cortex-test-app

Add the cortex library to the application

npm install cortex-atm

Adding the cortex atm module to the application

Edit the app.module.ts file:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
 
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import {CortexAtmModule} from 'cortex-atm/modules/CortexAtmModule' // Import module from node modules
 
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    CortexAtmModule // Imports into the application
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Inject cortex atm service into application component

Edit the app.component.ts file:

import { Component } from '@angular/core';
import { CortexAtmPeripheralsService } from 'cortex-atm/modules/CortexAtmModule'; // Import the service from node modules
 
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'cortex-test-app';
  constructor(public cortexAtm: CortexAtmPeripheralsService) {} // Inject cortex atm service
}

Open bill acceptor

To open bill acceptor need to use openBillAcceptor method with two parameters

  • amount - Amount of money you expect to get from bill acceptor.
  • accountNumber - Identificator of user, it may be phone number or any other kind of identificator, the identificator will be printed on the check from fiscal printer.

This method is listener and will be notified with every puted banknotes, notification has BillAcceptor class instance and provide access to the next fields:

  • body.amount - amount of money you expect to get from bill acceptor
  • body.total - how much money is puted to bill acceptor since to call the method
  • body.lastAmount - latest denomination of banknote or coin.

For example need to get 10 from bill acceptor let's assume that user has puted 2 banknotes of 1 USD, so second notification you will get into openBillAcceptor method will be like:

  • body.amount - 10
  • body.total - 2
  • body.lastAmount - 1
import { Component } from '@angular/core';
import { CortexAtmPeripheralsService, BillAcceptor } from 'cortex-atm/modules/CortexAtmModule';
 
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'cortex-test-app';
  constructor(public cortexAtm: CortexAtmPeripheralsService) {} // Inject cortex atm service
 
  public openBillAcceptorExample(): void {
    let amount = 10;
    this.cortexAtm.openBillAcceptor(amount, "clientid").onmessage = (message) => {
      let response: BillAcceptor = <BillAcceptor>JSON.parse(message.data);
      if (response.body.total == amount) { //we retrieved full amount of money
        // User puted all amount of many do something with it.
      }
    }
  }
}

Close bill acceptor

When the application retrieved full amount of money from bill acceptor it must be closed. To close bill acceptor method closeBillAcceptor must be used, this method has no parameters and doesn't return any result.

import { Component } from '@angular/core';
import { CortexAtmPeripheralsService, BillAcceptor } from 'cortex-atm/modules/CortexAtmModule';
 
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'cortex-test-app';
  constructor(public cortexAtm: CortexAtmPeripheralsService) {} // Inject cortex atm service
 
  public openBillAcceptorExample(): void {
    let amount = 10;
    this.cortexAtm.openBillAcceptor(amount, "clientid").onmessage = (message) => {
      let response: BillAcceptor = <BillAcceptor>JSON.parse(message.data);
      if (response.body.total == amount) { // we got full amount of money
        this.cortexAtm.closeBillAcceptor(); // close bill acceptor
        // do something with it.
      }
    }
  }
}

Dispense money to user

In case you need ATM machine gives money to user you can use dispence method, it has one parameter with amount to be send and doesn't return any responses.

  • amount - amount of money should be send out to user, amount should be integer type.

Let's assume after you got money from user you will want to give it back to user:

import { Component } from '@angular/core';
import { CortexAtmPeripheralsService, BillAcceptor } from 'cortex-atm/modules/CortexAtmModule';
 
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'cortex-test-app';
  constructor(public cortexAtm: CortexAtmPeripheralsService) {} // Inject cortex atm service
 
  public openBillAcceptorExample(): void {
    let amount = 10;
    this.cortexAtm.openBillAcceptor(amount, "clientid").onmessage = (message) => {
      let response: BillAcceptor = <BillAcceptor>JSON.parse(message.data);
      if (response.body.total == amount) {
        this.cortexAtm.closeBillAcceptor(); // close bill acceptor
        this.cortexAtm.dispense(amount); // get back money to user
      }
    }
  }
}

Listen button click events

The cortex platform provides back and ok buttons, ones will displayed under launched application so you don't need to inculde/implement these two buttons in the your application, but you can use method atmButtons() to listen events from these buttons, this method has no parameters and returns listener so the application can be notified for every tap by any of these two buttons. Event has String class instance with next values:

  • OK_BUTTON - Tap by ok button
  • BACK_BUTTON - Tap by back button

Let's add code which implements navigation, if user presses ok button application will open component with next-app-page path and back button opens previus page by previous-app-page path, you can add code like that to the constructor:

import { Component } from '@angular/core';
import { CortexAtmPeripheralsService, BillAcceptor } from 'cortex-atm/modules/CortexAtmModule';
import { Router } from '@angular/router';
 
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'cortex-test-app';
  constructor(public cortexAtm: CortexAtmPeripheralsService, public router: Router) { // Inject cortex atm service
    cortexAtm.atmButtons().onmessage = (message) => { // button listener
      let data = JSON.parse(message.data); // parses data 
      switch(data.type) {
        case "OK_BUTTON": { // if ok button was taped
          router.navigate(['next-app-page']);
          break;
        }
 
        case "BACK_BUTTON": { // if back button was taped
          router.navigate(['previous-app-page']);
          break;
        }
        
        default: {
          break;
        }
 
      }
    }
  }
 
  public openBillAcceptorExample(): void {
    let amount = 10.50;
    this.cortexAtm.openBillAcceptor(amount, "clientid").onmessage = (message) => {
      let response: BillAcceptor = <BillAcceptor>JSON.parse(message.data);
      if (response.body.total == amount) {
        this.cortexAtm.closeBillAcceptor();
        // User puted all amount of many do something with it.
        this.cortexAtm.dispense(amount); // get back money to user
      }
    }
  }
}

Readme

Keywords

Package Sidebar

Install

npm i cortex-atm

Weekly Downloads

1

Version

1.0.7

License

MIT

Unpacked Size

43 kB

Total Files

22

Last publish

Collaborators

  • ofaly