This repository has been archived on 2023-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
FoodLoop-Web/src/app/dashboard/add-data.component.ts

309 lines
8.7 KiB
TypeScript
Raw Normal View History

2017-06-26 17:36:48 +00:00
import { Component, OnInit } from '@angular/core';
import { Validators, FormBuilder, FormGroup } from '@angular/forms';
import { Http, Response } from '@angular/http';
import { ApiService } from '../providers/api-service';
import { OrgTableComponent } from '../shared/org-table.component';
2017-08-29 17:15:47 +00:00
import * as moment from 'moment';
2017-06-26 17:36:48 +00:00
import 'rxjs/add/operator/map';
@Component({
templateUrl: 'add-data.component.html',
providers: [ApiService]
})
export class AddDataComponent {
2017-06-29 15:33:11 +00:00
payrollForm: FormGroup;
singleSupplierForm: FormGroup;
employeeForm: FormGroup;
2017-08-29 17:15:47 +00:00
transactionForm: FormGroup;
2017-08-25 11:18:14 +00:00
payrollFormStatus: any;
singleSupplierFormStatus: any;
employeeFormStatus: any;
2017-08-29 17:15:47 +00:00
transactionFormStatus: any;
transactionFormStatusError: string = 'Error received, please try again.';
accountType: any;
2017-08-29 17:15:47 +00:00
submitOrg = {
name: '',
street_name: '',
town: '',
postcode: '',
};
organisationId: number;
organisationTown: string;
organisationPostcode: string;
amount: number;
transactionAdditionType = 1;
storeList;
showAddStore = false;
submitReceipt = false;
transactionFormInvalid = true;
myDate: any;
minDate: any;
2017-06-26 17:36:48 +00:00
2017-06-29 15:33:11 +00:00
constructor(
private http: Http,
private formBuilder: FormBuilder,
private api: ApiService,
) {
2017-08-29 17:15:47 +00:00
this.payrollForm = this.formBuilder.group({
2017-06-29 15:33:11 +00:00
entryperiod: ['', [Validators.required]],
employeeamount: ['', [Validators.required]],
localemployeeamount: ['', [Validators.required]],
grosspayroll: ['', [Validators.required]],
payrollincometax: [''],
payrollemployeeni: [''],
payrollemployerni: [''],
payrolltotalpension: [''],
payrollotherbenefit: [''],
});
this.singleSupplierForm = this.formBuilder.group({
2017-07-03 16:20:48 +00:00
entryperiod: ['', [Validators.required]],
2017-06-29 15:33:11 +00:00
supplierbusinessname: [''],
postcode: [''],
monthlyspend: [''],
});
this.employeeForm = this.formBuilder.group({
2017-07-03 16:20:48 +00:00
entryperiod: ['', [Validators.required]],
2017-06-29 15:33:11 +00:00
employeeno: [''],
employeeincometax: [''],
employeegrosswage: [''],
employeeni: [''],
employeepension: [''],
employeeotherbenefit: [''],
});
2017-08-29 17:15:47 +00:00
this.myDate = moment().format('YYYY-MM-DD[T]HH:mm');
// this.myDate = new Date().toISOString().slice(0, 16);
}
2017-08-29 17:15:47 +00:00
ngOnInit(): void {
this.getMinDate();
this.accountType = localStorage.getItem('usertype');
2017-08-29 17:15:47 +00:00
}
getMinDate(){
// gets the April 1st date of the current year
let aprilDate = moment().month(3).date(1);
let now = moment();
// Checks if current time is before April 1st, if so returns true
let beforeApril = now.isBefore(aprilDate);
if ( beforeApril == true ) {
this.minDate = aprilDate.subtract(2, 'years').format('YYYY-MM-DD');
} else {
this.minDate = aprilDate.subtract(1, 'years').format('YYYY-MM-DD');
}
}
2017-08-29 17:15:47 +00:00
initializeItems() {
// Dont bother searching for an empty or undefined string
if ( this.submitOrg.name == '' ) {
return;
}
var searchData = {
search_name: this.submitOrg.name,
};
this.api.search(searchData).subscribe(
data => {
if(data.validated.length > 0) {
this.storeList = data.validated;
this.showAddStore = false;
this.transactionAdditionType = 1;
} else {
this.storeList = data.unvalidated;
this.showAddStore = false;
this.transactionAdditionType = 2;
}
// handle the case when the storelist is empty
if(this.storeList.length < 1 ) {
this.storeList = null;
this.showAddStore = true;
this.transactionAdditionType = 3;
}
},
error => {
console.log(error);
}
);
}
// if user select a item from the list
addStore(store){
this.submitOrg = store;
this.transactionFormValidate();
this.organisationId = store.id;
}
// search for store
organisationSearch(ev) {
// Reset items back to all of the items
this.initializeItems();
// set val to the value of the searchbar
let val = ev.target.value;
// Filter the store list so search seems quicker
if (val && val.trim() != '' && this.storeList != null) {
this.storeList = this.storeList.filter(
(item) => {
return ( item.name.toLowerCase().indexOf( val.toLowerCase() ) > -1 );
}
)
}
// if nothing is found
if(!this.storeList === null){
// display add new store button
this.showAddStore = true;
}
}
transactionFormValidate() {
if( this.submitOrg.name.length == 0 &&
2017-08-29 17:15:47 +00:00
this.amount == 0 ) {
this.transactionFormInvalid = true;
}else{
this.transactionFormInvalid = false;
}
}
public postTransaction() {
var myParams: any;
let purchaseTime: string;
purchaseTime = moment(this.myDate, 'YYYY-MM-DD[T]HH:mm').local().format('YYYY-MM-DD[T]HH:mm:ss.SSSZ');
switch(this.transactionAdditionType){
case 1:
myParams = {
transaction_type : this.transactionAdditionType,
transaction_value : this.amount,
purchase_time : purchaseTime,
organisation_id : this.organisationId,
};
break;
case 2:
myParams = {
transaction_type : this.transactionAdditionType,
transaction_value : this.amount,
purchase_time : purchaseTime,
organisation_id : this.organisationId,
};
break;
case 3:
myParams = {
transaction_type : this.transactionAdditionType,
transaction_value : this.amount,
purchase_time : purchaseTime,
organisation_name : this.submitOrg.name,
street_name : this.submitOrg.street_name,
town : this.submitOrg.town,
postcode : this.submitOrg.postcode,
};
break;
}
/******************************/
this.api
.upload(myParams)
.subscribe(
result => {
if ( result.success == true ) {
console.log('Successful Upload');
console.log(result);
this.transactionFormStatus = "success";
console.log(this.transactionFormStatus);
this.resetForm();
} else {
console.log('Upload Error');
this.transactionFormStatusError = JSON.stringify(result.status) + 'Error, ' + JSON.stringify(result.message);
this.transactionFormStatus = "send_failed";
console.log(this.transactionFormStatus);
}
},
error => {
console.log('Upload Error');
console.log(error);
try {
console.log(error.error);
let jsonError = error.json();
console.log("boop");
this.transactionFormStatusError = '"' + jsonError.error + '" Error, ' + jsonError.message;
2017-08-29 17:15:47 +00:00
} catch(e) {
this.transactionFormStatusError = 'There was a server error, please try again later.';
}
this.transactionFormStatus = "send_failed";
console.log(this.transactionFormStatus);
}
);
}
private resetForm() {
this.submitOrg = {
name: '',
street_name: '',
town: '',
postcode: '',
};
this.storeList = null;
this.amount = null;
this.transactionFormInvalid = true;
2017-06-29 15:33:11 +00:00
}
2017-06-29 15:33:11 +00:00
onSubmitPayroll() {
console.log(this.payrollForm.value);
2017-06-29 15:33:11 +00:00
this.api
.orgPayroll(this.payrollForm.value)
2017-06-29 15:33:11 +00:00
.subscribe(
result => {
console.log('data submitted!');
2017-08-25 11:18:14 +00:00
this.payrollFormStatus = "success";
console.log(this.payrollFormStatus);
2017-06-29 15:33:11 +00:00
},
error => {
console.log( error._body );
2017-08-25 11:18:14 +00:00
this.payrollFormStatus = "send_failed";
console.log(this.payrollFormStatus);
2017-06-29 15:33:11 +00:00
}
);
}
2017-06-29 15:33:11 +00:00
onSubmitSingleSupplier() {
console.log(this.singleSupplierForm.value);
2017-06-29 15:33:11 +00:00
this.api
.orgSupplier(this.singleSupplierForm.value)
2017-06-29 15:33:11 +00:00
.subscribe(
result => {
console.log('data submitted!');
2017-08-25 11:18:14 +00:00
this.singleSupplierFormStatus = "success";
console.log(this.singleSupplierFormStatus);
2017-06-29 15:33:11 +00:00
},
error => {
console.log( error._body );
2017-08-25 11:18:14 +00:00
this.singleSupplierFormStatus = "send_failed";
console.log(this.singleSupplierFormStatus);
2017-06-29 15:33:11 +00:00
}
);
}
2017-06-29 15:33:11 +00:00
onSubmitEmployee() {
console.log(this.employeeForm.value);
2017-06-29 15:33:11 +00:00
this.api
.orgEmployee(this.employeeForm.value)
2017-06-29 15:33:11 +00:00
.subscribe(
result => {
console.log('data submitted!');
2017-08-25 11:18:14 +00:00
this.employeeFormStatus = "success";
console.log(this.employeeFormStatus);
2017-06-29 15:33:11 +00:00
},
error => {
console.log( error._body );
2017-08-25 11:18:14 +00:00
this.employeeFormStatus = "send_failed";
console.log(this.employeeFormStatus);
2017-06-29 15:33:11 +00:00
}
);
}
2017-06-26 17:36:48 +00:00
}