Skip to content
Snippets Groups Projects
logbook-operation-detail.component.ts 4.89 KiB
Newer Older
/*
 * Copyright French Prime minister Office/SGMAP/DINSIC/Vitam Program (2019-2020)
 * and the signatories of the "VITAM - Accord du Contributeur" agreement.
 *
 * contact@programmevitam.fr
 *
 * This software is a computer program whose purpose is to implement
 * implement a digital archiving front-office system for the secure and
 * efficient high volumetry VITAM solution.
 *
 * This software is governed by the CeCILL-C license under French law and
 * abiding by the rules of distribution of free software.  You can  use,
 * modify and/ or redistribute the software under the terms of the CeCILL-C
 * license as circulated by CEA, CNRS and INRIA at the following URL
 * "http://www.cecill.info".
 *
 * As a counterpart to the access to the source code and  rights to copy,
 * modify and redistribute granted by the license, users are provided only
 * with a limited warranty  and the software's author,  the holder of the
 * economic rights,  and the successive licensors  have only  limited
 * liability.
 *
 * In this respect, the user's attention is drawn to the risks associated
 * with loading,  using,  modifying and/or developing or reproducing the
 * software by the user in light of its specific status of free software,
 * that may mean  that it is complicated to manipulate,  and  that  also
 * therefore means  that it is reserved for developers  and  experienced
 * professionals having in-depth computer knowledge. Users are therefore
 * encouraged to load and test the software's suitability as regards their
 * requirements in conditions enabling the security of their systems and/or
 * data to be ensured and,  more generally, to use and operate it in the
 * same conditions as regards security.
 *
 * The fact that you are presently reading this means that you have had
 * knowledge of the CeCILL-C license and that you accept its terms.
 */
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AuthService, Event, fadeInOutAnimation, LogbookService } from 'ui-frontend-common';
import {LogbookDownloadService} from '../logbook-download.service';
  selector: 'app-logbook-operation-detail',
  templateUrl: './logbook-operation-detail.component.html',
  styleUrls: ['./logbook-operation-detail.component.scss'],
  animations: [
    fadeInOutAnimation
export class LogbookOperationDetailComponent implements OnInit, OnChanges {

  @Input() eventId: string;

  @Input() tenantIdentifier: number;
  @Input() isPopup: boolean;

  @Output() closePanel = new EventEmitter();

  event: Event;
  loading: boolean;
  reportFileName: string;
  hideDownload: boolean;
  canDownload: boolean;
  couldDownload: boolean;
  // tslint:disable-next-line: max-line-length
  constructor(private logbookService: LogbookService, private authService: AuthService, private route: ActivatedRoute, private logbookDownloadService: LogbookDownloadService) {
  }

  ngOnInit() {
  }

  ngOnChanges(changes: SimpleChanges) {
    if (changes.eventId || changes.tenantIdentifier) {
      this.refreshEvents();
    }
  }

  openPopup() {
    window.open('/logbook-operation/tenant/' + this.tenantIdentifier + '/event/' + this.event.id,
      'detailPopup', 'width=584, height=713, resizable=no, location=no');
    this.emitClose();
  }

  closePopup() {
    window.close();
  }

  emitClose() {
    this.closePanel.emit();
  }


  downloadReports() {
    this.logbookDownloadService.downloadReport(this.event, this.tenantIdentifier);
  }

  updateCanDownload(event: Event) {
    const canDownloadReports = this.logbookDownloadService.canDownloadReports(event);
    this.hideDownload = canDownloadReports.length < 1;
    if (!this.hideDownload) {
      this.canDownload = canDownloadReports.includes('download');
      this.couldDownload = canDownloadReports.includes('in-progress');
    } else {
      this.canDownload = false;
      this.couldDownload = false;
    }
  }

  private refreshEvents() {
    if (!this.tenantIdentifier || !this.eventId) {
      return;
    }

    const tenant = this.authService.getTenantByAppAndIdentifier(this.route.snapshot.data.appId, this.tenantIdentifier);

    if (!tenant) {
      return;
    }

    const accessContractLogbookIdentifier = tenant.accessContractLogbookIdentifier || '';

    this.loading = true;
    this.logbookService.getOperationById(this.eventId, this.tenantIdentifier, accessContractLogbookIdentifier)
      .subscribe((event) => {
        this.event = event;
        this.loading = false;
        this.updateCanDownload(event);
        if (event.events.length > 0 && event.events[0].data != null) {
          const data = JSON.parse(this.event.events[0].data);
          if (data != null && data.FileName != null) {
            this.reportFileName = data.FileName;
          } else {
            this.reportFileName = null;
          }
        } else {
          this.reportFileName = null;
        }