alientronics/fleetany-mobile

View on GitHub
src/pages/fuel/fuel.ts

Summary

Maintainability
A
1 hr
Test Coverage
'use strict';

import { Component } from '@angular/core';
import { AlertController, NavController} from 'ionic-angular';
import { TranslateService } from 'ng2-translate/ng2-translate';
import { UserData } from '../../providers/user-data';
import { Toast } from 'ionic-native';
import { FormBuilder, Validators, AbstractControl } from '@angular/forms';

@Component({
  templateUrl: 'fuel.html'
})
export class Fuel {

  public fuelForm: any;
  public userData: UserData;
  public price: AbstractControl;
  public amount: AbstractControl;
  public type: AbstractControl;
  public miliage: AbstractControl;
  public tankfill: AbstractControl;
  public fuelsent: boolean;
  public vehiclefailed: boolean;
  public types: Array<any>;

  constructor(
      fb: FormBuilder, 
      userData: UserData, 
      public nav: NavController, 
      private translate: TranslateService,
      public alertCtrl: AlertController 
  ) {
    this.translate = translate;
    this.userData = userData;
      this.fuelsent = false;
      this.vehiclefailed = false;
    this.types = []

    this.fuelForm = fb.group({  
        'price':    ['', Validators.required ],
        'amount':   ['', Validators.required ],
        'miliage':  ['', Validators.required ],
        'type':     ['', ],
        'tankfill': ['', ],
        'valid': ['', ]
    });

    for(let field in this.fuelForm.controls) {
        this[field] = this.fuelForm.controls[field];
    };

    this.userData.getFuelTypes().then((types) => {
      this.types = types;
    });
    
    this.fuelForm.controls['type'].setValue('regular', { onlySelf: true });
    this.fuelForm.controls['tankfill'].setValue(true, { onlySelf: true });
  }

  onSubmit(value: any): void { 
      if(this.fuelForm.valid || value.valid) {
          console.log('Submitted value: ', value);

          let params: any = {};
          params.fuel_cost = value.price;
          params.fuel_amount = value.amount;
          params.end_mileage = value.miliage;
          params.fuel_type = value.type;
          params.tank_fill_up = value.tankfill ? 1 : 0;            
           
          if (this.userData.plate == null) {
            this.userData.showToast('Vehicle should be selected!', 'Error!', this.alertCtrl);                
          } else {
            this.userData.postApi('trip', params).subscribe(
              res => {

                for(let field in this.fuelForm.controls) {
                  this.fuelForm.controls[field].setValue('', { onlySelf: true });
                };

                this.fuelForm.controls['type'].setValue('regular', { onlySelf: true });
                this.fuelForm.controls['tankfill'].setValue(true, { onlySelf: true });

                this.userData.showToast('Fuel sent successfully!', 'Success!', this.alertCtrl);
            
              },
              error => {
                //this.userData.showToast('Error sending data: ' + error.statusText, 'Error!', this.nav);
                console.log(error);
              }
            );
          }
      }
  } 

  closeAlert() {
    //void
  }

}