diff --git a/src/app/models/dailyworktask.model.ts b/src/app/models/dailyworktask.model.ts index 21c00621a..0a975bf00 100644 --- a/src/app/models/dailyworktask.model.ts +++ b/src/app/models/dailyworktask.model.ts @@ -63,6 +63,7 @@ export class fullTask { UserName: string, WorkflowID: string, wxUserID: number, + DraftIds: string } Documents: any[] workflowInstanceFolio: string diff --git a/src/app/models/envarioment.ts b/src/app/models/envarioment.ts index 18e003fbd..889d32a02 100644 --- a/src/app/models/envarioment.ts +++ b/src/app/models/envarioment.ts @@ -3,6 +3,7 @@ export interface Environment { apiURL: string; apiChatUrl: string; apiWsChatUrl: string; + apiPCURL: string; logoLabel: string; production: boolean; domain: string; diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html index 599a4ae46..4de894840 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html @@ -63,8 +63,8 @@
Documentos Anexados
- - + +

{{ Document.Assunto || "Sem assunto" }}

{{ Document.Sender}}{{ Document.DocDate | date: 'dd-MM-yyyy HH:mm' }}

diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts index ffc5ce1b1..cef783aa9 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts @@ -21,6 +21,7 @@ import { ThemeService } from 'src/app/services/theme.service' import { RouteService } from 'src/app/services/route.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { TaskService } from 'src/app/services/task.service' +import { TinyMCEPage } from 'src/app/tiny-mce/tiny-mce.page'; @Component({ @@ -39,6 +40,7 @@ export class DespachoPage implements OnInit { attachments: any; fulltask: any; + mergedArray: any = []; eventsList: Event[] = []; serialnumber: string; caller: string; @@ -47,6 +49,7 @@ export class DespachoPage implements OnInit { cc: any = []; executadoText: string = "Executado"; gerarText: string = "Gerar" + draftDocumentIds; constructor(private activateRoute: ActivatedRoute, @@ -106,7 +109,36 @@ export class DespachoPage implements OnInit { async LoadTaskDetail(serial: string) { this.processes.GetTask(serial).subscribe((res: fullTask) => { this.TaskService.loadDiplomas(); - + let stringDraft = res.workflowInstanceDataFields.DraftIds; + console.log('sring to array', stringDraft) + let split_stringDraft = stringDraft.split(","); + let listDrafts = [] + + split_stringDraft.forEach(element => { + console.log('List of ids', element) + this.processes.GetDraftByID(element).subscribe((resd) => { + let object = { + "ApplicationId": "", + "Assunto": resd.data.description, + "DocDate": "", + "DocId": resd.data.id, + "DocNumber": "", + "FolderId": "", + "Sender": "", + "SourceDocId": "", + "content": resd.data.content, + } + this.mergedArray.push(object) + console.log('List of draff', resd) + }) + + }); + + + + + + this.task = { "SerialNumber": res.serialNumber, "Folio": res.workflowInstanceDataFields.Subject, @@ -129,19 +161,43 @@ export class DespachoPage implements OnInit { // this.updateProcessOnDB(res); this.fulltask = res; + console.log('Anexos', this.fulltask.Documents) + + const mergedArray1 = []; + const mergedArray2 = []; + + + // Merge array1 with tag + this.fulltask.Documents.forEach(element => { + let docObject = { + "ApplicationId": element.ApplicationId, + "Assunto": element.Assunto, + "DocDate": element.DocDate, + "DocId": element.DocId, + "DocNumber": element.DocNumber, + "FolderId": element.FolderId, + "Sender": element.Sender, + "SourceDocId": element.SourceDocId, + "content": "", + } + this.mergedArray.push(docObject); + }); + + console.log('All',this.mergedArray) + let thedate = new Date(this.task.CreateDate); this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); this.processes.GetTaskParticipants(this.task.FolderID).subscribe(users => { // this.updateProcessInterveners(users) - + this.intervenientes = users.filter(user => { - + return user.Type == 'I'; }); this.cc = users.filter(user => { - + return user.Type == 'CC'; }); }); @@ -177,26 +233,40 @@ export class DespachoPage implements OnInit { // } - async viewDocument(docId: string, Document) { + async viewDocument(docId: string, Document, content) { - const modal = await this.modalController.create({ - component: ViewDocumentPage, - componentProps: { - trustedUrl: '', - file: { - title: Document.Assunto, - url: '', - title_link: '', + if(Document.content == "") { + const modal = await this.modalController.create({ + component: ViewDocumentPage, + componentProps: { + trustedUrl: '', + file: { + title: Document.Assunto, + url: '', + title_link: '', + }, + Document, + applicationId: Document.ApplicationId, + docId: Document.DocId || Document.SourceId, + folderId: this.task.FolderId, + task: this.fulltask }, - Document, - applicationId: Document.ApplicationId, - docId: Document.DocId || Document.SourceId, - folderId: this.task.FolderId, - task: this.fulltask - }, - cssClass: 'modal modal-desktop' - }); - await modal.present(); + cssClass: 'modal modal-desktop' + }); + await modal.present(); + } else { + const modal = await this.modalController.create({ + component: TinyMCEPage, + componentProps: { + Document, + content + }, + cssClass: 'modal modal-desktop' + }); + await modal.present(); + } + + } @@ -257,7 +327,7 @@ export class DespachoPage implements OnInit { await this.processes.CompleteTask(body).toPromise() this.httpErrorHandle.httpsSucessMessagge('Reexecução') this.TaskService.loadDespachos(); - //this.close(); + //this.close(); } catch (error) { this.httpErrorHandle.httpStatusHandle(error) @@ -268,7 +338,7 @@ export class DespachoPage implements OnInit { } - async generateDiploma(note:string, documents:any) { + async generateDiploma(note: string, documents: any) { let body = { "serialNumber": this.serialnumber, "action": "Reencaminhar", @@ -276,7 +346,7 @@ export class DespachoPage implements OnInit { "dataFields": { "ReviewUserComment": note, }, - "AttachmentList" :documents, + "AttachmentList": documents, } const loader = this.toastService.loading() @@ -288,7 +358,7 @@ export class DespachoPage implements OnInit { // this.close(); } catch (error) { this.httpErrorHandle.httpStatusHandle(error); - } finally { + } finally { loader.remove() } @@ -311,7 +381,7 @@ export class DespachoPage implements OnInit { loader.remove() this.httpErrorHandle.httpStatusHandle(error) }); - // loader.remove() + // loader.remove() } tstemethod(value: string) { @@ -319,7 +389,7 @@ export class DespachoPage implements OnInit { } async openAddNoteModal(actionName: string) { - + let classs; if (window.innerWidth <= 800) { classs = 'modal modal-desktop' @@ -365,7 +435,7 @@ export class DespachoPage implements OnInit { else if (actionName == 'Reexecução') { await this.reexecute(res.data.note, docs); this.goBack(); - } else if(actionName == 'Gerar Diploma') { + } else if (actionName == 'Gerar Diploma') { await this.generateDiploma(res.data.note, docs); this.goBack(); } @@ -393,7 +463,7 @@ export class DespachoPage implements OnInit { }); await modal.present(); modal.onDidDismiss().then(async (res) => { - + if (res['data'] == 'openDiscart') { await this.distartExpedientModal(); @@ -439,9 +509,9 @@ export class DespachoPage implements OnInit { }); await modal.present(); modal.onDidDismiss().then(res => { - if(res){ + if (res) { const data = res.data; - if(data == 'close') { + if (data == 'close') { this.goBack(); } this.TaskService.loadDespachos(); @@ -451,7 +521,7 @@ export class DespachoPage implements OnInit { } async distartExpedientModal() { - + const modal = await this.modalController.create({ component: DiscartExpedientModalPage, componentProps: { @@ -490,16 +560,22 @@ export class DespachoPage implements OnInit { translucent: true }); await popover.present(); - - popover.onDidDismiss().then((res)=> { + + popover.onDidDismiss().then((res) => { // console.log('res', res.data) - if(res.data == 'back') { + if (res.data == 'back') { this.goBack(); } - + }) } } +function mergeArraysAndTag(array1, array2) { + console.log('second', array2) + + +} + diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts index 4aa4226b8..2b5bd1b69 100644 --- a/src/app/pages/login/login.page.ts +++ b/src/app/pages/login/login.page.ts @@ -118,6 +118,8 @@ export class LoginPage implements OnInit { const loader = this.toastService.loading() let attempt = await this.authService.login(this.userattempt, {saveSession: false}) + await this.authService.loginContenteProduction(this.userattempt, {saveSession: false}) + loader.remove() diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index b94755c80..c9e850c93 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -100,6 +100,35 @@ export class AuthService { } + async loginContenteProduction(user: UserForm, {saveSession = true}): Promise { + user.BasicAuthKey = 'Basic ' + btoa(user.username + ':' + this.aesencrypt.encrypt(user.password,user.username )); + + this.headers = this.headers.set('Authorization', user.BasicAuthKey); + this.opts = { + headers: this.headers, + } + + let response: any; + + try { + response = await this.http.post(environment.apiURL + "UserAuthentication/LoginJwt", '', this.opts).toPromise(); + + + if(saveSession) { + /* this.SetSession(response, user) */ + this.storageService.store('userContentProduction',response) + this.storageService.get('userContentProduction').then((value) =>{ + console.log('JWW', value.AuthorizationJwt); + }) + } + } catch (error) { + this.httpErroHandle.httpStatusHandle(error) + } finally { + return response + } + + } + // async UpdateLogin() {} SetSession(response: LoginUserRespose, user:UserForm) { diff --git a/src/app/services/processes.service.ts b/src/app/services/processes.service.ts index 994c091d7..97e1c59aa 100644 --- a/src/app/services/processes.service.ts +++ b/src/app/services/processes.service.ts @@ -10,6 +10,7 @@ import { GetTasksListType } from '../models/GetTasksListType'; import { fullTaskList } from '../models/dailyworktask.model'; import { ChangeProfileService } from './change-profile.service'; import { SessionStore } from '../store/session.service'; +import { StorageService } from './storage.service'; @Injectable({ providedIn: 'root' }) @@ -18,10 +19,13 @@ export class ProcessesService { authheader = {}; loggeduser: LoginUserRespose; headers: HttpHeaders; + headers2: HttpHeaders; + constructor( private http: HttpClient, - private changeProfileService: ChangeProfileService + private changeProfileService: ChangeProfileService, + private storageSevice: StorageService ) { this.loggeduser = SessionStore.user; @@ -32,6 +36,8 @@ export class ProcessesService { this.setHeader() }) + + } @@ -39,6 +45,11 @@ export class ProcessesService { this.headers = new HttpHeaders(); this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); + + this.headers2 = new HttpHeaders(); + this.headers2 = this.headers2.set('Authorization',"bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIyNjIiLCJ1bmlxdWVfbmFtZSI6IkdpbHNvbiBNYW51ZWwiLCJlbWFpbCI6ImdpbHNvbi5tYW51ZWxAZ2FiaW5ldGVkaWdpdGFsLmxvY2FsIiwicm9sZSI6IlNlY3JldMOhcmlvIEdlcmFsIiwiZ3JvdXBzaWQiOiJHYWJpbmV0ZSBkZSBUZWNub2xvZ2lhcyBkZSBJbmZvcm1hw6fDo28iLCJvcmdhbmljZW50aXR5aWREIjoiMTA2IiwibmJmIjoxNjg4NTg0NTYzLCJleHAiOjE3MjAxMjA1NjMsImlhdCI6MTY4ODU4NDU2MywiaXNzIjoiOGIxMzBhN2YwLWM3YjctNDdzMjMtOWE4ZC1kNTlhMDE5YWY3NDkiLCJhdWQiOiJkMjh3dzE0NTMtM2M2OC00MWFkLThiNmMtYTUzNDUzODNlMGMyIn0.QDCrQsCH59GQMoudZTHyCMwwHYVwz1mZkLTzvzAwh64" + + ); } uploadFile(formData:any){ @@ -107,6 +118,7 @@ export class ProcessesService { } GetTask(serialnumber:string): Observable { + const geturl = environment.apiURL + 'Tasks/FindTask'; let params = new HttpParams(); @@ -119,6 +131,18 @@ export class ProcessesService { return this.http.get(`${geturl}`, options); } + GetDraftByID(id:string): Observable { + const geturl = environment.apiPCURL + `Documents/${id}`; + let params = new HttpParams(); + + /* params = params.set("serialNumber", serialnumber); */ + + let options = { + headers: this.headers2, + /* params: params */ + }; + return this.http.get(`${geturl}`, options); + } SetTaskToPending(serialNumber:string): Observable{ const geturl = environment.apiURL + 'Tasks/SetTaskPending'; diff --git a/src/app/shared/header/header.page.ts b/src/app/shared/header/header.page.ts index 3d2035fe8..9293b89c8 100644 --- a/src/app/shared/header/header.page.ts +++ b/src/app/shared/header/header.page.ts @@ -180,7 +180,7 @@ export class HeaderPage implements OnInit { if(!this.showProfileModal) { this.showProfileModal = true const modal = await this.modalController.create({ - component: TinyMCEPage, + component: ProfilePage, cssClass: 'model profile-modal search-submodal', componentProps: { } diff --git a/src/app/tiny-mce/tiny-mce.module.ts b/src/app/tiny-mce/tiny-mce.module.ts index 27d4d016c..fe0eaa810 100644 --- a/src/app/tiny-mce/tiny-mce.module.ts +++ b/src/app/tiny-mce/tiny-mce.module.ts @@ -9,6 +9,7 @@ import { TinyMCEPageRoutingModule } from './tiny-mce-routing.module'; import { TinyMCEPage } from './tiny-mce.page'; import {Editor} from 'tinymce'; import { EditorModule } from '@tinymce/tinymce-angular'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @NgModule({ imports: [ @@ -16,7 +17,8 @@ import { EditorModule } from '@tinymce/tinymce-angular'; FormsModule, IonicModule, TinyMCEPageRoutingModule, - EditorModule + EditorModule, + FontAwesomeModule ], declarations: [TinyMCEPage] }) diff --git a/src/app/tiny-mce/tiny-mce.page.html b/src/app/tiny-mce/tiny-mce.page.html index 2fb09ea71..04bd5d71d 100644 --- a/src/app/tiny-mce/tiny-mce.page.html +++ b/src/app/tiny-mce/tiny-mce.page.html @@ -1,6 +1,26 @@ + + +
+
+ +
+ +
+ {{Document.Assunto}} +
+ +
+ +
+ +
+
+
+ \ No newline at end of file + bullist numlist outdent indent | removeformat | print | help' }" + initialValue='{{content}}' + [(ngModel)]="editorContent" + (onSaveContent)="somefunction()" +> + \ No newline at end of file diff --git a/src/app/tiny-mce/tiny-mce.page.scss b/src/app/tiny-mce/tiny-mce.page.scss index e69de29bb..d13f62918 100644 --- a/src/app/tiny-mce/tiny-mce.page.scss +++ b/src/app/tiny-mce/tiny-mce.page.scss @@ -0,0 +1,27 @@ +.left{ + float: left; + } + .middle{ + float: left; + padding-left: 5px !important; + } + .right{ + float: right; + margin-left: auto; + } + + + .container-img { + background-image: url(/assets/gif/theme/gov/Blocks-loader.svg); + background-repeat: no-repeat; + background-position-x: center; + background-position-y: center; + } + + + @media only screen and (max-width: 650px) { + + .container-img { + background-size: 25%; + } + } \ No newline at end of file diff --git a/src/app/tiny-mce/tiny-mce.page.ts b/src/app/tiny-mce/tiny-mce.page.ts index 913b6749b..eda8bd1df 100644 --- a/src/app/tiny-mce/tiny-mce.page.ts +++ b/src/app/tiny-mce/tiny-mce.page.ts @@ -1,5 +1,7 @@ import { Component, OnInit } from '@angular/core'; - +import { NavParams } from '@ionic/angular'; +import { EventDetailsDocumentsOptionsPage } from '../shared/popover/event-details-documents-options/event-details-documents-options.page'; +import { AlertController, ModalController } from '@ionic/angular'; @Component({ selector: 'app-tiny-mce', templateUrl: './tiny-mce.page.html', @@ -7,12 +9,51 @@ import { Component, OnInit } from '@angular/core'; }) export class TinyMCEPage implements OnInit { - initialContent = '

Hello, World!

This is my HTML document.

'; + + + title = '

Hello, World!

This is my HTML document.

'; + Document: any + content: any + editorContent: string; - constructor() { } + + constructor( + private navParams: NavParams, + private modalController: ModalController, + + ) { + this.Document = this.navParams.get('Document') + this.content = this.navParams.get('content') + } ngOnInit() { } + close() { + throw new Error('Method not implemented.'); + } + + somefunction() { + console.log(this.title) + } + + async openOptions() { + const modal = await this.modalController.create({ + component: EventDetailsDocumentsOptionsPage, + cssClass: 'model aside-modal search-submodal', + componentProps: { + /* fulltask: this.task, + task: this.task */ + } + }); + await modal.present(); + + modal.onDidDismiss().then((res)=>{ + + + + }) + } + } diff --git a/src/environments/environment.ts b/src/environments/environment.ts index e2d79dff9..16a865ce9 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -4,4 +4,4 @@ import { doneITDev } from './suport/doneIt' import { DevDev } from './suport/dev' -export const environment: Environment = oaprDev \ No newline at end of file +export const environment: Environment = DevDev \ No newline at end of file diff --git a/src/environments/suport/dev.ts b/src/environments/suport/dev.ts index 9a7e6d742..1351d586b 100644 --- a/src/environments/suport/dev.ts +++ b/src/environments/suport/dev.ts @@ -6,6 +6,7 @@ export const DevProd: Environment = { apiURL: 'https://gdapi-dev.dyndns.info/api/', apiChatUrl: 'https://gdchat-dev.dyndns.info/api/v1/', apiWsChatUrl: 'wss://gdchat-dev.dyndns.info/websocket', + apiPCURL: 'http://192.168.0.21:9099/api/', production: true, domain: 'gabinetedigital.local', defaultuser: '', @@ -30,6 +31,7 @@ export const DevDev: Environment = { apiURL: 'https://gdapi-dev.dyndns.info/api/', apiChatUrl: 'https://gdchat-dev.dyndns.info/api/v1/', apiWsChatUrl: 'wss://gdchat-dev.dyndns.info/websocket', + apiPCURL: 'http://192.168.0.21:9099/api/', production: true, domain: 'gabinetedigital.local', defaultuser: 'paulo.pinto@gabinetedigital.local', diff --git a/src/environments/suport/doneIt.ts b/src/environments/suport/doneIt.ts index 87d423f0f..ac25d7c56 100644 --- a/src/environments/suport/doneIt.ts +++ b/src/environments/suport/doneIt.ts @@ -6,6 +6,7 @@ export const doneITProd: Environment = { apiURL: 'https://API.DONEIT.CO.AO/api/', apiChatUrl: 'https://CHAT.DONEIT.CO.AO/api/v1/', apiWsChatUrl: 'wss://CHAT.DONEIT.CO.AO/websocket', + apiPCURL: 'http://192.168.0.21:9099/api/', production: true, domain: 'equilibrium.co.ao', defaultuser: '', @@ -29,6 +30,7 @@ export const doneITDev: Environment = { apiURL: 'https://API.DONEIT.CO.AO/api/', apiChatUrl: 'https://CHAT.DONEIT.CO.AO/api/v1/', apiWsChatUrl: 'wss://CHAT.DONEIT.CO.AO/websocket', + apiPCURL: 'http://192.168.0.21:9099/api/', production: true, domain: 'equilibrium.co.ao', defaultuser: 'peter.maquiran@equilibrium.co.ao', diff --git a/src/environments/suport/oapr.ts b/src/environments/suport/oapr.ts index dbbabddbe..470d3eb6b 100644 --- a/src/environments/suport/oapr.ts +++ b/src/environments/suport/oapr.ts @@ -7,6 +7,7 @@ export const oaprProd: Environment = { apiURL: 'https://gd-api.oapr.gov.ao/api/', apiChatUrl: 'https://gd-chat.oapr.gov.ao/api/v1/', apiWsChatUrl: 'wss://gd-chat.oapr.gov.ao/websocket', + apiPCURL: 'http://192.168.0.21:9099/api/', logoLabel: 'Presidente da República', despachoLabel: 'Presidenciais', despachoLabel2: 'Despachos Presidênciais', @@ -30,6 +31,7 @@ export const oaprDev: Environment = { apiURL: 'https://gd-api.oapr.gov.ao/api/', apiChatUrl: 'https://gd-chat.oapr.gov.ao/api/v1/', apiWsChatUrl: 'wss://gd-chat.oapr.gov.ao/websocket', + apiPCURL: 'http://192.168.0.21:9099/api/', logoLabel: 'Presidente da República', despachoLabel: 'Presidencial', despachoLabel2: 'Despachos Presidênciais', diff --git a/version/git-version.ts b/version/git-version.ts index 2bfc9f33f..39f6e96c5 100644 --- a/version/git-version.ts +++ b/version/git-version.ts @@ -1,12 +1,12 @@ export let versionData = { - "shortSHA": "4c15001cd", - "SHA": "4c15001cd399799e32e71c212ae81133deb0347b", + "shortSHA": "01324ad02", + "SHA": "01324ad0221fce2124cd975c8d1325c8c4687593", "branch": "feature/gabinete-search", "lastCommitAuthor": "'Eudes Inácio'", - "lastCommitTime": "'Fri Jun 30 15:35:11 2023 +0100'", - "lastCommitMessage": "adding tiny", - "lastCommitNumber": "5025", + "lastCommitTime": "'Mon Jul 3 12:04:52 2023 +0100'", + "lastCommitMessage": "tinymce added and working", + "lastCommitNumber": "5026", "change": "", - "changeStatus": "On branch feature/gabinete-search\nYour branch is ahead of 'origin/feature/gabinete-search' by 12 commits.\n (use \"git push\" to publish your local commits)\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: config.xml\n\tmodified: src/app/app.module.ts\n\tmodified: src/app/tiny-mce/tiny-mce.page.html\n\tmodified: src/app/tiny-mce/tiny-mce.page.ts\n\tmodified: src/assets/tinyMCE/editor.html\n\tdeleted: src/assets/tinyMCE/src/assets/tinyMCE/tinymce.min.js\n\tmodified: src/environments/environment.ts\n\tmodified: src/environments/suport/oapr.ts", + "changeStatus": "On branch feature/gabinete-search\nYour branch is up to date with 'origin/feature/gabinete-search'.\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: src/app/models/dailyworktask.model.ts\n\tmodified: src/app/models/envarioment.ts\n\tmodified: src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html\n\tmodified: src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts\n\tmodified: src/app/pages/login/login.page.ts\n\tmodified: src/app/services/auth.service.ts\n\tmodified: src/app/services/processes.service.ts\n\tmodified: src/app/shared/header/header.page.ts\n\tmodified: src/app/tiny-mce/tiny-mce.module.ts\n\tmodified: src/app/tiny-mce/tiny-mce.page.html\n\tmodified: src/app/tiny-mce/tiny-mce.page.scss\n\tmodified: src/app/tiny-mce/tiny-mce.page.ts\n\tmodified: src/environments/environment.ts\n\tmodified: src/environments/suport/dev.ts\n\tmodified: src/environments/suport/doneIt.ts\n\tmodified: src/environments/suport/oapr.ts", "changeAuthor": "eudes.inacio" } \ No newline at end of file