@@ -3,14 +3,16 @@ import { inject, Injectable } from '@angular/core'
33import { catchError , map , type Observable , ReplaySubject , Subject , takeUntil , tap } from 'rxjs'
44import { UserService } from '@seed/api'
55import { ErrorService } from '@seed/services'
6- import type { CreateEmailTemplateResponse , EmailTemplate , ListEmailTemplatesResponse } from './postoffice.types'
6+ import { SnackBarService } from 'app/core/snack-bar/snack-bar.service'
7+ import type { CreateEmailTemplateResponse , EmailTemplate , ListEmailTemplatesResponse , SendEmailResponse } from './postoffice.types'
78
89@Injectable ( { providedIn : 'root' } )
910export class PostOfficeService {
1011 private _httpClient = inject ( HttpClient )
1112 private _userService = inject ( UserService )
1213 private _errorService = inject ( ErrorService )
1314 private _emailTemplates = new ReplaySubject < EmailTemplate [ ] > ( )
15+ private _snackBar = inject ( SnackBarService )
1416 private readonly _unsubscribeAll$ = new Subject < void > ( )
1517 orgId : number
1618 emailTemplates$ = this . _emailTemplates . asObservable ( )
@@ -66,4 +68,26 @@ export class PostOfficeService {
6668 } ) ,
6769 )
6870 }
71+
72+ sendEmail ( orgId : number , stateIds : number [ ] , template_id : number , inventory_type : string ) : Observable < SendEmailResponse > {
73+ const url = `/api/v3/postoffice_email/?organization_id=${ orgId } `
74+ const data = {
75+ from_email : 'blankl@example.com' , // Dummy email. The backend will assign the appropriate email.
76+ template_id,
77+ inventory_id : stateIds ,
78+ inventory_type,
79+ }
80+ return this . _httpClient . post < SendEmailResponse > ( url , data ) . pipe (
81+ tap ( ( { status } ) => {
82+ if ( status === 'success' ) {
83+ this . _snackBar . success ( 'Successfully sent email' )
84+ } else {
85+ this . _snackBar . alert ( 'Error sending email' )
86+ }
87+ } ) ,
88+ catchError ( ( error : HttpErrorResponse ) => {
89+ return this . _errorService . handleError ( error , 'Error sending email' )
90+ } ) ,
91+ )
92+ }
6993}
0 commit comments