1 import { Component } from '@angular/core'
2 import { FormGroup, FormControl } from '@angular/forms'
3 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
4 import { first } from 'rxjs'
7 PaperlessConsumptionTemplate,
8 } from 'src/app/data/paperless-consumption-template'
9 import { PaperlessCorrespondent } from 'src/app/data/paperless-correspondent'
10 import { PaperlessDocumentType } from 'src/app/data/paperless-document-type'
11 import { PaperlessStoragePath } from 'src/app/data/paperless-storage-path'
12 import { ConsumptionTemplateService } from 'src/app/services/rest/consumption-template.service'
13 import { CorrespondentService } from 'src/app/services/rest/correspondent.service'
14 import { DocumentTypeService } from 'src/app/services/rest/document-type.service'
15 import { StoragePathService } from 'src/app/services/rest/storage-path.service'
16 import { UserService } from 'src/app/services/rest/user.service'
17 import { SettingsService } from 'src/app/services/settings.service'
18 import { EditDialogComponent } from '../edit-dialog.component'
19 import { MailRuleService } from 'src/app/services/rest/mail-rule.service'
20 import { PaperlessMailRule } from 'src/app/data/paperless-mail-rule'
22 export const DOCUMENT_SOURCE_OPTIONS = [
24 id: DocumentSource.ConsumeFolder,
25 name: $localize`Consume Folder`,
28 id: DocumentSource.ApiUpload,
29 name: $localize`API Upload`,
32 id: DocumentSource.MailFetch,
33 name: $localize`Mail Fetch`,
38 selector: 'pngx-consumption-template-edit-dialog',
39 templateUrl: './consumption-template-edit-dialog.component.html',
40 styleUrls: ['./consumption-template-edit-dialog.component.scss'],
42 export class ConsumptionTemplateEditDialogComponent extends EditDialogComponent<PaperlessConsumptionTemplate> {
43 templates: PaperlessConsumptionTemplate[]
44 correspondents: PaperlessCorrespondent[]
45 documentTypes: PaperlessDocumentType[]
46 storagePaths: PaperlessStoragePath[]
47 mailRules: PaperlessMailRule[]
50 service: ConsumptionTemplateService,
51 activeModal: NgbActiveModal,
52 correspondentService: CorrespondentService,
53 documentTypeService: DocumentTypeService,
54 storagePathService: StoragePathService,
55 mailRuleService: MailRuleService,
56 userService: UserService,
57 settingsService: SettingsService
59 super(service, activeModal, userService, settingsService)
64 .subscribe((result) => (this.correspondents = result.results))
69 .subscribe((result) => (this.documentTypes = result.results))
74 .subscribe((result) => (this.storagePaths = result.results))
79 .subscribe((result) => (this.mailRules = result.results))
83 return $localize`Create new consumption template`
87 return $localize`Edit consumption template`
90 getForm(): FormGroup {
91 return new FormGroup({
92 name: new FormControl(null),
93 account: new FormControl(null),
94 filter_filename: new FormControl(null),
95 filter_path: new FormControl(null),
96 filter_mailrule: new FormControl(null),
97 order: new FormControl(null),
98 sources: new FormControl([]),
99 assign_title: new FormControl(null),
100 assign_tags: new FormControl([]),
101 assign_owner: new FormControl(null),
102 assign_document_type: new FormControl(null),
103 assign_correspondent: new FormControl(null),
104 assign_storage_path: new FormControl(null),
105 assign_view_users: new FormControl([]),
106 assign_view_groups: new FormControl([]),
107 assign_change_users: new FormControl([]),
108 assign_change_groups: new FormControl([]),
112 get sourceOptions() {
113 return DOCUMENT_SOURCE_OPTIONS