Browse Source

add default values to test email form

pull/18318/head
masumulu28 3 years ago
parent
commit
8d8383485b
  1. 10
      npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.html
  2. 40
      npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.ts
  3. 3
      npm/ng-packs/packages/setting-management/config/src/lib/enums/policy-names.ts

10
npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.html

@ -2,7 +2,13 @@
<hr class="my-3" /> <hr class="my-3" />
<form *ngIf="form" [formGroup]="form" class="abp-md-form" (ngSubmit)="submit()" [validateOnSubmit]="true"> <form
*ngIf="form"
[formGroup]="form"
class="abp-md-form"
(ngSubmit)="submit()"
[validateOnSubmit]="true"
>
<div class="mb-3 form-group"> <div class="mb-3 form-group">
<label class="form-label" <label class="form-label"
>{{ 'AbpSettingManagement::DefaultFromDisplayName' | abpLocalization >{{ 'AbpSettingManagement::DefaultFromDisplayName' | abpLocalization
@ -79,10 +85,10 @@
{{ 'AbpSettingManagement::Save' | abpLocalization }} {{ 'AbpSettingManagement::Save' | abpLocalization }}
</button> </button>
<button <button
*abpPermission="emailingPolicy"
type="button" type="button"
(click)="openSendEmailModal()" (click)="openSendEmailModal()"
class="btn btn-primary mx-2" class="btn btn-primary mx-2"
*abpPermission="emailingPolicy"
> >
<i class="fa f-send" aria-hidden="true"></i> <i class="fa f-send" aria-hidden="true"></i>
{{ 'AbpSettingManagement::SendTestEmail' | abpLocalization }} {{ 'AbpSettingManagement::SendTestEmail' | abpLocalization }}

40
npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.ts

@ -1,11 +1,15 @@
import { NgbModalOptions } from '@ng-bootstrap/ng-bootstrap'; import { NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';
import { collapse, ToasterService } from '@abp/ng.theme.shared'; import { collapse, ToasterService } from '@abp/ng.theme.shared';
import { Component, OnInit } from '@angular/core'; import { Component, inject, OnInit } from '@angular/core';
import { toSignal } from '@angular/core/rxjs-interop';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { finalize } from 'rxjs/operators'; import { finalize } from 'rxjs/operators';
import { SettingManagementPolicyNames } from '../../enums/policy-names'; import { SettingManagementPolicyNames } from '../../enums/policy-names';
import { EmailSettingsService } from '@abp/ng.setting-management/proxy'; import { EmailSettingsService } from '@abp/ng.setting-management/proxy';
import { EmailSettingsDto } from '../../proxy/models'; import { EmailSettingsDto } from '../../proxy/models';
import { ConfigStateService, LocalizationService } from '@abp/ng.core';
const { required, email } = Validators;
@Component({ @Component({
selector: 'abp-email-setting-group', selector: 'abp-email-setting-group',
@ -13,12 +17,18 @@ import { EmailSettingsDto } from '../../proxy/models';
animations: [collapse], animations: [collapse],
}) })
export class EmailSettingGroupComponent implements OnInit { export class EmailSettingGroupComponent implements OnInit {
protected readonly localizationService = inject(LocalizationService);
protected readonly configStateSevice = inject(ConfigStateService);
protected readonly currentUserEmail = toSignal(
this.configStateSevice.getDeep$(['currentUser', 'email']),
);
form!: UntypedFormGroup; form!: UntypedFormGroup;
emailTestForm: UntypedFormGroup; emailTestForm: UntypedFormGroup;
saving = false; saving = false;
emailingPolicy = SettingManagementPolicyNames.Emailing; emailingPolicy = SettingManagementPolicyNames.Emailing;
isEmailTestModalOpen = false; isEmailTestModalOpen = false;
modalSize:NgbModalOptions= { size:"lg"} modalSize: NgbModalOptions = { size: 'lg' };
constructor( constructor(
private emailSettingsService: EmailSettingsService, private emailSettingsService: EmailSettingsService,
@ -62,30 +72,36 @@ export class EmailSettingGroupComponent implements OnInit {
this.getData(); this.getData();
}); });
} }
openSendEmailModal() { openSendEmailModal() {
this.buildEmailTestForm(); this.buildEmailTestForm();
this.isEmailTestModalOpen = true; this.isEmailTestModalOpen = true;
} }
buildEmailTestForm() { buildEmailTestForm() {
const { defaultFromAddress } = this.form.value || {};
const defaultSubject = this.localizationService.instant(
'AbpSettingManagement::TestEmailSubject',
...[Math.floor(Math.random() * 9999).toString()],
);
const defaultBody = this.localizationService.instant('AbpSettingManagement::TestEmailBody');
this.emailTestForm = this.fb.group({ this.emailTestForm = this.fb.group({
senderEmailAddress: ['', [Validators.required, Validators.email]], senderEmailAddress: [defaultFromAddress || '', [required, email]],
targetEmailAddress: ['', [Validators.required, Validators.email]], targetEmailAddress: [this.currentUserEmail(), [required, email]],
subject: ['', [Validators.required]], subject: [defaultSubject, [required]],
body: [''], body: [defaultBody],
}); });
} }
emailTestFormSubmit() { emailTestFormSubmit() {
if (this.emailTestForm.invalid) {
if(this.emailTestForm.invalid){
return; return;
} }
this.emailSettingsService.sendTestEmail(this.emailTestForm.value).subscribe(res => {
this.emailSettingsService.sendTestEmail(this.emailTestForm.value).subscribe(res => {
this.toasterService.success('AbpSettingManagement::SuccessfullySent'); this.toasterService.success('AbpSettingManagement::SuccessfullySent');
this.isEmailTestModalOpen = false; this.isEmailTestModalOpen = false;
}) });
} }
} }

3
npm/ng-packs/packages/setting-management/config/src/lib/enums/policy-names.ts

@ -1,4 +1,3 @@
export const enum SettingManagementPolicyNames { export const enum SettingManagementPolicyNames {
Emailing = 'SettingManagement.Emailing', Emailing = 'SettingManagement.Emailing',
} }

Loading…
Cancel
Save