Advertisement
Guest User

Untitled

a guest
Sep 16th, 2020
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 2.96 KB | None | 0 0
  1. import {Component, OnInit} from '@angular/core';
  2. import {ActivatedRoute, Router} from '@angular/router';
  3. import {FormBuilder, FormGroup, Validators} from '@angular/forms';
  4. import {ProductGroupService} from '../../../services/product-group/product-group.service';
  5. import {ProductGroup} from '../../../interfaces/product-group';
  6. import {Product} from '../../../interfaces/product';
  7. import {ProductService} from '../../../services/product/product.service';
  8. import {Page} from '../../../interfaces/page';
  9. import {Location} from '@angular/common';
  10.  
  11. @Component({
  12.   selector: 'app-product-group-update',
  13.   templateUrl: './product-group-update.component.html',
  14.   styleUrls: ['./product-group-update.component.css']
  15. })
  16. export class ProductGroupUpdateComponent implements OnInit {
  17.   NO_PRODUCT: string = 'No product';
  18.   editProductGroupForm: FormGroup;
  19.   id: number;
  20.   isFormSubmitted = false;
  21.   availableProducts: Product[];
  22.   toSelect: Product[];
  23.  
  24.   constructor(
  25.     private formBuilder: FormBuilder,
  26.     private productGroupService: ProductGroupService,
  27.     private productService: ProductService,
  28.     private router: Router,
  29.     private activatedRoute: ActivatedRoute,
  30.     private location: Location,
  31.  
  32.   ) {
  33.   }
  34.  
  35.   ngOnInit(): void {
  36.     this.editProductGroupForm = this.formBuilder.group({
  37.       name: ['', [Validators.required, Validators.maxLength(100)]],
  38.       description: ['', [Validators.required, Validators.maxLength(100)]],
  39.       products: ['', []],
  40.     });
  41.  
  42.     this.activatedRoute.paramMap.subscribe(params => {
  43.       this.id = +params.get('id');
  44.       this.productGroupService.getProductGroupById(this.id).subscribe(
  45.         receivedProductGroup => {
  46.           this.toSelect = receivedProductGroup.products;
  47.           this.editProductGroupForm.setValue({
  48.             name: receivedProductGroup.name,
  49.             description: receivedProductGroup.description,
  50.             products: receivedProductGroup.products,
  51.           });
  52.         }
  53.       );
  54.     });
  55.     console.log(this.editProductGroupForm)
  56.  
  57.     this.productService.getAllProducts(new Page<Product>()).subscribe(response => {
  58.       this.availableProducts = response.content;
  59.     });
  60.   }
  61.  
  62.   submitForm() {
  63.     this.isFormSubmitted = true;
  64.     if (this.editProductGroupForm.invalid) {
  65.       return;
  66.     }
  67.  
  68.     const changedProductGroup = this.convertFormToProductGroup(this.editProductGroupForm);
  69.  
  70.     this.productGroupService.updateProductGroup(changedProductGroup).subscribe(
  71.       () => {
  72.         this.router.navigate(['/groups']);
  73.       }
  74.     );
  75.   }
  76.  
  77.   convertFormToProductGroup(productGroupForm: FormGroup): ProductGroup {
  78.     if (productGroupForm.value.products === this.NO_PRODUCT) {
  79.       productGroupForm.value.products = null;
  80.     }
  81.  
  82.     return {
  83.       id: this.id,
  84.       name: productGroupForm.value.name,
  85.       description: productGroupForm.value.description,
  86.       products: productGroupForm.value.products
  87.     };
  88.   }
  89.  
  90.   goBack() {
  91.     this.location.back();
  92.   }
  93. }
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement