|
- import {ChangeDetectorRef, Component, LOCALE_ID, OnInit, ViewChild} from '@angular/core';
- import {
- ProductJsonld,
- SaleJsonld,
- SaleService,
- SaleSummaryJsonld,
- SaleSummaryService
- } from "@app/core/api/v1";
- import {Subscription} from "rxjs";
- import {MatPaginator, MatPaginatorIntl, PageEvent} from "@angular/material/paginator";
- import {MatSort, Sort} from "@angular/material/sort";
- import {TranslateService} from "@ngx-translate/core";
- import {NewPartnerComponent} from "@app/partners/new-partner/new-partner.component";
- import {ModalStatus} from "@app/_helpers/modal.states";
- import {NgbModal, NgbModalOptions} from "@ng-bootstrap/ng-bootstrap";
- import {MatTableDataSource} from "@angular/material/table";
- import {OrderFilter} from "@app/_models/orderFilter";
- import {ApiConverter} from "@app/_helpers/api.converter";
- import {Router} from "@angular/router";
- import {registerLocaleData} from "@angular/common";
- import localeDe from '@angular/common/locales/de';
-
- registerLocaleData(localeDe);
-
- @Component({
- selector: 'app-sales',
- templateUrl: './sales.component.html',
- styleUrl: './sales.component.scss',
- providers: [
- {
- provide: LOCALE_ID,
- useValue: 'de-DE',
- },
- ],
- })
- export class SalesComponent implements OnInit {
- @ViewChild(MatSort) sort;
- @ViewChild(MatPaginator) paginator: MatPaginator;
-
- protected displayedColumns: string[];
- protected salesSub: Subscription;
- protected sales: Array<SaleJsonld>;
- protected salesSummarySub: Subscription;
- protected saleSummaries: Array<SaleSummaryJsonld>;
-
- protected dataSource;
- protected length: number;
- protected pageEvent: PageEvent;
- protected pageSize: number;
- protected pageIndex: number;
-
- protected saleSummaryMaxTurnover: number;
-
- protected modalOptions: NgbModalOptions = {
- centered: true
- };
-
- constructor(
- private saleService: SaleService,
- private saleSummaryService: SaleSummaryService,
- private translateService: TranslateService,
- private modalService: NgbModal,
- private router: Router,
- ) {
- this.sort = new MatSort();
- this.displayedColumns = ['pos', 'user', 'partner', 'product', 'turnover', 'profit', 'date'];
- this.salesSub = new Subscription();
- this.sales = [];
- this.salesSummarySub = new Subscription();
- this.saleSummaries = [];
-
- this.dataSource = new MatTableDataSource<SaleJsonld>(this.sales);
- this.paginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
- this.length = 0;
- this.pageEvent = new PageEvent();
- this.pageSize = 10;
- this.pageIndex = 0;
-
- this.saleSummaryMaxTurnover = 0;
- }
-
- ngOnInit() {
- this.getSalesData();
- this.getSalesSummaryData();
- }
-
- getSalesData() {
- this.salesSub = this.saleService.salesGetCollection(
- this.pageIndex + 1,
- this.pageSize,
- ).subscribe(
- data => {
- this.sales = data["hydra:member"];
- this.dataSource = new MatTableDataSource<SaleJsonld>(this.sales);
- this.length = Number(data["hydra:totalItems"]);
- this.paginator.length = this.length;
- console.log(this.sales);
- }
- )
- }
-
- getSalesSummaryData() {
- this.salesSummarySub = this.saleSummaryService.saleSummariesGetCollection(
- 1,
- 50
- ).subscribe(
- data => {
- this.saleSummaries = data["hydra:member"];
- console.log(this.saleSummaries);
- if (this.saleSummaries.length > 0) {
- this.saleSummaryMaxTurnover = Number(this.saleSummaries[0].turnover);
- }
- }
- )
- }
-
- calculateWidthPercentage(turnover: number, maxTurnOver: number): number {
- if (turnover && maxTurnOver && maxTurnOver !== 0) {
- return (turnover / maxTurnOver) * 100;
- }
- return 0;
- }
-
- onSortChange(sortState: Sort) {
- // Reset page index to first page
- this.pageIndex = 0;
-
- let order: OrderFilter;
- if (sortState.direction === "") {
- order = OrderFilter.Undefined;
- } else {
- order = sortState.direction;
- }
-
- // this.nameOrderAsc = OrderFilter.Undefined;
- // this.cityOrderAsc = OrderFilter.Undefined;
- // this.websiteOrderAsc = OrderFilter.Undefined;
- // switch (sortState.active) {
- // case "name":
- // this.nameOrderAsc = order;
- // break;
- // case "address":
- // this.cityOrderAsc = order;
- // break;
- // case "website":
- // this.websiteOrderAsc = order;
- // break;
- // }
- this.getSalesData();
- }
-
- handlePageEvent(e: PageEvent) {
- this.pageEvent = e;
- this.length = e.length;
- this.pageIndex = e.pageIndex.valueOf();
- this.pageSize = e.pageSize.valueOf();
- this.getSalesData();
- }
-
- navigateToSaleDetails(element: any) {
- // const product: ProductJsonld = element as ProductJsonld;
- // this.router.navigate(['/products', ApiConverter.extractId(product.id)]);
- }
-
- openModalNewSale() {
- const modalRefContact = this.modalService.open(NewPartnerComponent, this.modalOptions);
- let sale: SaleJsonld = {} as SaleJsonld;
- modalRefContact.componentInstance.partner = sale;
- modalRefContact.componentInstance.submit.subscribe((modalStatus: ModalStatus) => {
- if (modalStatus === ModalStatus.Submitted) {
- modalRefContact.dismiss();
- this.getSalesData();
- }
- });
- }
-
- protected readonly Number = Number;
- }
|