Untitled
unknown
plain_text
3 years ago
7.2 kB
9
Indexable
import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { NgxUiLoaderService } from 'ngx-ui-loader'; import { BillService } from 'src/app/services/bill.service'; import { CategoryService } from 'src/app/services/category.service'; import { ProductService } from 'src/app/services/product.service'; import { GlobalConstants } from 'src/app/shared/global-constants'; import { SnackbarService } from 'src/app/snackbar.service'; import { saveAs } from 'file-saver'; @Component({ selector: 'app-manage-order', templateUrl: './manage-order.component.html', styleUrls: ['./manage-order.component.scss'] }) export class ManageOrderComponent implements OnInit { displayedColumns: string[] = ['name', 'category', 'price', 'quantity', 'total', 'edit']; dataSource: any = []; manageOrderForm: any = FormGroup; categorys: any = []; products: any = []; price: any; totalAmount: number = 0; responseMessage: any; constructor(private formBuilder: FormBuilder, private categoryService: CategoryService, private productService: ProductService, private snackbarService: SnackbarService, private billService: BillService, private ngxService: NgxUiLoaderService) { } ngOnInit(): void { this.getCategorys(); this.ngxService.start(); this.manageOrderForm = this.formBuilder.group({ name: [null, [Validators.required, Validators.pattern(GlobalConstants.nameRegex)]], email: [null, [Validators.required, Validators.pattern(GlobalConstants.emailRegex)]], contactNumber: [null, [Validators.required, Validators.pattern(GlobalConstants.contactNumberRegex)]], paymentMethod: [null, [Validators.required]], product: [null, [Validators.required]], category: [null, [Validators.required]], price: [null, [Validators.required]], total: [0, [Validators.required]], }) } getCategorys() { this.categoryService.getCategorys().subscribe((response: any) => { this.ngxService.stop(); this.categorys = response; }, (error: any) => { this.ngxService.stop(); if (error.error?.message) { this.responseMessage = error.error?.message; } else { this.responseMessage = GlobalConstants.genericError; } this.snackbarService.openSnackBar(this.responseMessage, GlobalConstants.error); }) } getProductsByCategory(value: any) { this.productService.getProductsByCategory(value.id).subscribe((response: any) => { this.products = response; this.manageOrderForm.controls['price'].setValue(''); this.manageOrderForm.controls['quantity'].setValue(''); this.manageOrderForm.controls['total'].setValue(''); }, (error: any) => { this.ngxService.stop(); if (error.error?.message) { this.responseMessage = error.error?.message; } else { this.responseMessage = GlobalConstants.genericError; } this.snackbarService.openSnackBar(this.responseMessage, GlobalConstants.error); }) } getProductDetails(value: any) { this.productService.getById(value.id).subscribe((response: any) => { this.price = response.price; this.manageOrderForm.controls['price'].setValue('response.price'); this.manageOrderForm.controls['quantity'].setValue('1'); this.manageOrderForm.controls['total'].setValue('this.price*1'); }, (error: any) => { this.ngxService.stop(); if (error.error?.message) { this.responseMessage = error.error?.message; } else { this.responseMessage = GlobalConstants.genericError; } this.snackbarService.openSnackBar(this.responseMessage, GlobalConstants.error); }) } setQuantity(value: any) { var temp = this.manageOrderForm.controls['quantity'].value; if (temp > 0) { this.manageOrderForm.controls['total'].setValue(this.manageOrderForm.controls['quantity'].value * this.manageOrderForm.controls['price'].value); } else if (temp != '') { this.manageOrderForm.controls['quantity'].setValue('1'); this.manageOrderForm.controls['total'].setValue(this.manageOrderForm.controls['quantity'].value * this.manageOrderForm.controls['price'].value); } } validateProductAdd() { if (this.manageOrderForm.controls['total'].value === 0 || this.manageOrderForm.controls['total'].value === null || this.manageOrderForm.controls['quantity'].value <= 0) return true; else return false; } validateSubmit() { if (this.totalAmount === 0 || this.manageOrderForm.controls['name'].value === null || this.manageOrderForm.controls['email'].value === null || this.manageOrderForm.controls['contactNumber'].value === null || this.manageOrderForm.controls['paymentMethod'].value === null || !(this.manageOrderForm.controls['contactNumber'].valid) || !(this.manageOrderForm.controls['email'].valid)) return true; else return false; } add() { var formData = this.manageOrderForm.value; var productName = this.dataSource.find((e: { id: number; }) => e.id == formData.product.id); if (productName === undefined) { this.totalAmount = this.totalAmount + formData.total; this.dataSource.push({ id: formData.product.id, name: formData.product.name, category: formData.category.name, quantity: formData.quantity, price: formData.price, total: formData.total }); this.dataSource = [...this.dataSource]; this.snackbarService.openSnackBar(GlobalConstants.ProductAdded,"success"); } else { this.snackbarService.openSnackBar(GlobalConstants.productExistError, GlobalConstants.error); } } handleDeleteAction(value:any,element:any){ this.totalAmount= this.totalAmount - element.total; this.dataSource.splice(value,1); this.dataSource= [...this.dataSource]; } submitAction(){ this.ngxService.start(); var formData = this.manageOrderForm.value; var data = { name:formData.name, email:formData.email, contactNumber:formData.contactNumber, paymentMethod:formData.paymentMethod, totalAmount:this.totalAmount, productDetails:JSON.stringify(this.dataSource) } this.billService.generateReport(data).subscribe((response:any)=>{ this.downloadFile(response?.uuid); this.manageOrderForm.reset(); this.dataSource = []; this.totalAmount = 0; },(error:any)=>{ this.ngxService.stop(); if (error.error?.message) { this.responseMessage = error.error?.message; } else { this.responseMessage = GlobalConstants.genericError; } this.snackbarService.openSnackBar(this.responseMessage, GlobalConstants.error); }) } downloadFile(fileName:any){ var data ={ uuid:fileName } this.billService.getPDF(data).subscribe((response:any)=>{ saveAs(response,fileName+'.pdf'); this.ngxService.stop(); }) } }
Editor is loading...