{"version":3,"file":"app-31c84936.d152cf98c45d962fa693.bundle.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;;AAKA;AAAA;AANA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAOA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAOA;AAAA;AAJA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAWA;AAAA;AARA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AAEA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AAUA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAMA;AAAA;AAHA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAIA;AACA;;;;;;;;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC9CA;AACA;AACA;AAEA;AAIA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAOA;AAAA;AALA;AACA;AACA;AACA;AAqJA;AACA;AACA;AACA;AACA;AAAA;AA6BA;AACA;AACA;AACA;AACA;AAAA;AAgBA;AACA;AACA;AACA;AACA;AAAA;AAcA;AACA;AACA;AACA;AACA;AA7NA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;;;;;;;;;;;;ACvPA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACPA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACPA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACA;AACA;AACA","sources":["webpack://HRMSPortal/./src/components/myprofile/employeeletters/AddLetter/addletter.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/EditAcknowledgement/editacknowledgement.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/EditLetter/editletter.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/GenerateLetter/generateletter.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/PreviewEdit/previewedit.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/PreviewLetter/previewletter.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/SendToEmployee/sendtoemployee.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/UploadAcknowledgement/uploadacknowledgement.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/ViewAcknowledgement/viewacknowledgement.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/ViewLetter/viewletter.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/employeeletters.js","webpack://HRMSPortal/./src/components/myprofile/generalinformation/generalinformation.js","webpack://HRMSPortal/./src/components/myprofile/employeeletters/AddLetter/addletter.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/EditAcknowledgement/editacknowledgement.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/EditLetter/editletter.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/GenerateLetter/generateletter.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/PreviewEdit/previewedit.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/PreviewLetter/previewletter.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/SendToEmployee/sendtoemployee.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/UploadAcknowledgement/uploadacknowledgement.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/ViewAcknowledgement/viewacknowledgement.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/ViewLetter/viewletter.html","webpack://HRMSPortal/./src/components/myprofile/employeeletters/employeeletters.html","webpack://HRMSPortal/./src/components/myprofile/generalinformation/generalinformation.html"],"sourcesContent":["import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport {DialogService} from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport * as tinymce from 'tinymce';\r\nimport { Previewletter } from '../PreviewLetter/previewletter';\r\nimport {ValidationControllerFactory, ValidationRules} from 'aurelia-validation';\r\nimport Scrollbar from 'smooth-scrollbar';\r\n\r\n@inject(ProfileService,JwtService,DialogController,DialogService,ValidationControllerFactory)\r\nexport class Addletter {\r\n\r\n showPreviewPopup = false;\r\n formOutput = {}; // Store the form output here\r\n selectedOption = '1';\r\n editorContent = '';\r\n EditorData = '';\r\n \r\n constructor(ProfileService,JwtService,DialogController,DialogService,controllerFactory) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.controller = DialogController;\r\n this.dialogService = DialogService;\r\n this.controllerFactory = controllerFactory.createForCurrentScope();\r\n\r\n this.Employeeid = this.jwtService.getEmployeeId();\r\n\r\n ValidationRules\r\n .ensure('letterSubject').required().withMessage('Subject is required')\r\n .ensure('lettername').required().withMessage('Letter name is required')\r\n .ensure('selectedTemplate').required().withMessage('Please select a template')\r\n .ensure('selectedLetter').required().withMessage('Please select a letter')\r\n .ensure('editorContent').required().withMessage('The content field is required.')\r\n .on(this);\r\n }\r\n\r\n // activate() {\r\n // setTimeout(()=>{ \r\n // Scrollbar.init(document.querySelector('.addsletter-scrollbar'));\r\n // },1000)\r\n // }\r\n\r\n async attached() {\r\n tinymce.init({\r\n selector: '#content',\r\n toolbar: 'undo redo | code | image imagetools media filemanager | blocks fontfamily fontsize | bold italic underline strikethrough | preview | table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | align lineheight | checklist numlist bullist indent outdent | emoticons charmap | removeformat | fullscreen | codesample',\r\n plugins: 'code image imagetools media filemanager preview fullscreen codesample',\r\n\r\n setup: editor => {\r\n editor.on('init', () => {\r\n this.editor = editor;\r\n this.editorContent = '';\r\n });\r\n editor.on('change', () => {\r\n this.editorContent = editor.getContent();\r\n });\r\n },\r\n /* enable title field in the Image dialog*/\r\n image_title: true,\r\n /* enable automatic uploads of images represented by blob or data URIs*/\r\n automatic_uploads: true,\r\n file_picker_types: 'image',\r\n /* and here's our custom image picker*/\r\n file_picker_callback: (cb, value, meta) => {\r\n const input = document.createElement('input');\r\n input.setAttribute('type', 'file');\r\n input.setAttribute('accept', 'image/*');\r\n \r\n input.addEventListener('change', (e) => {\r\n const file = e.target.files[0];\r\n \r\n const reader = new FileReader();\r\n reader.addEventListener('load', () => {\r\n const id = 'blobid' + (new Date()).getTime();\r\n const blobCache = tinymce.activeEditor.editorUpload.blobCache;\r\n const base64 = reader.result.split(',')[1];\r\n const blobInfo = blobCache.create(id, file, base64);\r\n blobCache.add(blobInfo);\r\n /* call the callback and populate the Title field with the file name */\r\n cb(blobInfo.blobUri(), { title: file.name });\r\n });\r\n reader.readAsDataURL(file);\r\n });\r\n \r\n input.click();\r\n },\r\n content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:16px }'\r\n });\r\n \r\n const EmployeeLettersData = await this.profileService.GetEmployeeLetters(this.Employeeid);\r\n this.EmployeeLetters = await EmployeeLettersData;\r\n\r\n const EmployeeTemplatesData = await this.profileService.GetAllTemplates();\r\n this.EmployeeTemplates = await EmployeeTemplatesData;\r\n\r\n //GetTemplates\r\n const TemplatesData = await this.profileService.GetTemplates();\r\n this.Templates = await TemplatesData;\r\n\r\n // setTimeout(()=>{ \r\n // Scrollbar.init(document.querySelector('.addsletter-scrollbar'));\r\n // },1000)\r\n }\r\n\r\n selectedLetters(data){\r\n this.letterData = data;\r\n this.lettername = this.letterData.TemplateName;\r\n this.letterSubject = this.letterData.Subject;\r\n this.editor.setContent(this.letterData.Content);\r\n this.editor.focus();\r\n }\r\n\r\n selectedTemplates(data){\r\n this.templateData = data;\r\n this.editor.focus();\r\n if(this.templateData === ''){\r\n this.letterSubject = '';\r\n this.editor.setContent('');\r\n this.InputFocus.focus();\r\n }else{\r\n this.lettername = this.templateData.Name;\r\n this.letterSubject = this.templateData.Subject;\r\n this.editor.setContent(this.templateData.Content);\r\n }\r\n }\r\n\r\n handleRadioChange(event) {\r\n this.selectedOption = event.target.value;\r\n if(this.selectedOption === '1' || '3' || '2'){\r\n this.lettername = '';\r\n this.letterSubject = '';\r\n this.editor.setContent('');\r\n } \r\n }\r\n\r\n previewLetter() {\r\n this.controllerFactory.validate()\r\n .then(result => {\r\n if (result.valid) {\r\n const NewLetterData = {\r\n TemplateName : this.lettername,\r\n Subject : this.letterSubject,\r\n Content : this.editorContent,\r\n SendAcknowledgementEmpIND : this.Employeeid,\r\n DisciplinaryActionID : this.selectedOption,\r\n };\r\n this.profileService.GetPreviewLetterData(NewLetterData)\r\n .then(data =>{\r\n const previewData = {\r\n Content: data\r\n };\r\n this.dialogService.open({viewModel:Previewletter,model: previewData});\r\n })\r\n //tinymce.activeEditor.execCommand('mcePreview');\r\n //this.dialogService.open({viewModel:Previewletter,model: NewLetterData});\r\n }\r\n })\r\n }\r\n\r\n GenerateLetter(){\r\n this.errors = null;\r\n this.controllerFactory.validate()\r\n .then(result => {\r\n if (result.valid) {\r\n const NewLetterData = {\r\n TemplateName : this.lettername,\r\n Subject : this.letterSubject,\r\n Content : this.editorContent,\r\n SendAcknowledgementEmpIND : false,\r\n DisciplinaryActionID : null,\r\n EmployeeID :this.Employeeid\r\n };\r\n this.profileService.SaveEmployeeLetter(NewLetterData)\r\n .then(() => {\r\n this.controller.ok(true);\r\n });\r\n }\r\n }); \r\n }\r\n\r\n detached() {\r\n tinymce.remove(this.editor);\r\n}\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n \r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport {ValidationControllerFactory, ValidationRules} from 'aurelia-validation';\r\nimport 'flatpickr/dist/flatpickr.min.css';\r\nimport flatpickr from 'flatpickr';\r\nimport { config } from '../../../../shared/services/config';\r\nimport { DashboardService } from '../../../../shared/services/dashboardservice';\r\n\r\n@inject(ProfileService,JwtService,DialogController,ValidationControllerFactory,DashboardService)\r\nexport class Editacknowledgement {\r\n\r\n viewFile = true;\r\n ackreq = false;\r\n URL=config.img_url;\r\n \r\n constructor(ProfileService,JwtService,DialogController,controllerFactory,DashboardService) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.controller = DialogController;\r\n this.controllerFactory = controllerFactory.createForCurrentScope();\r\n this.dashboardService = DashboardService;\r\n\r\n this.Employeeid = this.jwtService.getEmployeeId();\r\n\r\n ValidationRules\r\n .ensure('receivedDate').required().withMessage('Received date is required')\r\n .ensure('upload').required().withMessage('Acknowledgement is required')\r\n .on(this);\r\n }\r\n\r\n activate(editAckData) {\r\n console.log(editAckData);\r\n this.EmployeeLettercommunicationhistoryID = editAckData.EmployeeLettercommunicationhistoryID;\r\n this.SentModeText = editAckData.SentModeText;\r\n this.sentDate = editAckData.SentDT;\r\n this.GeneratedDT=editAckData.GeneratedDT;\r\n }\r\n\r\n async attached() {\r\n this.dashboardService.GetDashboardDetails(this.Employeeid).then(data => {\r\n const apiDatetimeStr = data.CurrentDate;\r\n const apiDatetime = new Date(apiDatetimeStr);\r\n const day = apiDatetime.getDate().toString().padStart(2, \"0\");\r\n const month = (apiDatetime.getMonth() + 1).toString().padStart(2, \"0\");\r\n const year = apiDatetime.getFullYear().toString();\r\n const serverDate = `${day}-${month}-${year}`;\r\n\r\n flatpickr(this.receivedDatePicker, {\r\n closeOnSelect: true,//new Date().toISOString().split(\"T\")[0]\r\n dateFormat: 'd-m-Y', // the date format (default is 'Y-m-d')\r\n minDate: this.GeneratedDT, // the minimum selectable date in the calendar (default is null, which means no limit)\r\n maxDate: serverDate, // the maximum selectable date in the calendar (default is null, which means no limit)\r\n defaultDate: ' ', // the initial date that should be shown in the calendar (default is null, which means today's date)\r\n enableTime: false, // whether to allow selecting time in addition to date\r\n enableSeconds: false, // whether to allow selecting seconds in addition to time\r\n time_24hr: false, // whether to use a 24-hour clock for time input\r\n minuteIncrement: 1, // the increment for minutes in the time input\r\n hourIncrement: 1, // the increment for hours in the time input\r\n timeFormat: 'h:i K', // the format for the time input (default is 'h:i K' for 12-hour clock and 'H:i' for 24-hour clock)\r\n clickOpens:false,\r\n onClose: function (selectedDates, dateStr, instance) {\r\n this.ReceivedDate = dateStr;\r\n }\r\n });\r\n console.log(this.sentDate);\r\n this.ReceivedcalendarIcon.addEventListener('click', () => {\r\n this.receivedDatePicker._flatpickr.open();\r\n });\r\n })\r\n const EditAckData = await this.profileService.EditUploadAck(this.EmployeeLettercommunicationhistoryID);\r\n this.EditAck = await EditAckData;\r\n console.log(this.EditAck);\r\n this.sentDate = this.EditAck.SentDT;\r\n this.receivedDate = this.EditAck.AckReceivedDT;\r\n this.documentFileName = this.EditAck.AcknowledgementName;\r\n this.file = this.EditAck.AcknowledgementPath;\r\n this.upload = \"required\";\r\n this.fileValidator();\r\n }\r\n\r\n fileValidator(){\r\n const fileInput = document.querySelector('input[type=\"file\"]');\r\n const allowedTypes = ['image/jpeg', 'image/png','application/msword','application/pdf'];\r\n fileInput.addEventListener('change', (event) => {\r\n const file = event.target.files[0];\r\n const fileType = file.type;\r\n if (!allowedTypes.includes(fileType)) {\r\n this.fileMessage=\"Only JPEG, PNG, PDF and DOC files are allowed.\";\r\n this.fileValidatorRule = true;\r\n } else {\r\n this.fileMessage=null;\r\n this.fileValidatorRule = false;\r\n }\r\n });\r\n }\r\n\r\n handleFileSelect(files) {\r\n this.uploadErrors = [];\r\n this.viewFile = false;\r\n const file = files[0];\r\n this.file = file;\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n this.documentFileName = file.name;\r\n reader.onload = () => {\r\n this.file = reader.result;\r\n this.ackreq = false;\r\n };\r\n}\r\nopenFileDialog() {\r\n document.getElementById('attachments').click();\r\n}\r\n\r\nremoveFile() {\r\n\r\n this.file = null;\r\n this.documentFileName = '';\r\n const fileInput = document.getElementById('attachments');\r\n if (fileInput) {\r\n fileInput.value = ''; // Clear the file input value\r\n }\r\n}\r\n\r\ndownloadFile() {\r\n const downloadUrl = this.URL + this.file;\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.target = '_blank';\r\n link.download = downloadUrl;\r\n link.click();\r\n}\r\n\r\n saveAck(){\r\n if(this.documentFileName == ''){\r\n this.ackreq = true;\r\n }else{\r\n this.controllerFactory.validate()\r\n .then(result => {\r\n if (result.valid) {\r\n this.ackreq = false;\r\n const EditAckData = {\r\n EmployeeLettercommunicationhistoryID : this.EmployeeLettercommunicationhistoryID,\r\n EmployeeID : this.Employeeid,\r\n AckReceivedDT : this.receivedDate,\r\n AcknowledgementPath : this.file,\r\n AcknowledgementName : this.documentFileName\r\n }\r\n this.profileService.PostUploadAck(EditAckData)\r\n .then(() =>{\r\n this.controller.ok(true);\r\n });\r\n }\r\n }) \r\n }\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n \r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport {DialogService} from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport * as tinymce from 'tinymce';\r\nimport { Previewletter } from '../PreviewLetter/previewletter';\r\nimport Scrollbar from 'smooth-scrollbar';\r\n\r\n@inject(ProfileService,JwtService,DialogController,DialogService)\r\nexport class Editletter {\r\n\r\n previewContentData = '';\r\n \r\n constructor(ProfileService,JwtService,DialogController,DialogService) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.controller = DialogController;\r\n this.dialogService = DialogService;\r\n\r\n this.Employeeid = this.jwtService.getEmployeeId();\r\n }\r\n\r\n activate(Data) {\r\n this.EditData = Data;\r\n this.lettername = this.EditData.TemplateName;\r\n this.letterSubject = this.EditData.Subject;\r\n this.editorContent = this.EditData.Content;\r\n this.letterId = this.EditData.EmployeeLetterID;\r\n }\r\n\r\n attached() {\r\n tinymce.init({\r\n selector: '#content',\r\n toolbar: 'undo redo | code | image imagetools media filemanager | blocks fontfamily fontsize | bold italic underline strikethrough | preview | table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | align lineheight | checklist numlist bullist indent outdent | emoticons charmap | removeformat | fullscreen | codesample',\r\n plugins: 'code image imagetools media filemanager preview fullscreen codesample',\r\n\r\n setup: editor => {\r\n editor.on('init', () => {\r\n this.editor = editor;\r\n this.editorContent = '';\r\n });\r\n editor.on('change', () => {\r\n this.editorContent = editor.getContent();\r\n });\r\n editor.ui.registry.addButton('preview', {\r\n text: 'Preview',\r\n onAction: () => {\r\n editor.execCommand('mcePreview');\r\n }\r\n });\r\n },\r\n /* enable title field in the Image dialog*/\r\n image_title: true,\r\n /* enable automatic uploads of images represented by blob or data URIs*/\r\n automatic_uploads: true,\r\n file_picker_types: 'image',\r\n /* and here's our custom image picker*/\r\n file_picker_callback: (cb, value, meta) => {\r\n const input = document.createElement('input');\r\n input.setAttribute('type', 'file');\r\n input.setAttribute('accept', 'image/*');\r\n \r\n input.addEventListener('change', (e) => {\r\n const file = e.target.files[0];\r\n \r\n const reader = new FileReader();\r\n reader.addEventListener('load', () => {\r\n const id = 'blobid' + (new Date()).getTime();\r\n const blobCache = tinymce.activeEditor.editorUpload.blobCache;\r\n const base64 = reader.result.split(',')[1];\r\n const blobInfo = blobCache.create(id, file, base64);\r\n blobCache.add(blobInfo);\r\n /* call the callback and populate the Title field with the file name */\r\n cb(blobInfo.blobUri(), { title: file.name });\r\n });\r\n reader.readAsDataURL(file);\r\n });\r\n \r\n input.click();\r\n },\r\n content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:16px }'\r\n });\r\n this.previewContentData = this.editorContent;\r\n\r\n // setTimeout(()=>{ \r\n // Scrollbar.init(document.querySelector('.editletter-scrollbar'));\r\n // },1000)\r\n}\r\n\r\npreviewLetter(){\r\n const ToPreviewCurrentContent = this.previewContentData ? this.previewContentData : (this.editorContent ? this.editorContent + this.previewContentData : null);\r\n const previewData = {\r\n Content : ToPreviewCurrentContent,\r\n };\r\n tinymce.activeEditor.execCommand('mcePreview');\r\n //this.dialogService.open({viewModel:Previewletter,model:previewData})\r\n}\r\n\r\nGenerateLetter(){\r\n const NewLetterData = {\r\n TemplateName : this.lettername,\r\n Subject : this.letterSubject,\r\n Content : this.editorContent,\r\n SendAcknowledgementEmpIND : false,\r\n DisciplinaryActionID : null,\r\n EmployeeLetterID : this.letterId,\r\n EmployeeID :this.Employeeid\r\n };\r\n this.profileService.SaveEmployeeLetter(NewLetterData)\r\n .then(response => {\r\n this.controller.ok(true);\r\n })\r\n}\r\n\r\ncancel() {\r\n this.controller.cancel();\r\n}\r\n\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport {DialogService} from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport * as tinymce from 'tinymce';\r\nimport { Previewletter } from '../PreviewLetter/previewletter';\r\n\r\n@inject(ProfileService,JwtService,DialogController,DialogService)\r\nexport class Generateletter {\r\n previewContentData = '';\r\n \r\n constructor(ProfileService,JwtService,DialogController,DialogService) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.controller = DialogController;\r\n this.dialogService = DialogService;\r\n\r\n this.Employeeid = this.jwtService.getEmployeeId();\r\n }\r\n\r\n activate(Data) {\r\n this.EditData = Data;\r\n this.lettername = this.EditData.TemplateName;\r\n this.letterSubject = this.EditData.Subject;\r\n this.editorContent = this.EditData.Content;\r\n this.letterId = this.EditData.EmployeeLetterID;\r\n }\r\n\r\n attached() {\r\n tinymce.init({\r\n selector: '#content',\r\n toolbar: 'undo redo | blocks fontfamily fontsize | bold italic underline strikethrough | link image media table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | align lineheight | checklist numlist bullist indent outdent | emoticons charmap | removeformat | code',\r\n plugins: 'code image imagetools media',\r\n setup: editor => {\r\n editor.on('init', () => {\r\n this.editor = editor;\r\n this.editorContent = '';\r\n });\r\n editor.on('change', () => {\r\n this.editorContent = editor.getContent();\r\n });\r\n },\r\n });\r\n this.previewContentData = this.editorContent;\r\n}\r\n\r\npreviewLetter(){\r\n const ToPreviewCurrentContent = this.previewContentData ? this.previewContentData : (this.editorContent ? this.editorContent + this.previewContentData : null);\r\n const previewData = {\r\n Content : ToPreviewCurrentContent,\r\n };\r\n this.dialogService.open({viewModel:Previewletter,model:previewData})\r\n}\r\n\r\nGenerateLetter(){\r\n const NewLetterData = {\r\n TemplateName : this.lettername,\r\n Subject : this.letterSubject,\r\n Content : this.editorContent,\r\n SendAcknowledgementEmpIND : false,\r\n DisciplinaryActionID : null,\r\n EmployeeID :this.Employeeid,\r\n EmployeeLetterID : this.letterId\r\n };\r\n this.profileService.SaveEmployeeLetter(NewLetterData)\r\n .then(response => {\r\n this.controller.ok(true);\r\n })\r\n}\r\n\r\ncancel() {\r\n this.controller.cancel();\r\n}\r\n \r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport {DialogService} from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport * as tinymce from 'tinymce';\r\n\r\n@inject(ProfileService,JwtService,DialogController,DialogService)\r\nexport class Previewedit {\r\n \r\n constructor(ProfileService,JwtService,DialogController,DialogService) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.controller = DialogController;\r\n this.dialogService = DialogService;\r\n }\r\n\r\n activate(editLetterData){\r\n this.editorContent = editLetterData;\r\n }\r\n\r\n attached() {\r\n const textarea = document.getElementById('content');\r\n tinymce.init({\r\n selector: `#${textarea.id}`,\r\n //toolbar: 'undo redo | blocks fontfamily fontsize | bold italic underline strikethrough | link image media table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | align lineheight | checklist numlist bullist indent outdent | emoticons charmap | removeformat',\r\n toolbar: 'undo redo | blocks fontfamily fontsize | bold italic underline strikethrough | link image media table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | align lineheight | checklist numlist bullist indent outdent | emoticons charmap | removeformat | code',\r\n setup: editor => {\r\n editor.on('init', () => {\r\n this.editor = editor;\r\n this.editorContent = '';\r\n });\r\n editor.on('change', () => {\r\n this.editorContent = editor.getContent();\r\n if (typeof this.editorContent === 'string') {\r\n const tempElement = document.createElement('div');\r\n tempElement.innerHTML = this.editorContent;\r\n this.EditorData = tempElement.textContent || tempElement.innerText;\r\n } else {\r\n this.EditorData = this.editorContent;\r\n }\r\n });\r\n },\r\n });\r\n}\r\n\r\ndetached() {\r\n tinymce.remove(this.editor);\r\n}\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n \r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport {DialogService} from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport { Previewedit } from '../PreviewEdit/previewedit';\r\n\r\n@inject(ProfileService,JwtService,DialogController,DialogService)\r\nexport class Previewletter {\r\n \r\n constructor(ProfileService,JwtService,DialogController,DialogService) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.controller = DialogController;\r\n this.dialogService = DialogService;\r\n }\r\n\r\n activate(previewData){\r\n this.content = previewData.Content;\r\n }\r\n\r\n previewEdit(){\r\n this.dialogService.open({viewModel:Previewedit,model: this.content});\r\n }\r\n\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n \r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport 'flatpickr/dist/flatpickr.min.css';\r\nimport flatpickr from 'flatpickr';\r\nimport { config } from '../../../../shared/services/config';\r\nimport {ValidationControllerFactory, ValidationRules} from 'aurelia-validation';\r\n\r\n@inject(ProfileService,JwtService,DialogController,ValidationControllerFactory)\r\nexport class Sendtoemployee {\r\n \r\n options = [];\r\n SelectedMode = '';\r\n ChangeMode = '';\r\n mailBlocks = false;\r\n EmailBlocks = false;\r\n SentDateBlock = true;\r\n DefaultData = [];\r\n\r\n constructor(ProfileService,JwtService,DialogController,controllerFactory) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.controller = DialogController;\r\n this.controllerFactory = controllerFactory.createForCurrentScope();\r\n\r\n this.EmployeeId = this.jwtService.getEmployeeId();\r\n\r\n ValidationRules.customRule(\r\n 'validEmails',\r\n (value, obj) => {\r\n if (typeof value !== 'string') {\r\n return false;\r\n }\r\n const emails = value.split(',');\r\n\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n const invalidEmails = [];\r\n for (const email of emails) {\r\n const trimmedEmail = email.trim();\r\n if (!emailRegex.test(trimmedEmail)) {\r\n invalidEmails.push(trimmedEmail);\r\n }\r\n }\r\n // Check if any emails are invalid\r\n if (invalidEmails.length > 0) {\r\n obj.emailsErrors = ['Invalid email address(es)'];\r\n return false;\r\n }\r\n // Check if emails are separated by commas\r\n if (emails.length > 1 && value.indexOf(',') === -1) {\r\n obj.emailsErrors = ['Email(s) should be separated by commas'];\r\n return false;\r\n }\r\n obj.emailsErrors = [];\r\n return true;\r\n },\r\n '${$displayName} is invalid.',\r\n (obj) => ({\r\n obj\r\n })\r\n );\r\n\r\n ValidationRules\r\n .ensure('SelectedMode').required().withMessage('Send mode is required')\r\n .ensure('SentDate').required().withMessage('Sent date is required')\r\n .ensure('address').required().withMessage('Address is required')\r\n .ensure('Comments').required().withMessage('Comment is required')\r\n .ensure('emails').required().withMessage('To email id(s) field is required').then()\r\n .satisfiesRule('validEmails')\r\n .ensure('subject').required().withMessage('Subject is required')\r\n .ensure('body').required().withMessage('Body is required')\r\n .on(this);\r\n }\r\n\r\n activate(LetterData){\r\n this.letterId = LetterData.EmployeeLetterID;\r\n this.disciplinaryId = LetterData.DisciplinaryActionID;\r\n this.generatedDate = LetterData.GeneratedDT;\r\n this.letterPath = LetterData.Path;\r\n this.letterName = LetterData.DisplayFileName;\r\n }\r\n\r\n async attached(){\r\n flatpickr(this.SentDatePicker, {\r\n closeOnSelect: true,//new Date().toISOString().split(\"T\")[0]\r\n dateFormat: 'd-m-Y', // the date format (default is 'Y-m-d')\r\n minDate: null, // the minimum selectable date in the calendar (default is null, which means no limit)\r\n maxDate: 'today', // the maximum selectable date in the calendar (default is null, which means no limit)\r\n defaultDate: null, // the initial date that should be shown in the calendar (default is null, which means today's date)\r\n enableTime: false, // whether to allow selecting time in addition to date\r\n enableSeconds: false, // whether to allow selecting seconds in addition to time\r\n time_24hr: false, // whether to use a 24-hour clock for time input\r\n minuteIncrement: 1, // the increment for minutes in the time input\r\n hourIncrement: 1, // the increment for hours in the time input\r\n timeFormat: 'h:i K', // the format for the time input (default is 'h:i K' for 12-hour clock and 'H:i' for 24-hour clock)\r\n clickOpens:false,\r\n onClose: function (selectedDates, dateStr, instance) {\r\n this.SentDate = dateStr;\r\n }\r\n });\r\n this.SentDatePickerIcon.addEventListener('click', () => {\r\n this.SentDatePicker._flatpickr.open();\r\n });\r\n\r\n const LetterSendModesData = await this.profileService.GetLetterSendModes();\r\n this.LetterSendModes = await LetterSendModesData;\r\n this.options = Object.entries(this.LetterSendModes).map(([key, value]) => ({ value, key }));\r\n\r\n }\r\n\r\n async SetEmployeeMode(mode){\r\n this.sentMode = parseInt(mode);\r\n const sendModesDefaultdata = await this.profileService.GetDefaultDataForSendModes(this.EmployeeId);\r\n this.DefaultData = await sendModesDefaultdata;\r\n if(mode == 1){\r\n this.mailBlocks = true;\r\n this.address = this.DefaultData.Address;\r\n }else if(mode == 2){\r\n this.EmailBlocks = true;\r\n this.emails = this.DefaultData.PersonEmailID;\r\n this.SentDateBlock = false;\r\n this.mailBlocks = false;\r\n }\r\n else{\r\n this.mailBlocks = false;\r\n this.EmailBlocks = false;\r\n this.SentDateBlock = true;\r\n } \r\n }\r\n\r\n downloadFile() {\r\n const downloadUrl = config.api_img_url + this.letterPath;\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.target = '_blank';\r\n link.download = downloadUrl;\r\n link.click();\r\n }\r\n\r\n sendEmployee(){\r\n this.errors = null;\r\n this.controllerFactory.validate()\r\n .then(result => {\r\n if (result.valid) {\r\n const sendEmployeeData = {\r\n EmployeeID : this.EmployeeId,\r\n EmployeeLetterID : this.letterId,\r\n SentMode : this.sentMode,\r\n SentDT : this.SentDate ? this.SentDate : null,\r\n ToEMail : this.emails ? this.emails : null,\r\n CcEmail : this.Ccemails ? this.Ccemails : null,\r\n Address : this.address ? this.address : null,\r\n Subject : this.subject ? this.subject : null,\r\n Body : this.body ? this.body : null,\r\n Comments : this.Comments ? this.Comments : null,\r\n LetterName : this.letterName,\r\n DocumentPath : this.letterPath,\r\n AckReceivedDT : \"\",\r\n AcknowledgementPath : \"\",\r\n SendAcknowledgementEmpIND : this.EmployeeAcknowledge,\r\n // EmployeeLetterID : \"\",\r\n }\r\n this.profileService.GetPostEmployeeLetter(sendEmployeeData)\r\n .then(() => {\r\n this.controller.ok(true);\r\n });\r\n }\r\n })\r\n \r\n }\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n \r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport {validateTrigger, ValidationControllerFactory, ValidationRules} from 'aurelia-validation';\r\nimport { DashboardService } from '../../../../shared/services/dashboardservice';\r\nimport 'flatpickr/dist/flatpickr.min.css';\r\nimport flatpickr from 'flatpickr';\r\n\r\n@inject(ProfileService,JwtService,DialogController,ValidationControllerFactory,DashboardService)\r\nexport class Uploadacknowledgement {\r\n \r\n ReceivedDate = '';\r\n uploadedFiles = [];\r\n\r\n constructor(ProfileService,JwtService,DialogController,controllerFactory,DashboardService) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.controller = DialogController;\r\n this.dashboardService = DashboardService\r\n this.controllerFactory = controllerFactory.createForCurrentScope();\r\n this.controllerFactory.validateTrigger = validateTrigger.change;\r\n this.Employeeid = this.jwtService.getEmployeeId();\r\n\r\n ValidationRules.customRule(\r\n 'file',\r\n () =>{\r\n if(this.fileValidatorRule === true){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n },\r\n );\r\n ValidationRules\r\n .ensure('receivedDate').required().withMessage('Received date is required')\r\n .ensure('upload').required().withMessage('Acknowledgement is required')\r\n .on(this);\r\n }\r\n activate(data){\r\n console.log(data);\r\n this.EmployeeLettercommunicationhistoryID = data.EmployeeLettercommunicationhistoryID;\r\n this.sentDate = data.SentDT;\r\n this.GeneratedDate=data.GeneratedDT;\r\n console.log(this.GeneratedDate );\r\n this.ackName = data;\r\n this.SentModeText = data.SentModeText;\r\n }\r\n attached() {\r\n this.dashboardService.GetDashboardDetails(this.Employeeid).then(data => {\r\n const apiDatetimeStr = data.CurrentDate;\r\n const apiDatetime = new Date(apiDatetimeStr);\r\n const day = apiDatetime.getDate().toString().padStart(2, \"0\");\r\n const month = (apiDatetime.getMonth() + 1).toString().padStart(2, \"0\");\r\n const year = apiDatetime.getFullYear().toString();\r\n const serverDate = `${day}-${month}-${year}`;\r\n\r\n flatpickr(this.receivedDatePicker, {\r\n closeOnSelect: true,//new Date().toISOString().split(\"T\")[0]\r\n dateFormat: 'd-m-Y', // the date format (default is 'Y-m-d')\r\n minDate: this.GeneratedDate, // the minimum selectable date in the calendar (default is null, which means no limit)\r\n maxDate: serverDate, // the maximum selectable date in the calendar (default is null, which means no limit)\r\n defaultDate:' ',\r\n enableTime: false, // whether to allow selecting time in addition to date\r\n enableSeconds: false, // whether to allow selecting seconds in addition to time\r\n time_24hr: false, // whether to use a 24-hour clock for time input\r\n minuteIncrement: 1, // the increment for minutes in the time input\r\n hourIncrement: 1, // the increment for hours in the time input\r\n timeFormat: 'h:i K', // the format for the time input (default is 'h:i K' for 12-hour clock and 'H:i' for 24-hour clock)\r\n clickOpens:false,\r\n onClose: function (selectedDates, dateStr, instance) {\r\n this.ReceivedDate = dateStr;\r\n console.log(this.ReceivedDate);\r\n }\r\n });\r\n this.ReceivedcalendarIcon.addEventListener('click', () => {\r\n this.receivedDatePicker._flatpickr.open();\r\n });\r\n })\r\n this.fileValidator();\r\n }\r\n fileValidator(){\r\n const fileInput = document.querySelector('input[type=\"file\"]');\r\n const allowedTypes = ['image/jpeg', 'image/png','application/msword','application/pdf'];\r\n fileInput.addEventListener('change', (event) => {\r\n const file = event.target.files[0];\r\n const fileType = file.type;\r\n if (!allowedTypes.includes(fileType)) {\r\n this.fileMessage=\"Only JPEG, PNG, PDF and DOC files are allowed.\";\r\n this.fileValidatorRule = true;\r\n } else {\r\n this.fileMessage=null;\r\n this.fileValidatorRule = false;\r\n }\r\n });\r\n }\r\n openFileDialog() {\r\n document.getElementById('attachments').click();\r\n }\r\n handleFileSelect(files) {\r\n const file = files[0];\r\n this.file = file;\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n this.DocumentName = file.name;\r\n reader.onload = () => {\r\n this.file = reader.result;\r\n };\r\n }\r\n removeFile() {\r\n this.file = null;\r\n this.DocumentName = '';\r\n const fileInput = document.getElementById('attachments');\r\n if (fileInput) {\r\n fileInput.value = ''; // Clear the file input value\r\n }\r\n }\r\n saveAck(){\r\n this.controllerFactory.validate()\r\n .then(result => {\r\n if (result.valid) {\r\n const AckData = {\r\n EmployeeLettercommunicationhistoryID : this.EmployeeLettercommunicationhistoryID,\r\n EmployeeID : this.Employeeid,\r\n AckReceivedDT : this.receivedDate,\r\n AcknowledgementPath : this.file,\r\n AcknowledgementName : this.DocumentName\r\n }\r\n this.profileService.PostUploadAck(AckData)\r\n .then(() =>{\r\n this.controller.ok(true);\r\n });\r\n }\r\n })\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n validateField(data){\r\n if(data)\r\n {\r\n this.controllerFactory.clear();\r\n }\r\n ValidationRules\r\n .ensure('receivedDate').required().withMessage('Received date is required')\r\n .ensure('upload').required().withMessage('Acknowledgement is required')\r\n .on(this);\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { config } from '../../../../shared/services/config';\r\n\r\n@inject(ProfileService,DialogController,JwtService)\r\nexport class Viewacknowledgement {\r\n \r\n URL= config.img_url;\r\n\r\n constructor(ProfileService,DialogController,JwtService) {\r\n this.profileService = ProfileService;\r\n this.controller = DialogController;\r\n this.jwtService = JwtService;\r\n\r\n this.Employeeid = this.jwtService.getEmployeeId();\r\n }\r\n\r\n activate(viewAckData) {\r\n this.sentDate = viewAckData.SentDT;\r\n this.File = viewAckData.AcknowledgementPath;\r\n this.SentModeText = viewAckData.SentModeText;\r\n this.EmployeeLettercommunicationhistoryID = viewAckData.EmployeeLettercommunicationhistoryID;\r\n }\r\n\r\n async attached() {\r\n const EditAckData = await this.profileService.EditUploadAck(this.EmployeeLettercommunicationhistoryID);\r\n this.EditAck = await EditAckData;\r\n this.DisplayFileName = this.EditAck.AcknowledgementName;\r\n this.receivedDate = this.EditAck.AckReceivedDT;\r\n }\r\n\r\n downloadFile() {\r\n const downloadUrl = this.URL+ this.File;\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.target = '_blank';\r\n link.download = downloadUrl;\r\n link.click();\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n \r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport {config} from '../../../../shared/services/config'\r\n\r\n@inject(DialogController)\r\nexport class Viewletter {\r\n URL= config.img_url;\r\n \r\n constructor(DialogController) {\r\n this.controller = DialogController;\r\n }\r\n\r\n activate(viewLetterData) {\r\n this.editorContent = viewLetterData.Content;\r\n this.File = viewLetterData.Path;\r\n this.DisplayFileName = viewLetterData.DisplayFileName;\r\n }\r\n\r\n downloadFile() {\r\n const downloadUrl = this.URL+ this.File;\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.target = '_blank';\r\n link.download = downloadUrl;\r\n link.click();\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n \r\n}\r\n","import {inject } from 'aurelia-framework';\r\nimport { ProfileService } from '../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../shared/services/jwtservice';\r\nimport {DialogService, DialogController} from 'aurelia-dialog';\r\nimport { Addletter } from \"./AddLetter/addletter\";\r\nimport { Editletter } from './EditLetter/editletter';\r\nimport { Viewletter } from './ViewLetter/viewletter';\r\nimport { Sendtoemployee } from './SendToEmployee/sendtoemployee';\r\nimport { Generateletter } from './GenerateLetter/generateletter';\r\nimport { Uploadacknowledgement } from './UploadAcknowledgement/uploadacknowledgement';\r\nimport { Editacknowledgement } from './EditAcknowledgement/editacknowledgement';\r\nimport { Viewacknowledgement } from './ViewAcknowledgement/viewacknowledgement';\r\nimport { AlertpopupComponent } from '../../alertpopup/alertpopupcomponent';\r\nimport Scrollbar from 'smooth-scrollbar';\r\nimport {config} from '../../../shared/services/config';\r\n\r\n@inject(ProfileService,JwtService,DialogService,DialogController)\r\nexport class Employeeletters {\r\n pageSize = config.grid_PazeSize;\r\n topicsPageSize=10;\r\n showSendToEmployee = false;\r\n letterMessages = false;\r\n \r\n constructor(ProfileService,JwtService,DialogService,DialogController) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.dialogService = DialogService;\r\n this.dialogController = DialogController;\r\n\r\n this.EmployeeId = this.jwtService.getEmployeeId();\r\n }\r\n\r\n async attached() {\r\n this.refreshGrids();\r\n const sendModesDefaultdata = await this.profileService.GetDefaultDataForSendModes(this.EmployeeId);\r\n this.DefaultData = await sendModesDefaultdata;\r\n\r\n setTimeout(() => {\r\n const windowWidth = window.innerWidth;\r\n if (windowWidth <= 1280) {\r\n Scrollbar.init(document.querySelector('.employee-letter-scrollbar'));\r\n Scrollbar.init(document.querySelector('.employee-letter-history'));\r\n }\r\n }, 100);\r\n }\r\n\r\n async refreshGrids(){\r\n const EmployeeLettersData = await this.profileService.GetEmployeeLetters(this.EmployeeId);\r\n this.EmployeeLetters = await EmployeeLettersData;\r\n const EmployeeLetterCommunicationHistory = await this.profileService.GetEmployeeLetterCommunicationHistory(this.EmployeeId);\r\n this.CommunicationHistoryData = await EmployeeLetterCommunicationHistory;\r\n }\r\n\r\n addLetter(){\r\n this.dialogService.open({viewModel:Addletter})\r\n .whenClosed((feedback) => {\r\n if(!feedback.wasCancelled){\r\n this.refreshGrids();\r\n this.LetterMessage = 'Employee letter generated successfully.';\r\n this.letterMessages = true;\r\n setTimeout(() => {this.LetterMessage = null}, 3000);\r\n }\r\n });\r\n }\r\n editLetter(editdata){\r\n this.dialogService.open({viewModel:Editletter,model: editdata})\r\n .whenClosed((feedback) => {\r\n if(!feedback.wasCancelled){\r\n this.refreshGrids();\r\n this.LetterMessage = 'Employee letter updated successfully.';\r\n this.letterMessages = true;\r\n setTimeout(() => {this.LetterMessage = null}, 3000);\r\n }\r\n });\r\n }\r\n viewLetter(viewdata){\r\n this.dialogService.open({viewModel:Viewletter,model: viewdata})\r\n }\r\n\r\n async deleteLetter(data) {\r\n const LetterID = data.EmployeeLetterID;\r\n const result = await this.dialogService.open({\r\n viewModel: AlertpopupComponent,\r\n model: \"\",\r\n }).whenClosed(response => response);\r\n if (result.wasCancelled) {\r\n return;\r\n }\r\n await this.profileService.DeleteEmployeeLetter(LetterID, this.EmployeeId);\r\n this.refreshGrids();\r\n this.LetterMessage = 'Employee letter deleted successfully';\r\n this.letterMessages = true;\r\n setTimeout(() => {this.LetterMessage = null}, 3000);\r\n }\r\n\r\n sendtoEmployee(data){\r\n this.dialogService.open({viewModel:Sendtoemployee,model:data})\r\n .whenClosed((feedback) => {\r\n if(!feedback.wasCancelled){\r\n this.refreshGrids();\r\n this.LetterMessage = 'Letter sent successfully.';\r\n this.letterMessages = true;\r\n setTimeout(() => {this.LetterMessage = null}, 3000);\r\n }\r\n });\r\n }\r\n\r\n generateLetter(data){\r\n this.dialogService.open({viewModel:Generateletter,model:data})\r\n .whenClosed((feedback) => {\r\n if (!feedback.wasCancelled) {\r\n const feedbackData = feedback.output;\r\n } else {\r\n }\r\n });\r\n }\r\n uploadAck(data){\r\n this.dialogService.open({viewModel:Uploadacknowledgement,model:data})\r\n .whenClosed((feedback) => {\r\n if(!feedback.wasCancelled){\r\n this.refreshGrids();\r\n this.LetterMessage = 'Acknowledgement uploaded successfully.';\r\n this.letterMessages = true;\r\n setTimeout(() => {this.LetterMessage = null}, 3000);\r\n }\r\n });\r\n\r\n }\r\n editAck(data){\r\n this.dialogService.open({viewModel:Editacknowledgement,model:data})\r\n .whenClosed((feedback) => {\r\n if(!feedback.wasCancelled){\r\n this.refreshGrids();\r\n this.LetterMessage = 'Acknowledgement uploaded successfully.';\r\n this.letterMessages = true;\r\n setTimeout(() => {this.LetterMessage = null}, 3000);\r\n }\r\n });\r\n }\r\n viewAck(data){\r\n this.dialogService.open({viewModel:Viewacknowledgement,model:data})\r\n }\r\n\r\ntoggleDropdown($event, letter) {\r\n const isDropdownOpen = letter.showDropdown;\r\n this.$displayData.forEach((item) => {\r\n item.showDropdown = false;\r\n });\r\n if (!isDropdownOpen) {\r\n letter.showDropdown = true;\r\n document.addEventListener('click', this.closeDropdown);\r\n }\r\n $event.stopPropagation();\r\n\r\n // setTimeout(()=>{\r\n // var dropdowns = document.getElementsByClassName(\"dropdown\");\r\n // for (var i = 0; i < dropdowns.length; i++) {\r\n // var dropdown = dropdowns[i];\r\n // var rect = dropdown.getBoundingClientRect();\r\n // var windowHeight = window.innerHeight || document.documentElement.clientHeight;\r\n // if (rect.bottom > windowHeight) {\r\n // dropdown.classList.add(\"upwards\");\r\n // } else{\r\n // dropdown.classList.remove(\"upwards\");\r\n // }\r\n // }\r\n // },50)\r\n}\r\n\r\ncloseDropdown = () => {\r\n this.$displayData.forEach((item) => {\r\n item.showDropdown = false;\r\n });\r\n document.removeEventListener('click', this.closeDropdown);\r\n}\r\n\r\ntoggleHistoryDropdown($event, history) {\r\n const isDropdownOpen = history.showHistoryDropdown;\r\n this.$topicData.forEach((item) => {\r\n item.showHistoryDropdown = false;\r\n });\r\n if (!isDropdownOpen) {\r\n history.showHistoryDropdown = true;\r\n document.addEventListener('click', this.closeHistoryDropdown);\r\n }\r\n $event.stopPropagation();\r\n\r\n // setTimeout(()=>{\r\n // var dropdowns = document.getElementsByClassName(\"historydropdown\");\r\n // for (var i = 0; i < dropdowns.length; i++) {\r\n // var dropdown = dropdowns[i];\r\n // var rect = dropdown.getBoundingClientRect();\r\n // var windowHeight = window.innerHeight || document.documentElement.clientHeight;\r\n // if (rect.bottom > windowHeight) {\r\n // dropdown.classList.add(\"upwards\");\r\n // } else{\r\n // dropdown.classList.remove(\"upwards\");\r\n // }\r\n // }\r\n // },50)\r\n}\r\n\r\ncloseHistoryDropdown = () => {\r\n this.$topicData.forEach((item) => {\r\n item.showHistoryDropdown = false;\r\n });\r\n document.removeEventListener('click', this.closeHistoryDropdown);\r\n}\r\n\r\n\r\n//use these below functions when need to add separate view dropdown \r\nviewtoggleDropdown($event, letter) {\r\n const isDropdownOpen = letter.ViewshowDropdown;\r\n this.$displayData.forEach((item) => {\r\n item.ViewshowDropdown = false;\r\n });\r\n if (!isDropdownOpen) {\r\n letter.ViewshowDropdown = true;\r\n document.addEventListener('click', this.viewCloseDropdown);\r\n }\r\n $event.stopPropagation();\r\n}\r\nviewCloseDropdown = () => {\r\n this.$displayData.forEach((item) => {\r\n item.ViewshowDropdown = false;\r\n });\r\n document.removeEventListener('click', this.viewCloseDropdown);\r\n};\r\n\r\nviewHistorytoggleDropdown($event, history) {\r\n const isDropdownOpen = history.ViewHistoryshowDropdown;\r\n this.$topicData.forEach((item) => {\r\n item.ViewHistoryshowDropdown = false;\r\n });\r\n if (!isDropdownOpen) {\r\n history.ViewHistoryshowDropdown = true;\r\n document.addEventListener('click', this.viewHistoryCloseDropdown);\r\n }\r\n $event.stopPropagation();\r\n}\r\nviewHistoryCloseDropdown = () => {\r\n this.$topicData.forEach((item) => {\r\n item.ViewHistoryshowDropdown = false;\r\n });\r\n document.removeEventListener('click', this.viewHistoryCloseDropdown);\r\n};\r\n \r\n}\r\n","import { ProfileService } from \"../../../shared/services/profielservice\";\r\nimport { JwtService } from \"../../../shared/services/jwtservice\";\r\nimport {inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {LoginService} from \"../../../shared/services/loginservice\";\r\n\r\n@inject(ProfileService,JwtService,Router,LoginService)\r\nexport class Generalinformation {\r\n constructor(ProfileService,JwtService,router,loginService) {\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.router = router;\r\n this.loginService = loginService;\r\n }\r\n attached(params) {\r\n\r\n // const empid = this.jwtService.getEmployeeId();\r\n var empid ='';\r\n const id = this.router.currentInstruction.queryParams.id;\r\n if(id != null && id !='')\r\n {\r\n empid=id;\r\n }\r\n else{\r\n empid=this.jwtService.getEmployeeId();\r\n }\r\n this.profileService.EmployeeDetails(empid).then(data => {\r\n this.generalInformation=data;\r\n });\r\n }\r\n}\r\n","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../../images/datepicker.svg\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../../images/datepicker.svg\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../../images/datepicker.svg\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../images/more-icon.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_1___ = new URL(\"../../../images/password-show.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_2___ = new URL(\"../../../images/send-employee.png\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_3___ = new URL(\"../../../images/edit.svg\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar ___HTML_LOADER_REPLACEMENT_1___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_1___);\nvar ___HTML_LOADER_REPLACEMENT_2___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_2___);\nvar ___HTML_LOADER_REPLACEMENT_3___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_3___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}