\n'},crnd:function(t,e){function n(t){return Promise.resolve().then(function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e})}n.keys=function(){return[]},n.resolve=n,t.exports=n,n.id="crnd"},fMGI:function(t,e){t.exports="\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuY3NzIn0= */"},"gO/L":function(t,e){t.exports="\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb3ZpZGVyL3Byb3ZpZGVyLmNvbXBvbmVudC5jc3MifQ== */"},kt9D:function(t,e){t.exports='
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n\n
\n
\n
\n \n
\n
Are you sure you want to delete the text template?
\n
\n \n
\n
\n
\n'},lsP6:function(t,e){t.exports="
\n main works!\n
\n"},n7sk:function(t,e){t.exports="\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5jc3MifQ== */"},"nH/3":function(t,e){t.exports='
\n\n
\n \n\n\n\n
\n'},uZxZ:function(t,e){t.exports="\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Bob25lYm9vay9waG9uZWJvb2suY29tcG9uZW50LmNzcyJ9 */"},zUnb:function(t,e,n){"use strict";n.r(e);var i=n("CcnG"),o=n("ToYH"),a=n("mrSG"),r=n("ZYjt"),s=n("t/Na"),l=n("gIcY"),c=n("ZYCi"),p=function(){function t(){}return t.prototype.ngOnInit=function(){},t=a.b([Object(i.n)({selector:"app-main",template:n("lsP6"),styles:[n("Aqmg")]}),a.d("design:paramtypes",[])],t)}(),d=function(){return function(){}}(),u=function(){function t(){this.notifications=[],this.currentCount=0}return t.prototype.addNotification=function(t,e){var n=this,i=new d;i.id=this.currentCount,this.currentCount++,i.resultType=t,i.text=e,this.notifications.push(i),setTimeout(function(){return n.closeNotification(i)},3e3)},t.prototype.closeNotification=function(t){for(var e=0;e
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n\"","module.exports = \"
\\n
\\n \\n \\n \\n
\\n
\\n\\n\\n
\\n\\n
\\n
\\n
\\n \\n \\n From | \\n To | \\n Currrent Status | \\n Time Sent | \\n
\\n \\n \\n \\n \\n {{ job.fromNum }} | \\n {{ job.toNum }} | \\n {{ job.currentStatus }} | \\n {{ job.timeSent | date:'dd-MMM-yyyy'}} | \\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n
\\n
\\n
\\n \\n
\\n
Are you sure you want to delete the campaign?
\\n
\\n \\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
Are you sure you want to delete the phonebook?
\\n
\\n \\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NhbXBhaWduL2NhbXBhaWduLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"
\\n{{ notification.text }}\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21haW4vbWFpbi5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n Name | \\n Create Date | \\n
\\n \\n \\n \\n \\n {{ textTemplate.name }} | \\n {{ textTemplate.createDate | date:'dd-MMM-yyyy'}} | \\n
\\n \\n No text template created yet. Create templates by clicking here
\\n \\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"
\\n
\\n
\\n
\\n
Settings for {{ currUser.username }}
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n Name | \\n Phonebook Size | \\n Create Date | \\n
\\n \\n \\n \\n \\n {{ phonebook.name }} | \\n {{ phonebook.size }} | \\n {{ phonebook.createDate | date:'dd-MMM-yyyy'}} | \\n
\\n \\n No phonebooks created yet. Create phonebooks by clicking here
\\n \\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NhbXBhaWduLW5ldy9jYW1wYWlnbi1uZXcuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \".campaign-details:-moz-read-only {\\n background-color: white;\\n}\\n.campaign-details:read-only {\\n background-color: white;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FtcGFpZ24tdmlldy9jYW1wYWlnbi12aWV3LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSx1QkFBdUI7QUFDM0I7QUFGQTtJQUNJLHVCQUF1QjtBQUMzQiIsImZpbGUiOiJzcmMvYXBwL2NhbXBhaWduLXZpZXcvY2FtcGFpZ24tdmlldy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNhbXBhaWduLWRldGFpbHM6cmVhZC1vbmx5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiJdfQ== */\"","module.exports = \"
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n Name | \\n Status | \\n Target Size | \\n Create Date | \\n
\\n \\n \\n \\n \\n {{ campaign.name }} | \\n {{ campaign.currentStatus }} | \\n {{ campaign.size }} | \\n {{ campaign.createDate | date:'dd-MMM-yyyy'}} | \\n
\\n \\n No campaigns created yet. Create compaigns by clicking here
\\n \\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\"","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"crnd\";","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb3ZpZGVyL3Byb3ZpZGVyLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
Are you sure you want to delete the text template?
\\n
\\n \\n
\\n
\\n
\\n\"","module.exports = \"
\\n main works!\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"
\\n\\n
\\n \\n\\n\\n\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Bob25lYm9vay9waG9uZWJvb2suY29tcG9uZW50LmNzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-main',\n templateUrl: './main.component.html',\n styleUrls: ['./main.component.css']\n})\nexport class MainComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nexport class Notification {\n id: number;\n resultType: string; // enum success or failure or info\n text: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n notifications: Notification[] = [];\n currentCount = 0;\n\n addNotification(resultType, text) {\n const newNotification = new Notification();\n newNotification.id = this.currentCount;\n this.currentCount++;\n newNotification.resultType = resultType;\n newNotification.text = text;\n\n this.notifications.push(newNotification);\n setTimeout(() => this.closeNotification(newNotification), 3000);\n }\n\n closeNotification(notify: Notification) {\n for (let i = 0; i < this.notifications.length; i++) {\n if (this.notifications[i].id === notify.id) {\n this.notifications.splice(i, 1);\n break;\n }\n }\n }\n\n constructor() {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { NotificationService } from './notification.service';\nimport { Observable, of } from 'rxjs';\n\nexport class User {\n username: string;\n password: string;\n name: string;\n email: string;\n secretCode: string;\n}\n\nexport class UserNotification {\n resultType: string;\n text: string;\n payload: User;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n currUser = new User();\n loggedin = false;\n loginUrl = 'api/login';\n logoutUrl = 'api/logout';\n registerUrl = 'api/register';\n myselfUrl = 'api/myself';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n login(username: string, password: string) {\n this.currUser.username = username;\n this.currUser.password = password;\n this.http.post
(this.loginUrl, this.currUser, this.httpOptions).subscribe(usermessage => {\n if (usermessage.payload !== null) {\n this.loggedin = true;\n\n // update user\n this.currUser.username = usermessage.payload.username;\n this.currUser.email = usermessage.payload.email;\n this.currUser.name = usermessage.payload.name;\n\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n this.router.navigate(['/campaign']);\n } else {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in logging in');\n });\n this.currUser.password = '';\n }\n\n register(username: string, password: string, email: string, name: string, secretCode: string) {\n this.currUser.username = username;\n this.currUser.password = password;\n this.currUser.email = email;\n this.currUser.name = name;\n this.currUser.secretCode = secretCode;\n\n this.http.post(this.registerUrl, this.currUser, this.httpOptions).subscribe(usermessage => {\n if (usermessage.payload !== null) {\n this.loggedin = true;\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n this.router.navigate(['/campaign']);\n\n // update user\n this.currUser.username = usermessage.payload.username;\n this.currUser.email = usermessage.payload.email;\n this.currUser.name = usermessage.payload.name;\n } else {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n }\n });\n\n this.currUser.secretCode = '';\n }\n\n logout() {\n this.http.post(this.logoutUrl, '', this.httpOptions).subscribe(usermessage => {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n this.loggedin = false;\n this.currUser = new User();\n this.router.navigate(['/']);\n });\n }\n\n getUser(): User {\n this.http.get(this.myselfUrl, this.httpOptions).subscribe(thisUser => {\n this.currUser = thisUser;\n if (this.currUser.username !== '') {\n this.loggedin = true;\n } else {\n this.router.navigate(['/']);\n }\n // separate one to redirect main to campaign dashboard\n if (this.router.url === '/' || this.router.url === '') {\n this.router.navigate(['/campaign']);\n }\n },\n err => {\n this.router.navigate(['/']);\n });\n return this.currUser;\n }\n\n getUserObs(): Observable {\n return this.http.get(this.myselfUrl, this.httpOptions);\n }\n\n updateUser(user: User) {\n this.currUser = user;\n this.http.put(this.myselfUrl, this.currUser, this.httpOptions).subscribe(usermessage => {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in updating profile');\n });\n this.currUser.password = '';\n }\n\n constructor(private http: HttpClient, private router: Router, private notificationService: NotificationService) { }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '../auth.service';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css']\n})\nexport class LoginComponent implements OnInit {\n\n username: string;\n password: string;\n\n login() {\n this.authService.login(this.username, this.password);\n }\n\n routeRegister() {\n this.router.navigate(['/register']);\n }\n constructor(private authService: AuthService, private router: Router) { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '../auth.service';\n\n@Component({\n selector: 'app-register',\n templateUrl: './register.component.html',\n styleUrls: ['./register.component.css']\n})\nexport class RegisterComponent implements OnInit {\n username = '';\n password = '';\n email = '';\n name = '';\n secretCode = '';\n\n register() {\n this.authService.register(this.username, this.password, this.email, this.name, this.secretCode);\n }\n constructor(private authService: AuthService) { }\n\n ngOnInit() {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { NotificationService } from './notification.service';\n\nexport class Campaign {\n id: number;\n name: string;\n fromNumber: string;\n size: number;\n currentStatus: string;\n createDate: Date;\n phonebookId: number;\n textTemplateId: number;\n webTemplateId: number;\n providerTag: string;\n jobs: Job[];\n}\n\nexport class Job {\n id: number;\n currentStatus: string;\n timeSent: Date;\n fromNum: string;\n toNum: string;\n}\n\nexport class CampaignNotification {\n resultType: string;\n text: string;\n payload: Campaign;\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class CampaignService {\n\n campaigns: Campaign[] = [];\n\n campaignUrl = '/api/campaign';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n getCampaigns() {\n this.http.get(this.campaignUrl).subscribe(campaigns => {\n if (campaigns === null) {\n this.campaigns = [];\n } else {\n this.campaigns = campaigns;\n }\n });\n }\n\n getCampaignObs(id: number): Observable {\n return this.http.get(this.campaignUrl + '/' + id.toString());\n }\n\n addCampaign(newCampaign: Campaign) {\n this.http.post(this.campaignUrl, newCampaign, this.httpOptions).subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n this.campaigns.push(campaignNotification.payload);\n if (campaignNotification.payload !== null) {\n this.router.navigate(['/campaign']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in creating template');\n });\n }\n\n addCampaignRun(newCampaign: Campaign) {\n this.http.post(this.campaignUrl, newCampaign, this.httpOptions).subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n this.campaigns.push(campaignNotification.payload);\n if (campaignNotification.payload !== null) {\n this.startCampaign(campaignNotification.payload).subscribe();\n this.router.navigate(['/campaign']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in creating template');\n });\n }\n\n deleteCampaign(campaign: Campaign) {\n this.http.delete(this.campaignUrl + '/' + campaign.id.toString(), this.httpOptions)\n .subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n this.router.navigate(['/campaign']);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in deleting campaign');\n });\n }\n\n startCampaign(campaign: Campaign) {\n return this.http.get(this.campaignUrl + '/' + campaign.id.toString() + '/' + 'start');\n }\n\n pauseCampaign(campaign: Campaign) {\n return this.http.get(this.campaignUrl + '/' + campaign.id.toString() + '/' + 'pause');\n }\n\n constructor(private http: HttpClient, private router: Router, private notificationService: NotificationService) {\n this.campaigns = [];\n this.getCampaigns();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { CampaignService } from '../campaign.service';\n\n@Component({\n selector: 'app-campaign',\n templateUrl: './campaign.component.html',\n styleUrls: ['./campaign.component.css']\n})\nexport class CampaignComponent implements OnInit {\n\n constructor(private campaignService: CampaignService, private router: Router) { }\n\n ngOnInit() {\n this.campaignService.getCampaigns();\n const intervalId = setInterval(() => {\n this.campaignService.getCampaigns();\n if (!this.router.url.includes('/campaign')) {\n clearInterval(intervalId);\n }\n }, 2000);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { NotificationService } from './notification.service';\nimport { Observable, of } from 'rxjs';\n\nexport class TwilioProvider {\n accountSID: string;\n authToken: string;\n}\n\nexport class TwilioProviderNotification {\n resultType: string;\n text: string;\n payload: TwilioProvider;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProviderService {\n\n twilioProviderSettings: TwilioProvider = new TwilioProvider();\n twilioUrl = '/api/provider/twilio';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n providerEnums = [\n {name: 'Twilio', tag: 'twilio'},\n ];\n\n getTwilioProvider() {\n this.http.get(this.twilioUrl, this.httpOptions).subscribe(thisTwilio => {\n this.twilioProviderSettings = thisTwilio;\n });\n }\n\n getTwilioProviderObs(): Observable {\n return this.http.get(this.twilioUrl, this.httpOptions);\n }\n\n updateTwilioProvider(tProvider: TwilioProvider) {\n this.http.post(this.twilioUrl, tProvider, this.httpOptions).subscribe(usermessage => {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n this.twilioProviderSettings = usermessage.payload;\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in updating Twilio provider');\n });\n }\n\n constructor(private http: HttpClient, private notificationService: NotificationService) {\n this.getTwilioProvider();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { NotificationService } from './notification.service';\n\nexport class Phonebook {\n id: number;\n name: string;\n size: number;\n createDate: Date;\n records: PhoneRecord[];\n}\n\nexport class PhoneRecord {\n id: number;\n firstName: string;\n lastName: string;\n alias: string;\n phoneNumber: string;\n}\n\nexport class PhonebookNotification {\n resultType: string;\n text: string;\n payload: Phonebook;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PhonebookService {\n\n phonebooks: Phonebook[] = [];\n\n phonebookUrl = '/api/phonebook';\n phonebookImportUrl = '/api/import-phonebook';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n getPhonebooks() {\n this.http.get(this.phonebookUrl).subscribe(phonebooks => {\n if (phonebooks === null) {\n this.phonebooks = [];\n } else {\n this.phonebooks = phonebooks;\n }\n });\n }\n\n getPhonebookObs(id: number): Observable {\n return this.http.get(this.phonebookUrl + '/' + id.toString());\n }\n\n addPhonebook(phonebook: Phonebook) {\n this.http.post(this.phonebookUrl, phonebook, this.httpOptions).subscribe(pbNotification => {\n this.notificationService.addNotification(pbNotification.resultType, pbNotification.text);\n this.phonebooks.push(pbNotification.payload);\n if (pbNotification.payload !== null) {\n this.router.navigate(['/phonebook']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in creating phonebook');\n });\n }\n\n editPhonebook(phonebook: Phonebook) {\n this.http.put(this.phonebookUrl + '/' + phonebook.id.toString(), phonebook, this.httpOptions)\n .subscribe(pbNotification => {\n this.notificationService.addNotification(pbNotification.resultType, pbNotification.text);\n if (pbNotification.payload !== null) {\n this.router.navigate(['/phonebook']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in editing phonebook');\n });\n }\n\n deletePhonebook(phonebook: Phonebook) {\n this.http.delete(this.phonebookUrl + '/' + phonebook.id.toString(), this.httpOptions)\n .subscribe(pbNotification => {\n this.notificationService.addNotification(pbNotification.resultType, pbNotification.text);\n this.router.navigate(['/phonebook']);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in deleting phonebook');\n });\n }\n\n uploadPhonebook(file: File): Observable {\n const formData = new FormData();\n formData.append('phonebookFile', file);\n return this.http.post(this.phonebookImportUrl, formData);\n }\n\n constructor(private http: HttpClient, private router: Router, private notificationService: NotificationService) {\n this.getPhonebooks();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { NotificationService } from './notification.service';\n\nexport class TextTemplate {\n id: number;\n name: string;\n templateStr: string;\n createDate: Date;\n}\n\nexport class TextTemplateNotification {\n resultType: string;\n text: string;\n payload: TextTemplate;\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class TextTemplateService {\n\n textTemplates: TextTemplate[] = [];\n\n templateUrl = '/api/text-template';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n getTextTemplates() {\n this.http.get(this.templateUrl).subscribe(templates => {\n if (templates === null) {\n this.textTemplates = [];\n } else {\n this.textTemplates = templates;\n }\n });\n }\n\n getTextTemplateObs(id: number) {\n return this.http.get(this.templateUrl + '/' + id.toString());\n }\n\n addTextTemplate(newTextTemplate: TextTemplate) {\n this.http.post(this.templateUrl, newTextTemplate, this.httpOptions).subscribe(templateNotification => {\n this.notificationService.addNotification(templateNotification.resultType, templateNotification.text);\n this.textTemplates.push(templateNotification.payload);\n if (templateNotification.payload !== null) {\n this.router.navigate(['/text-template']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in creating template');\n });\n }\n\n deleteTextTemplate(textTemplate: TextTemplate) {\n this.http.delete(this.templateUrl + '/' + textTemplate.id.toString(), this.httpOptions)\n .subscribe(templateNotification => {\n this.notificationService.addNotification(templateNotification.resultType, templateNotification.text);\n this.router.navigate(['/text-template']);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in deleting text template');\n });\n }\n\n editTextTemplate(textTemplate: TextTemplate) {\n this.http.put(this.templateUrl + '/' + textTemplate.id.toString(), textTemplate, this.httpOptions)\n .subscribe(templateNotification => {\n this.notificationService.addNotification(templateNotification.resultType, templateNotification.text);\n if (templateNotification.payload !== null) {\n this.router.navigate(['/text-template']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in editing text template');\n });\n }\n\n constructor(private http: HttpClient, private router: Router, private notificationService: NotificationService) {\n this.getTextTemplates();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CampaignService, Campaign } from '../campaign.service';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { ProviderService } from '../provider.service';\nimport { PhonebookService } from '../phonebook.service';\nimport { TextTemplateService } from '../text-template.service';\n\n@Component({\n selector: 'app-campaign-new',\n templateUrl: './campaign-new.component.html',\n styleUrls: ['./campaign-new.component.css']\n})\nexport class CampaignNewComponent implements OnInit {\n\n constructor(\n private campaignService: CampaignService,\n private router: Router,\n private providerService: ProviderService,\n private phonebookService: PhonebookService,\n private textTemplateService: TextTemplateService) { }\n\n newCampaign: Campaign = new Campaign();\n\n submitNewCampaign() {\n this.campaignService.addCampaign(this.newCampaign);\n }\n\n submitNewCampaignRun() {\n this.campaignService.addCampaignRun(this.newCampaign);\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CampaignService, Campaign, Job, CampaignNotification } from '../campaign.service';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { NotificationService } from '../notification.service';\n\n@Component({\n selector: 'app-campaign-view',\n templateUrl: './campaign-view.component.html',\n styleUrls: ['./campaign-view.component.css']\n})\nexport class CampaignViewComponent implements OnInit {\n\n currCampaign: Campaign = new Campaign();\n\n id = 0;\n\n constructor(\n private campaignService: CampaignService,\n private router: Router,\n private route: ActivatedRoute,\n private notificationService: NotificationService\n ) { }\n\n startCampaign() {\n this.campaignService.startCampaign(this.currCampaign).subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n this.campaignService.getCampaignObs(this.id).subscribe(campaign => {\n this.currCampaign = campaign;\n });\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in starting campaign');\n });\n }\n\n pauseCampaign() {\n this.campaignService.pauseCampaign(this.currCampaign).subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in pausing campaign');\n });\n }\n\n deleteCampaign() {\n this.campaignService.deleteCampaign(this.currCampaign);\n }\n\n updateThisCampaign() {\n this.campaignService.getCampaignObs(this.id).subscribe(campaign => {\n this.currCampaign = campaign;\n });\n }\n\n ngOnInit() {\n const idParam = 'id';\n this.route.params.subscribe( params => {\n this.id = parseInt(params[idParam], 10);\n });\n this.updateThisCampaign();\n const intervalId = setInterval(() => {\n this.updateThisCampaign();\n if (!this.router.url.includes('/campaign')) {\n clearInterval(intervalId);\n }\n }, 2000);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PhonebookService } from '../phonebook.service';\n\n@Component({\n selector: 'app-phonebook',\n templateUrl: './phonebook.component.html',\n styleUrls: ['./phonebook.component.css']\n})\nexport class PhonebookComponent implements OnInit {\n\n constructor(private phonebookService: PhonebookService) { }\n\n ngOnInit() {\n this.phonebookService.getPhonebooks();\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PhonebookService, Phonebook, PhoneRecord } from '../phonebook.service';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\n\n@Component({\n selector: 'app-phonebook-new',\n templateUrl: './phonebook-new.component.html',\n styleUrls: ['./phonebook-new.component.css']\n})\nexport class PhonebookNewComponent implements OnInit {\n\n constructor(private phonebookService: PhonebookService, private router: Router, private route: ActivatedRoute) { }\n\n id = 0;\n\n newPhonebook: Phonebook = new Phonebook();\n newPhoneRecords: PhoneRecord[] = [];\n additionalRecord: PhoneRecord = new PhoneRecord();\n\n insertAdditionalRecord() {\n this.newPhoneRecords = this.newPhoneRecords.concat(this.additionalRecord);\n this.additionalRecord = new PhoneRecord();\n this.additionalRecord.phoneNumber = '';\n }\n\n importPhoneRecords(files: FileList) {\n this.phonebookService.uploadPhonebook(files.item(0)).subscribe(data => {\n this.newPhoneRecords = this.newPhoneRecords.concat(data);\n });\n }\n\n submitNewPhonebook() {\n if (this.router.url === '/phonebook/new') {\n if (this.additionalRecord.phoneNumber !== '') {\n this.insertAdditionalRecord();\n }\n this.newPhonebook.records = this.newPhoneRecords;\n this.phonebookService.addPhonebook(this.newPhonebook);\n } else {\n this.editPhonebook();\n }\n }\n\n deletePhonebook() {\n this.phonebookService.deletePhonebook(this.newPhonebook);\n }\n\n editPhonebook() {\n this.newPhonebook.records = this.newPhoneRecords;\n this.phonebookService.editPhonebook(this.newPhonebook);\n }\n\n ngOnInit() {\n this.additionalRecord = new PhoneRecord();\n this.additionalRecord.phoneNumber = '';\n\n // if page is edit\n if (this.router.url !== '/phonebook/new') {\n const idParam = 'id';\n this.route.params.subscribe( params => {\n this.id = parseInt(params[idParam], 10);\n this.phonebookService.getPhonebookObs(this.id).subscribe(currPb => {\n this.newPhonebook = currPb;\n this.newPhoneRecords = this.newPhonebook.records;\n });\n });\n }\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TextTemplateService } from '../text-template.service';\n\n@Component({\n selector: 'app-text-template',\n templateUrl: './text-template.component.html',\n styleUrls: ['./text-template.component.css']\n})\nexport class TextTemplateComponent implements OnInit {\n\n constructor(private textTemplateService: TextTemplateService) { }\n\n ngOnInit() {\n this.textTemplateService.getTextTemplates();\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TextTemplate, TextTemplateService } from '../text-template.service';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\n\n@Component({\n selector: 'app-text-template-new',\n templateUrl: './text-template-new.component.html',\n styleUrls: ['./text-template-new.component.css']\n})\nexport class TextTemplateNewComponent implements OnInit {\n\n newTextTemplate: TextTemplate = new TextTemplate();\n previewStr: string;\n id = 0;\n\n submitNewTextTemplate() {\n if (this.router.url === '/text-template/new') {\n this.textTemplateService.addTextTemplate(this.newTextTemplate);\n } else {\n this.editTextTemplate();\n }\n }\n\n updatePreview() {\n let tempStr = '';\n tempStr = this.newTextTemplate.templateStr;\n tempStr = tempStr.replace('{firstName}', 'John');\n tempStr = tempStr.replace('{lastName}', 'Smith');\n tempStr = tempStr.replace('{alias}', 'Johnny');\n tempStr = tempStr.replace('{phoneNumber}', '+6598765432');\n\n this.previewStr = tempStr;\n }\n\n deleteTextTemplate() {\n this.textTemplateService.deleteTextTemplate(this.newTextTemplate);\n }\n\n editTextTemplate() {\n this.textTemplateService.editTextTemplate(this.newTextTemplate);\n }\n\n constructor(private textTemplateService: TextTemplateService, private router: Router, private route: ActivatedRoute) { }\n\n ngOnInit() {\n // if page is edit\n if (this.router.url !== '/text-template/new') {\n const idParam = 'id';\n this.route.params.subscribe( params => {\n this.id = parseInt(params[idParam], 10);\n this.textTemplateService.getTextTemplateObs(this.id).subscribe(currTT => {\n this.newTextTemplate = currTT;\n });\n });\n }\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ProviderService, TwilioProvider } from '../provider.service';\n\n\n@Component({\n selector: 'app-provider',\n templateUrl: './provider.component.html',\n styleUrls: ['./provider.component.css']\n})\nexport class ProviderComponent implements OnInit {\n\n currTwilioProvider: TwilioProvider = new TwilioProvider();\n\n submitProviders() {\n this.providerService.updateTwilioProvider(this.currTwilioProvider);\n }\n\n constructor(private providerService: ProviderService) { }\n\n ngOnInit() {\n this.providerService.getTwilioProviderObs().subscribe(currTwilio => {\n this.currTwilioProvider = currTwilio;\n });\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AuthService, User } from '../auth.service';\n\n@Component({\n selector: 'app-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.css']\n})\nexport class ProfileComponent implements OnInit {\n\n constructor(private authService: AuthService) { }\n currUser: User;\n\n updateUser() {\n this.authService.updateUser(this.currUser);\n }\n\n ngOnInit() {\n this.authService.getUserObs().subscribe(user => {\n this.currUser = JSON.parse(JSON.stringify(user));\n });\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { MainComponent } from './main/main.component';\nimport { LoginComponent } from './login/login.component';\nimport { RegisterComponent } from './register/register.component';\nimport { CampaignComponent } from './campaign/campaign.component';\nimport { CampaignNewComponent } from './campaign-new/campaign-new.component';\nimport { CampaignViewComponent } from './campaign-view/campaign-view.component';\nimport { PhonebookComponent } from './phonebook/phonebook.component';\nimport { PhonebookNewComponent } from './phonebook-new/phonebook-new.component';\nimport { TextTemplateComponent } from './text-template/text-template.component';\nimport { TextTemplateNewComponent } from './text-template-new/text-template-new.component';\nimport { ProviderComponent } from './provider/provider.component';\nimport { ProfileComponent } from './profile/profile.component';\n\nconst routes: Routes = [\n { path: '', component: MainComponent },\n { path: 'login', component: LoginComponent },\n { path: 'register', component: RegisterComponent },\n { path: 'profile', component: ProfileComponent },\n { path: 'campaign', component: CampaignComponent },\n { path: 'campaign/new', component: CampaignNewComponent },\n { path: 'campaign/:id/view', component: CampaignViewComponent },\n { path: 'phonebook', component: PhonebookComponent },\n { path: 'phonebook/new', component: PhonebookNewComponent },\n { path: 'phonebook/:id/edit', component: PhonebookNewComponent },\n { path: 'text-template', component: TextTemplateComponent },\n { path: 'text-template/new', component: TextTemplateNewComponent },\n { path: 'text-template/:id/edit', component: TextTemplateNewComponent },\n { path: 'provider', component: ProviderComponent },\n ];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\nimport { RouterModule, Routes, Router } from '@angular/router';\nimport { AuthService } from './auth.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent {\n title = 'tapit-frontend';\n navlinks = [\n {\n link: '/campaign',\n name: 'Campaigns',\n loginOnly: true,\n },\n {\n link: '/phonebook',\n name: 'Phonebook',\n loginOnly: true,\n },\n {\n link: '/text-template',\n name: 'Text Templates',\n loginOnly: true,\n },\n {\n link: '/web-template',\n name: 'Web Templates',\n loginOnly: true,\n },\n ];\n constructor( private router: Router, private authService: AuthService) {\n authService.getUser();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { NotificationService } from '../notification.service';\n\n@Component({\n selector: 'app-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.css']\n})\nexport class NotificationComponent implements OnInit {\n\n constructor(private notificationService: NotificationService) { }\n\n ngOnInit() {\n }\n\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule } from '@angular/forms';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { MainComponent } from './main/main.component';\nimport { CampaignComponent } from './campaign/campaign.component';\nimport { CampaignNewComponent } from './campaign-new/campaign-new.component';\nimport { NotificationComponent } from './notification/notification.component';\nimport { PhonebookComponent } from './phonebook/phonebook.component';\nimport { PhonebookNewComponent } from './phonebook-new/phonebook-new.component';\nimport { TextTemplateComponent } from './text-template/text-template.component';\nimport { TextTemplateNewComponent } from './text-template-new/text-template-new.component';\nimport { LoginComponent } from './login/login.component';\nimport { RegisterComponent } from './register/register.component';\nimport { ProviderComponent } from './provider/provider.component';\nimport { ProfileComponent } from './profile/profile.component';\nimport { CampaignViewComponent } from './campaign-view/campaign-view.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n MainComponent,\n CampaignComponent,\n CampaignNewComponent,\n NotificationComponent,\n PhonebookComponent,\n PhonebookNewComponent,\n TextTemplateComponent,\n TextTemplateNewComponent,\n LoginComponent,\n RegisterComponent,\n ProviderComponent,\n ProfileComponent,\n CampaignViewComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n FormsModule,\n HttpClientModule,\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///./src/app/phonebook-new/phonebook-new.component.css","webpack:///./src/app/register/register.component.css","webpack:///./src/app/text-template-new/text-template-new.component.css","webpack:///./src/app/text-template/text-template.component.css","webpack:///./src/app/login/login.component.html","webpack:///./src/app/campaign-view/campaign-view.component.html","webpack:///./src/app/phonebook-new/phonebook-new.component.html","webpack:///./src/app/campaign-new/campaign-new.component.html","webpack:///./src/app/campaign/campaign.component.css","webpack:///./src/app/notification/notification.component.html","webpack:///./src/app/app.component.css","webpack:///./src/app/main/main.component.css","webpack:///./src/app/text-template/text-template.component.html","webpack:///./src/app/notification/notification.component.css","webpack:///./src/app/profile/profile.component.html","webpack:///./src/app/phonebook/phonebook.component.html","webpack:///./src/app/campaign-new/campaign-new.component.css","webpack:///./src/app/campaign-view/campaign-view.component.css","webpack:///./src/app/campaign/campaign.component.html","webpack:///./src/app/provider/provider.component.html","webpack:///./src/app/register/register.component.html","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/profile/profile.component.css","webpack:///./src/app/provider/provider.component.css","webpack:///./src/app/text-template-new/text-template-new.component.html","webpack:///./src/app/main/main.component.html","webpack:///./src/app/login/login.component.css","webpack:///./src/app/app.component.html","webpack:///./src/app/phonebook/phonebook.component.css","webpack:///./src/app/main/main.component.ts","webpack:///./src/app/notification.service.ts","webpack:///./src/app/auth.service.ts","webpack:///./src/app/login/login.component.ts","webpack:///./src/app/register/register.component.ts","webpack:///./src/app/campaign.service.ts","webpack:///./src/app/campaign/campaign.component.ts","webpack:///./src/app/provider.service.ts","webpack:///./src/app/phonebook.service.ts","webpack:///./src/app/text-template.service.ts","webpack:///./src/app/campaign-new/campaign-new.component.ts","webpack:///./src/app/campaign-view/campaign-view.component.ts","webpack:///./src/app/phonebook/phonebook.component.ts","webpack:///./src/app/phonebook-new/phonebook-new.component.ts","webpack:///./src/app/text-template/text-template.component.ts","webpack:///./src/app/text-template-new/text-template-new.component.ts","webpack:///./src/app/provider/provider.component.ts","webpack:///./src/app/profile/profile.component.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/notification/notification.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/main.ts"],"names":["module","exports","webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","id","main_component_MainComponent","MainComponent","prototype","ngOnInit","tslib_es6","Object","core","selector","template","__webpack_require__","Notification","notification_service_NotificationService","NotificationService","this","notifications","currentCount","addNotification","resultType","text","_this","newNotification","push","setTimeout","closeNotification","notify","i","length","splice","providedIn","User","auth_service_AuthService","AuthService","http","router","notificationService","currUser","loggedin","loginUrl","logoutUrl","registerUrl","myselfUrl","httpOptions","headers","fesm5_http","Content-Type","login","username","password","post","subscribe","usermessage","payload","email","name","navigate","err","register","secretCode","logout","getUser","get","thisUser","url","getUserObs","updateUser","user","put","fesm5_router","login_component_LoginComponent","LoginComponent","authService","routeRegister","register_component_RegisterComponent","RegisterComponent","Campaign","campaign_service_CampaignService","CampaignService","campaigns","campaignUrl","getCampaigns","getCampaignObs","toString","addCampaign","newCampaign","campaignNotification","addCampaignRun","startCampaign","deleteCampaign","campaign","delete","pauseCampaign","campaign_component_CampaignComponent","CampaignComponent","campaignService","intervalId","setInterval","includes","clearInterval","TwilioProvider","provider_service_ProviderService","ProviderService","twilioProviderSettings","twilioUrl","providerEnums","tag","getTwilioProvider","thisTwilio","getTwilioProviderObs","updateTwilioProvider","tProvider","Phonebook","PhoneRecord","phonebook_service_PhonebookService","PhonebookService","phonebooks","phonebookUrl","phonebookImportUrl","getPhonebooks","getPhonebookObs","addPhonebook","phonebook","pbNotification","editPhonebook","deletePhonebook","uploadPhonebook","file","formData","FormData","append","TextTemplate","text_template_service_TextTemplateService","TextTemplateService","textTemplates","templateUrl","getTextTemplates","templates","getTextTemplateObs","addTextTemplate","newTextTemplate","templateNotification","deleteTextTemplate","textTemplate","editTextTemplate","campaign_new_component_CampaignNewComponent","CampaignNewComponent","providerService","phonebookService","textTemplateService","templateStr","previewStr","submitNewCampaign","submitNewCampaignRun","updatePreviews","textTemplateId","phonebookId","tempStr","replace","records","firstName","lastName","alias","phoneNumber","campaign_view_component_CampaignViewComponent","CampaignViewComponent","route","currCampaign","updateThisCampaign","params","parseInt","phonebook_component_PhonebookComponent","PhonebookComponent","phonebook_new_component_PhonebookNewComponent","PhonebookNewComponent","newPhonebook","newPhoneRecords","additionalRecord","insertAdditionalRecord","concat","importPhoneRecords","files","item","data","submitNewPhonebook","currPb","text_template_component_TextTemplateComponent","TextTemplateComponent","text_template_new_component_TextTemplateNewComponent","TextTemplateNewComponent","submitNewTextTemplate","updatePreview","currTT","provider_component_ProviderComponent","ProviderComponent","currTwilioProvider","submitProviders","currTwilio","profile_component_ProfileComponent","ProfileComponent","JSON","parse","stringify","routes","path","component","app_routing_module_AppRoutingModule","AppRoutingModule","imports","forRoot","app_component_AppComponent","AppComponent","title","navlinks","link","loginOnly","notification_component_NotificationComponent","NotificationComponent","app_module_AppModule","AppModule","declarations","platform_browser","fesm5_forms","providers","bootstrap","platform_browser_dynamic","bootstrapModule","catch","console","error"],"mappings":"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","file":"main.js","sourcesContent":["module.exports = \".no-space-break {\\n white-space:nowrap;\\n }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGhvbmVib29rLW5ldy9waG9uZWJvb2stbmV3LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxrQkFBa0I7RUFDcEIiLCJmaWxlIjoic3JjL2FwcC9waG9uZWJvb2stbmV3L3Bob25lYm9vay1uZXcuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5uby1zcGFjZS1icmVhayB7XG4gICAgd2hpdGUtc3BhY2U6bm93cmFwO1xuICB9XG4iXX0= */\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"#new-text-preview {\\n font-family: \\\"Courier New\\\"\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdGV4dC10ZW1wbGF0ZS1uZXcvdGV4dC10ZW1wbGF0ZS1uZXcuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJO0FBQ0oiLCJmaWxlIjoic3JjL2FwcC90ZXh0LXRlbXBsYXRlLW5ldy90ZXh0LXRlbXBsYXRlLW5ldy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI25ldy10ZXh0LXByZXZpZXcge1xuICAgIGZvbnQtZmFtaWx5OiBcIkNvdXJpZXIgTmV3XCJcbn1cbiJdfQ== */\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3RleHQtdGVtcGxhdGUvdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n \\n \\n \\n
\\n
\\n\\n\\n
\\n\\n
\\n
\\n
\\n \\n \\n From | \\n To | \\n Currrent Status | \\n Time Sent | \\n
\\n \\n \\n \\n \\n {{ job.fromNum }} | \\n {{ job.toNum }} | \\n {{ job.currentStatus }} | \\n {{ job.timeSent | date:'dd-MMM-yyyy'}} | \\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n
\\n
\\n
\\n \\n
\\n
Are you sure you want to delete the campaign?
\\n
\\n \\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
Are you sure you want to delete the phonebook?
\\n
\\n \\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NhbXBhaWduL2NhbXBhaWduLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"
\\n{{ notification.text }}\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21haW4vbWFpbi5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n Name | \\n Create Date | \\n
\\n \\n \\n \\n \\n {{ textTemplate.name }} | \\n {{ textTemplate.createDate | date:'dd-MMM-yyyy'}} | \\n
\\n \\n No text template created yet. Create templates by clicking here
\\n \\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"
\\n
\\n
\\n
\\n
Settings for {{ currUser.username }}
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n Name | \\n Phonebook Size | \\n Create Date | \\n
\\n \\n \\n \\n \\n {{ phonebook.name }} | \\n {{ phonebook.size }} | \\n {{ phonebook.createDate | date:'dd-MMM-yyyy'}} | \\n
\\n \\n No phonebooks created yet. Create phonebooks by clicking here
\\n \\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NhbXBhaWduLW5ldy9jYW1wYWlnbi1uZXcuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \".campaign-details:-moz-read-only {\\n background-color: white;\\n}\\n.campaign-details:read-only {\\n background-color: white;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FtcGFpZ24tdmlldy9jYW1wYWlnbi12aWV3LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSx1QkFBdUI7QUFDM0I7QUFGQTtJQUNJLHVCQUF1QjtBQUMzQiIsImZpbGUiOiJzcmMvYXBwL2NhbXBhaWduLXZpZXcvY2FtcGFpZ24tdmlldy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNhbXBhaWduLWRldGFpbHM6cmVhZC1vbmx5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiJdfQ== */\"","module.exports = \"
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n Name | \\n Status | \\n Target Size | \\n Create Date | \\n
\\n \\n \\n \\n \\n {{ campaign.name }} | \\n {{ campaign.currentStatus }} | \\n {{ campaign.size }} | \\n {{ campaign.createDate | date:'dd-MMM-yyyy'}} | \\n
\\n \\n No campaigns created yet. Create compaigns by clicking here
\\n \\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\"","module.exports = \"
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\"","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"crnd\";","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb3ZpZGVyL3Byb3ZpZGVyLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
Are you sure you want to delete the text template?
\\n
\\n \\n
\\n
\\n
\\n\"","module.exports = \"
\\n main works!\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"
\\n\\n
\\n \\n\\n\\n\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Bob25lYm9vay9waG9uZWJvb2suY29tcG9uZW50LmNzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-main',\n templateUrl: './main.component.html',\n styleUrls: ['./main.component.css']\n})\nexport class MainComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nexport class Notification {\n id: number;\n resultType: string; // enum success or failure or info\n text: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n notifications: Notification[] = [];\n currentCount = 0;\n\n addNotification(resultType, text) {\n const newNotification = new Notification();\n newNotification.id = this.currentCount;\n this.currentCount++;\n newNotification.resultType = resultType;\n newNotification.text = text;\n\n this.notifications.push(newNotification);\n setTimeout(() => this.closeNotification(newNotification), 3000);\n }\n\n closeNotification(notify: Notification) {\n for (let i = 0; i < this.notifications.length; i++) {\n if (this.notifications[i].id === notify.id) {\n this.notifications.splice(i, 1);\n break;\n }\n }\n }\n\n constructor() {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { NotificationService } from './notification.service';\nimport { Observable, of } from 'rxjs';\n\nexport class User {\n username: string;\n password: string;\n name: string;\n email: string;\n secretCode: string;\n}\n\nexport class UserNotification {\n resultType: string;\n text: string;\n payload: User;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n currUser = new User();\n loggedin = false;\n loginUrl = 'api/login';\n logoutUrl = 'api/logout';\n registerUrl = 'api/register';\n myselfUrl = 'api/myself';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n login(username: string, password: string) {\n this.currUser.username = username;\n this.currUser.password = password;\n this.http.post
(this.loginUrl, this.currUser, this.httpOptions).subscribe(usermessage => {\n if (usermessage.payload !== null) {\n this.loggedin = true;\n\n // update user\n this.currUser.username = usermessage.payload.username;\n this.currUser.email = usermessage.payload.email;\n this.currUser.name = usermessage.payload.name;\n\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n this.router.navigate(['/campaign']);\n } else {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in logging in');\n });\n this.currUser.password = '';\n }\n\n register(username: string, password: string, email: string, name: string, secretCode: string) {\n this.currUser.username = username;\n this.currUser.password = password;\n this.currUser.email = email;\n this.currUser.name = name;\n this.currUser.secretCode = secretCode;\n\n this.http.post(this.registerUrl, this.currUser, this.httpOptions).subscribe(usermessage => {\n if (usermessage.payload !== null) {\n this.loggedin = true;\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n this.router.navigate(['/campaign']);\n\n // update user\n this.currUser.username = usermessage.payload.username;\n this.currUser.email = usermessage.payload.email;\n this.currUser.name = usermessage.payload.name;\n } else {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n }\n });\n\n this.currUser.secretCode = '';\n }\n\n logout() {\n this.http.post(this.logoutUrl, '', this.httpOptions).subscribe(usermessage => {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n this.loggedin = false;\n this.currUser = new User();\n this.router.navigate(['/']);\n });\n }\n\n getUser(): User {\n this.http.get(this.myselfUrl, this.httpOptions).subscribe(thisUser => {\n this.currUser = thisUser;\n if (this.currUser.username !== '') {\n this.loggedin = true;\n } else {\n this.router.navigate(['/']);\n }\n // separate one to redirect main to campaign dashboard\n if (this.router.url === '/' || this.router.url === '') {\n this.router.navigate(['/campaign']);\n }\n },\n err => {\n this.router.navigate(['/']);\n });\n return this.currUser;\n }\n\n getUserObs(): Observable {\n return this.http.get(this.myselfUrl, this.httpOptions);\n }\n\n updateUser(user: User) {\n this.currUser = user;\n this.http.put(this.myselfUrl, this.currUser, this.httpOptions).subscribe(usermessage => {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in updating profile');\n });\n this.currUser.password = '';\n }\n\n constructor(private http: HttpClient, private router: Router, private notificationService: NotificationService) { }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '../auth.service';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css']\n})\nexport class LoginComponent implements OnInit {\n\n username: string;\n password: string;\n\n login() {\n this.authService.login(this.username, this.password);\n }\n\n routeRegister() {\n this.router.navigate(['/register']);\n }\n constructor(private authService: AuthService, private router: Router) { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '../auth.service';\n\n@Component({\n selector: 'app-register',\n templateUrl: './register.component.html',\n styleUrls: ['./register.component.css']\n})\nexport class RegisterComponent implements OnInit {\n username = '';\n password = '';\n email = '';\n name = '';\n secretCode = '';\n\n register() {\n this.authService.register(this.username, this.password, this.email, this.name, this.secretCode);\n }\n constructor(private authService: AuthService) { }\n\n ngOnInit() {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { NotificationService } from './notification.service';\n\nexport class Campaign {\n id: number;\n name: string;\n fromNumber: string;\n size: number;\n currentStatus: string;\n createDate: Date;\n phonebookId: number;\n textTemplateId: number;\n webTemplateId: number;\n providerTag: string;\n jobs: Job[];\n}\n\nexport class Job {\n id: number;\n currentStatus: string;\n timeSent: Date;\n fromNum: string;\n toNum: string;\n}\n\nexport class CampaignNotification {\n resultType: string;\n text: string;\n payload: Campaign;\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class CampaignService {\n\n campaigns: Campaign[] = [];\n\n campaignUrl = '/api/campaign';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n getCampaigns() {\n this.http.get(this.campaignUrl).subscribe(campaigns => {\n if (campaigns === null) {\n this.campaigns = [];\n } else {\n this.campaigns = campaigns;\n }\n });\n }\n\n getCampaignObs(id: number): Observable {\n return this.http.get(this.campaignUrl + '/' + id.toString());\n }\n\n addCampaign(newCampaign: Campaign) {\n this.http.post(this.campaignUrl, newCampaign, this.httpOptions).subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n this.campaigns.push(campaignNotification.payload);\n if (campaignNotification.payload !== null) {\n this.router.navigate(['/campaign']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in creating template');\n });\n }\n\n addCampaignRun(newCampaign: Campaign) {\n this.http.post(this.campaignUrl, newCampaign, this.httpOptions).subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n this.campaigns.push(campaignNotification.payload);\n if (campaignNotification.payload !== null) {\n this.startCampaign(campaignNotification.payload).subscribe();\n this.router.navigate(['/campaign']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in creating template');\n });\n }\n\n deleteCampaign(campaign: Campaign) {\n this.http.delete(this.campaignUrl + '/' + campaign.id.toString(), this.httpOptions)\n .subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n this.router.navigate(['/campaign']);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in deleting campaign');\n });\n }\n\n startCampaign(campaign: Campaign) {\n return this.http.get(this.campaignUrl + '/' + campaign.id.toString() + '/' + 'start');\n }\n\n pauseCampaign(campaign: Campaign) {\n return this.http.get(this.campaignUrl + '/' + campaign.id.toString() + '/' + 'pause');\n }\n\n constructor(private http: HttpClient, private router: Router, private notificationService: NotificationService) {\n this.campaigns = [];\n this.getCampaigns();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { CampaignService } from '../campaign.service';\n\n@Component({\n selector: 'app-campaign',\n templateUrl: './campaign.component.html',\n styleUrls: ['./campaign.component.css']\n})\nexport class CampaignComponent implements OnInit {\n\n constructor(private campaignService: CampaignService, private router: Router) { }\n\n ngOnInit() {\n this.campaignService.getCampaigns();\n const intervalId = setInterval(() => {\n this.campaignService.getCampaigns();\n if (!this.router.url.includes('/campaign')) {\n clearInterval(intervalId);\n }\n }, 2000);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { NotificationService } from './notification.service';\nimport { Observable, of } from 'rxjs';\n\nexport class TwilioProvider {\n accountSID: string;\n authToken: string;\n}\n\nexport class TwilioProviderNotification {\n resultType: string;\n text: string;\n payload: TwilioProvider;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProviderService {\n\n twilioProviderSettings: TwilioProvider = new TwilioProvider();\n twilioUrl = '/api/provider/twilio';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n providerEnums = [\n {name: 'Twilio', tag: 'twilio'},\n ];\n\n getTwilioProvider() {\n this.http.get(this.twilioUrl, this.httpOptions).subscribe(thisTwilio => {\n this.twilioProviderSettings = thisTwilio;\n });\n }\n\n getTwilioProviderObs(): Observable {\n return this.http.get(this.twilioUrl, this.httpOptions);\n }\n\n updateTwilioProvider(tProvider: TwilioProvider) {\n this.http.post(this.twilioUrl, tProvider, this.httpOptions).subscribe(usermessage => {\n this.notificationService.addNotification(usermessage.resultType, usermessage.text);\n this.twilioProviderSettings = usermessage.payload;\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in updating Twilio provider');\n });\n }\n\n constructor(private http: HttpClient, private notificationService: NotificationService) {\n this.getTwilioProvider();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { NotificationService } from './notification.service';\n\nexport class Phonebook {\n id: number;\n name: string;\n size: number;\n createDate: Date;\n records: PhoneRecord[];\n}\n\nexport class PhoneRecord {\n id: number;\n firstName: string;\n lastName: string;\n alias: string;\n phoneNumber: string;\n}\n\nexport class PhonebookNotification {\n resultType: string;\n text: string;\n payload: Phonebook;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PhonebookService {\n\n phonebooks: Phonebook[] = [];\n\n phonebookUrl = '/api/phonebook';\n phonebookImportUrl = '/api/import-phonebook';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n getPhonebooks() {\n this.http.get(this.phonebookUrl).subscribe(phonebooks => {\n if (phonebooks === null) {\n this.phonebooks = [];\n } else {\n this.phonebooks = phonebooks;\n }\n });\n }\n\n getPhonebookObs(id: number): Observable {\n return this.http.get(this.phonebookUrl + '/' + id.toString());\n }\n\n addPhonebook(phonebook: Phonebook) {\n this.http.post(this.phonebookUrl, phonebook, this.httpOptions).subscribe(pbNotification => {\n this.notificationService.addNotification(pbNotification.resultType, pbNotification.text);\n this.phonebooks.push(pbNotification.payload);\n if (pbNotification.payload !== null) {\n this.router.navigate(['/phonebook']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in creating phonebook');\n });\n }\n\n editPhonebook(phonebook: Phonebook) {\n this.http.put(this.phonebookUrl + '/' + phonebook.id.toString(), phonebook, this.httpOptions)\n .subscribe(pbNotification => {\n this.notificationService.addNotification(pbNotification.resultType, pbNotification.text);\n if (pbNotification.payload !== null) {\n this.router.navigate(['/phonebook']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in editing phonebook');\n });\n }\n\n deletePhonebook(phonebook: Phonebook) {\n this.http.delete(this.phonebookUrl + '/' + phonebook.id.toString(), this.httpOptions)\n .subscribe(pbNotification => {\n this.notificationService.addNotification(pbNotification.resultType, pbNotification.text);\n this.router.navigate(['/phonebook']);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in deleting phonebook');\n });\n }\n\n uploadPhonebook(file: File): Observable {\n const formData = new FormData();\n formData.append('phonebookFile', file);\n return this.http.post(this.phonebookImportUrl, formData);\n }\n\n constructor(private http: HttpClient, private router: Router, private notificationService: NotificationService) {\n this.getPhonebooks();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { NotificationService } from './notification.service';\n\nexport class TextTemplate {\n id: number;\n name: string;\n templateStr: string;\n createDate: Date;\n}\n\nexport class TextTemplateNotification {\n resultType: string;\n text: string;\n payload: TextTemplate;\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class TextTemplateService {\n\n textTemplates: TextTemplate[] = [];\n\n templateUrl = '/api/text-template';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n getTextTemplates() {\n this.http.get(this.templateUrl).subscribe(templates => {\n if (templates === null) {\n this.textTemplates = [];\n } else {\n this.textTemplates = templates;\n }\n });\n }\n\n getTextTemplateObs(id: number) {\n return this.http.get(this.templateUrl + '/' + id.toString());\n }\n\n addTextTemplate(newTextTemplate: TextTemplate) {\n this.http.post(this.templateUrl, newTextTemplate, this.httpOptions).subscribe(templateNotification => {\n this.notificationService.addNotification(templateNotification.resultType, templateNotification.text);\n this.textTemplates.push(templateNotification.payload);\n if (templateNotification.payload !== null) {\n this.router.navigate(['/text-template']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in creating template');\n });\n }\n\n deleteTextTemplate(textTemplate: TextTemplate) {\n this.http.delete(this.templateUrl + '/' + textTemplate.id.toString(), this.httpOptions)\n .subscribe(templateNotification => {\n this.notificationService.addNotification(templateNotification.resultType, templateNotification.text);\n this.router.navigate(['/text-template']);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in deleting text template');\n });\n }\n\n editTextTemplate(textTemplate: TextTemplate) {\n this.http.put(this.templateUrl + '/' + textTemplate.id.toString(), textTemplate, this.httpOptions)\n .subscribe(templateNotification => {\n this.notificationService.addNotification(templateNotification.resultType, templateNotification.text);\n if (templateNotification.payload !== null) {\n this.router.navigate(['/text-template']);\n }\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in editing text template');\n });\n }\n\n constructor(private http: HttpClient, private router: Router, private notificationService: NotificationService) {\n this.getTextTemplates();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CampaignService, Campaign } from '../campaign.service';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { ProviderService } from '../provider.service';\nimport { PhonebookService } from '../phonebook.service';\nimport { TextTemplateService } from '../text-template.service';\n\n@Component({\n selector: 'app-campaign-new',\n templateUrl: './campaign-new.component.html',\n styleUrls: ['./campaign-new.component.css']\n})\nexport class CampaignNewComponent implements OnInit {\n\n constructor(\n private campaignService: CampaignService,\n private router: Router,\n private providerService: ProviderService,\n private phonebookService: PhonebookService,\n private textTemplateService: TextTemplateService) { }\n\n newCampaign: Campaign = new Campaign();\n\n templateStr = '';\n previewStr = '';\n\n submitNewCampaign() {\n this.campaignService.addCampaign(this.newCampaign);\n }\n\n submitNewCampaignRun() {\n this.campaignService.addCampaignRun(this.newCampaign);\n }\n\n updatePreviews() {\n if (this.newCampaign.textTemplateId !== 0 && this.newCampaign.phonebookId !== 0) {\n this.phonebookService.getPhonebookObs(this.newCampaign.phonebookId).subscribe(phonebook => {\n this.textTemplateService.getTextTemplateObs(this.newCampaign.textTemplateId).subscribe(textTemplate => {\n this.templateStr = textTemplate.templateStr;\n\n let tempStr = this.templateStr;\n tempStr = tempStr.replace('{firstName}', phonebook.records[0].firstName);\n tempStr = tempStr.replace('{lastName}', phonebook.records[0].lastName);\n tempStr = tempStr.replace('{alias}', phonebook.records[0].alias);\n tempStr = tempStr.replace('{phoneNumber}', phonebook.records[0].phoneNumber);\n\n this.previewStr = tempStr;\n });\n });\n } else {\n this.templateStr = '';\n this.previewStr = '';\n }\n }\n\n ngOnInit() {\n this.newCampaign.textTemplateId = 0;\n this.newCampaign.phonebookId = 0;\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CampaignService, Campaign, Job, CampaignNotification } from '../campaign.service';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { NotificationService } from '../notification.service';\n\n@Component({\n selector: 'app-campaign-view',\n templateUrl: './campaign-view.component.html',\n styleUrls: ['./campaign-view.component.css']\n})\nexport class CampaignViewComponent implements OnInit {\n\n currCampaign: Campaign = new Campaign();\n\n id = 0;\n\n constructor(\n private campaignService: CampaignService,\n private router: Router,\n private route: ActivatedRoute,\n private notificationService: NotificationService\n ) { }\n\n startCampaign() {\n this.campaignService.startCampaign(this.currCampaign).subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n this.campaignService.getCampaignObs(this.id).subscribe(campaign => {\n this.currCampaign = campaign;\n });\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in starting campaign');\n });\n }\n\n pauseCampaign() {\n this.campaignService.pauseCampaign(this.currCampaign).subscribe(campaignNotification => {\n this.notificationService.addNotification(campaignNotification.resultType, campaignNotification.text);\n },\n err => {\n this.notificationService.addNotification('failure', 'Error in pausing campaign');\n });\n }\n\n deleteCampaign() {\n this.campaignService.deleteCampaign(this.currCampaign);\n }\n\n updateThisCampaign() {\n this.campaignService.getCampaignObs(this.id).subscribe(campaign => {\n this.currCampaign = campaign;\n });\n }\n\n ngOnInit() {\n const idParam = 'id';\n this.route.params.subscribe( params => {\n this.id = parseInt(params[idParam], 10);\n });\n this.updateThisCampaign();\n const intervalId = setInterval(() => {\n this.updateThisCampaign();\n if (!this.router.url.includes('/campaign')) {\n clearInterval(intervalId);\n }\n }, 2000);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PhonebookService } from '../phonebook.service';\n\n@Component({\n selector: 'app-phonebook',\n templateUrl: './phonebook.component.html',\n styleUrls: ['./phonebook.component.css']\n})\nexport class PhonebookComponent implements OnInit {\n\n constructor(private phonebookService: PhonebookService) { }\n\n ngOnInit() {\n this.phonebookService.getPhonebooks();\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PhonebookService, Phonebook, PhoneRecord } from '../phonebook.service';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\n\n@Component({\n selector: 'app-phonebook-new',\n templateUrl: './phonebook-new.component.html',\n styleUrls: ['./phonebook-new.component.css']\n})\nexport class PhonebookNewComponent implements OnInit {\n\n constructor(private phonebookService: PhonebookService, private router: Router, private route: ActivatedRoute) { }\n\n id = 0;\n\n newPhonebook: Phonebook = new Phonebook();\n newPhoneRecords: PhoneRecord[] = [];\n additionalRecord: PhoneRecord = new PhoneRecord();\n\n insertAdditionalRecord() {\n this.newPhoneRecords = this.newPhoneRecords.concat(this.additionalRecord);\n this.additionalRecord = new PhoneRecord();\n this.additionalRecord.phoneNumber = '';\n }\n\n importPhoneRecords(files: FileList) {\n this.phonebookService.uploadPhonebook(files.item(0)).subscribe(data => {\n this.newPhoneRecords = this.newPhoneRecords.concat(data);\n });\n }\n\n submitNewPhonebook() {\n if (this.router.url === '/phonebook/new') {\n if (this.additionalRecord.phoneNumber !== '') {\n this.insertAdditionalRecord();\n }\n this.newPhonebook.records = this.newPhoneRecords;\n this.phonebookService.addPhonebook(this.newPhonebook);\n } else {\n this.editPhonebook();\n }\n }\n\n deletePhonebook() {\n this.phonebookService.deletePhonebook(this.newPhonebook);\n }\n\n editPhonebook() {\n this.newPhonebook.records = this.newPhoneRecords;\n this.phonebookService.editPhonebook(this.newPhonebook);\n }\n\n ngOnInit() {\n this.additionalRecord = new PhoneRecord();\n this.additionalRecord.phoneNumber = '';\n\n // if page is edit\n if (this.router.url !== '/phonebook/new') {\n const idParam = 'id';\n this.route.params.subscribe( params => {\n this.id = parseInt(params[idParam], 10);\n this.phonebookService.getPhonebookObs(this.id).subscribe(currPb => {\n this.newPhonebook = currPb;\n this.newPhoneRecords = this.newPhonebook.records;\n });\n });\n }\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TextTemplateService } from '../text-template.service';\n\n@Component({\n selector: 'app-text-template',\n templateUrl: './text-template.component.html',\n styleUrls: ['./text-template.component.css']\n})\nexport class TextTemplateComponent implements OnInit {\n\n constructor(private textTemplateService: TextTemplateService) { }\n\n ngOnInit() {\n this.textTemplateService.getTextTemplates();\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TextTemplate, TextTemplateService } from '../text-template.service';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\n\n@Component({\n selector: 'app-text-template-new',\n templateUrl: './text-template-new.component.html',\n styleUrls: ['./text-template-new.component.css']\n})\nexport class TextTemplateNewComponent implements OnInit {\n\n newTextTemplate: TextTemplate = new TextTemplate();\n previewStr: string;\n id = 0;\n\n submitNewTextTemplate() {\n if (this.router.url === '/text-template/new') {\n this.textTemplateService.addTextTemplate(this.newTextTemplate);\n } else {\n this.editTextTemplate();\n }\n }\n\n updatePreview() {\n let tempStr = '';\n tempStr = this.newTextTemplate.templateStr;\n tempStr = tempStr.replace('{firstName}', 'John');\n tempStr = tempStr.replace('{lastName}', 'Smith');\n tempStr = tempStr.replace('{alias}', 'Johnny');\n tempStr = tempStr.replace('{phoneNumber}', '+6598765432');\n\n this.previewStr = tempStr;\n }\n\n deleteTextTemplate() {\n this.textTemplateService.deleteTextTemplate(this.newTextTemplate);\n }\n\n editTextTemplate() {\n this.textTemplateService.editTextTemplate(this.newTextTemplate);\n }\n\n constructor(private textTemplateService: TextTemplateService, private router: Router, private route: ActivatedRoute) { }\n\n ngOnInit() {\n // if page is edit\n if (this.router.url !== '/text-template/new') {\n const idParam = 'id';\n this.route.params.subscribe( params => {\n this.id = parseInt(params[idParam], 10);\n this.textTemplateService.getTextTemplateObs(this.id).subscribe(currTT => {\n this.newTextTemplate = currTT;\n this.updatePreview();\n });\n });\n }\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ProviderService, TwilioProvider } from '../provider.service';\n\n\n@Component({\n selector: 'app-provider',\n templateUrl: './provider.component.html',\n styleUrls: ['./provider.component.css']\n})\nexport class ProviderComponent implements OnInit {\n\n currTwilioProvider: TwilioProvider = new TwilioProvider();\n\n submitProviders() {\n this.providerService.updateTwilioProvider(this.currTwilioProvider);\n }\n\n constructor(private providerService: ProviderService) { }\n\n ngOnInit() {\n this.providerService.getTwilioProviderObs().subscribe(currTwilio => {\n this.currTwilioProvider = currTwilio;\n });\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AuthService, User } from '../auth.service';\n\n@Component({\n selector: 'app-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.css']\n})\nexport class ProfileComponent implements OnInit {\n\n constructor(private authService: AuthService) { }\n currUser: User;\n\n updateUser() {\n this.authService.updateUser(this.currUser);\n }\n\n ngOnInit() {\n this.authService.getUserObs().subscribe(user => {\n this.currUser = JSON.parse(JSON.stringify(user));\n });\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { MainComponent } from './main/main.component';\nimport { LoginComponent } from './login/login.component';\nimport { RegisterComponent } from './register/register.component';\nimport { CampaignComponent } from './campaign/campaign.component';\nimport { CampaignNewComponent } from './campaign-new/campaign-new.component';\nimport { CampaignViewComponent } from './campaign-view/campaign-view.component';\nimport { PhonebookComponent } from './phonebook/phonebook.component';\nimport { PhonebookNewComponent } from './phonebook-new/phonebook-new.component';\nimport { TextTemplateComponent } from './text-template/text-template.component';\nimport { TextTemplateNewComponent } from './text-template-new/text-template-new.component';\nimport { ProviderComponent } from './provider/provider.component';\nimport { ProfileComponent } from './profile/profile.component';\n\nconst routes: Routes = [\n { path: '', component: MainComponent },\n { path: 'login', component: LoginComponent },\n { path: 'register', component: RegisterComponent },\n { path: 'profile', component: ProfileComponent },\n { path: 'campaign', component: CampaignComponent },\n { path: 'campaign/new', component: CampaignNewComponent },\n { path: 'campaign/:id/view', component: CampaignViewComponent },\n { path: 'phonebook', component: PhonebookComponent },\n { path: 'phonebook/new', component: PhonebookNewComponent },\n { path: 'phonebook/:id/edit', component: PhonebookNewComponent },\n { path: 'text-template', component: TextTemplateComponent },\n { path: 'text-template/new', component: TextTemplateNewComponent },\n { path: 'text-template/:id/edit', component: TextTemplateNewComponent },\n { path: 'provider', component: ProviderComponent },\n ];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\nimport { RouterModule, Routes, Router } from '@angular/router';\nimport { AuthService } from './auth.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent {\n title = 'tapit-frontend';\n navlinks = [\n {\n link: '/campaign',\n name: 'Campaigns',\n loginOnly: true,\n },\n {\n link: '/phonebook',\n name: 'Phonebook',\n loginOnly: true,\n },\n {\n link: '/text-template',\n name: 'Text Templates',\n loginOnly: true,\n },\n {\n link: '/web-template',\n name: 'Web Templates',\n loginOnly: true,\n },\n ];\n constructor( private router: Router, private authService: AuthService) {\n authService.getUser();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { NotificationService } from '../notification.service';\n\n@Component({\n selector: 'app-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.css']\n})\nexport class NotificationComponent implements OnInit {\n\n constructor(private notificationService: NotificationService) { }\n\n ngOnInit() {\n }\n\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule } from '@angular/forms';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { MainComponent } from './main/main.component';\nimport { CampaignComponent } from './campaign/campaign.component';\nimport { CampaignNewComponent } from './campaign-new/campaign-new.component';\nimport { NotificationComponent } from './notification/notification.component';\nimport { PhonebookComponent } from './phonebook/phonebook.component';\nimport { PhonebookNewComponent } from './phonebook-new/phonebook-new.component';\nimport { TextTemplateComponent } from './text-template/text-template.component';\nimport { TextTemplateNewComponent } from './text-template-new/text-template-new.component';\nimport { LoginComponent } from './login/login.component';\nimport { RegisterComponent } from './register/register.component';\nimport { ProviderComponent } from './provider/provider.component';\nimport { ProfileComponent } from './profile/profile.component';\nimport { CampaignViewComponent } from './campaign-view/campaign-view.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n MainComponent,\n CampaignComponent,\n CampaignNewComponent,\n NotificationComponent,\n PhonebookComponent,\n PhonebookNewComponent,\n TextTemplateComponent,\n TextTemplateNewComponent,\n LoginComponent,\n RegisterComponent,\n ProviderComponent,\n ProfileComponent,\n CampaignViewComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n FormsModule,\n HttpClientModule,\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/tapit-build/tapit b/tapit-build/tapit
index 5c9a1a7..16dbcca 100755
Binary files a/tapit-build/tapit and b/tapit-build/tapit differ
diff --git a/tapit-frontend/src/app/campaign-new/campaign-new.component.html b/tapit-frontend/src/app/campaign-new/campaign-new.component.html
index 65ad6c2..87a8fea 100644
--- a/tapit-frontend/src/app/campaign-new/campaign-new.component.html
+++ b/tapit-frontend/src/app/campaign-new/campaign-new.component.html
@@ -13,33 +13,40 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tapit-frontend/src/app/campaign-new/campaign-new.component.ts b/tapit-frontend/src/app/campaign-new/campaign-new.component.ts
index dad7595..eca75df 100644
--- a/tapit-frontend/src/app/campaign-new/campaign-new.component.ts
+++ b/tapit-frontend/src/app/campaign-new/campaign-new.component.ts
@@ -21,6 +21,9 @@ export class CampaignNewComponent implements OnInit {
newCampaign: Campaign = new Campaign();
+ templateStr = '';
+ previewStr = '';
+
submitNewCampaign() {
this.campaignService.addCampaign(this.newCampaign);
}
@@ -29,7 +32,30 @@ export class CampaignNewComponent implements OnInit {
this.campaignService.addCampaignRun(this.newCampaign);
}
+ updatePreviews() {
+ if (this.newCampaign.textTemplateId !== 0 && this.newCampaign.phonebookId !== 0) {
+ this.phonebookService.getPhonebookObs(this.newCampaign.phonebookId).subscribe(phonebook => {
+ this.textTemplateService.getTextTemplateObs(this.newCampaign.textTemplateId).subscribe(textTemplate => {
+ this.templateStr = textTemplate.templateStr;
+
+ let tempStr = this.templateStr;
+ tempStr = tempStr.replace('{firstName}', phonebook.records[0].firstName);
+ tempStr = tempStr.replace('{lastName}', phonebook.records[0].lastName);
+ tempStr = tempStr.replace('{alias}', phonebook.records[0].alias);
+ tempStr = tempStr.replace('{phoneNumber}', phonebook.records[0].phoneNumber);
+
+ this.previewStr = tempStr;
+ });
+ });
+ } else {
+ this.templateStr = '';
+ this.previewStr = '';
+ }
+ }
+
ngOnInit() {
+ this.newCampaign.textTemplateId = 0;
+ this.newCampaign.phonebookId = 0;
}
}
diff --git a/tapit-frontend/src/app/text-template-new/text-template-new.component.ts b/tapit-frontend/src/app/text-template-new/text-template-new.component.ts
index f3e8245..c6db185 100644
--- a/tapit-frontend/src/app/text-template-new/text-template-new.component.ts
+++ b/tapit-frontend/src/app/text-template-new/text-template-new.component.ts
@@ -50,6 +50,7 @@ export class TextTemplateNewComponent implements OnInit {
this.id = parseInt(params[idParam], 10);
this.textTemplateService.getTextTemplateObs(this.id).subscribe(currTT => {
this.newTextTemplate = currTT;
+ this.updatePreview();
});
});
}