This commit is contained in:
tiago.kayaya
2021-05-04 16:22:31 +01:00
22 changed files with 961 additions and 62 deletions
+9
View File
@@ -136,6 +136,15 @@ const routes: Routes = [
},
]
},
{
path: 'events-to-approve',
children: [
{
path: '',
loadChildren: ()=> import('../shared/gabinete-digital/edit-event-to-approve/edit-event.module')
}
]
}
]
},
{
+1
View File
@@ -469,6 +469,7 @@
<app-approve-event class="d-flex flex-column" *ngIf="mobileComponent.showEventToApprove" [class.transparent]="mobileComponent.transparentEventToApprove"
[serialNumber] = "eventToaprove.serialNumber"
[InstanceId] = "eventToaprove.InstanceId"
(cloneAllmobileComponent)="viewEventDetailDismiss($event)"
(closeEventToApprove)="closeEventToApprove()"
(AproveEventEditEvent)="AproveEventEditEvent($event)"
+2 -1
View File
@@ -1042,7 +1042,8 @@ export class AgendaPage implements OnInit {
this.eventToaprove = {
back: true,
saveData: saveData,
serialNumber:serialNumber
serialNumber:serialNumber,
InstanceId: saveData.workflowInstanceDataFields.InstanceId || ""
}
// this.mobileComponent.showEventList = false;
this.mobileComponent.transparentEventList = true;
@@ -115,33 +115,34 @@ export class EditEventPage implements OnInit {
async openAttendees() {
if(window.innerWidth <= 1024) {
const modal = await this.modalController.create({
component: AttendeesPage,
componentProps: {
adding: this.adding,
taskParticipants: this.taskParticipants,
taskParticipantsCc: this.taskParticipantsCc
},
cssClass: 'attendee',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((data) => {
if(data){
data = data['data'];
const newAttendees: EventPerson[] = data['taskParticipants'];
const newAttendeesCC: EventPerson[] = data['taskParticipantsCc'];
const modal = await this.modalController.create({
component: AttendeesPage,
componentProps: {
adding: this.adding,
taskParticipants: this.taskParticipants,
taskParticipantsCc: this.taskParticipantsCc
},
cssClass: 'attendee',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((data) => {
if(data){
data = data['data'];
const newAttendees: EventPerson[] = data['taskParticipants'];
const newAttendeesCC: EventPerson[] = data['taskParticipantsCc'];
this.setIntervenient(newAttendees);
this.setIntervenientCC(newAttendeesCC);
}
});
this.setIntervenient(newAttendees);
this.setIntervenientCC(newAttendeesCC);
}
});
}
}
setIntervenient(data){
@@ -153,6 +153,7 @@ export class NewEventPage implements OnInit {
async openAttendees() {
const modal = await this.modalController.create({
component: AttendeesPage,
componentProps: {
@@ -8,8 +8,8 @@
<div class="header-title flex-grow-1">
<label>{{loadedEvent.workflowInstanceDataFields.Subject}}</label>
</div>
<div class="header-icon-right cursor-pointer">
<ion-icon (click)="notImplemented()" src="assets/images/icons-edit.svg"></ion-icon>
<div class="header-icon-right cursor-pointer" (click)="editar(loadedEvent.serialNumber)">
<ion-icon src="assets/images/icons-edit.svg"></ion-icon>
</div>
</div>
</ion-header>
@@ -72,17 +72,26 @@
</div>
<div class="line"></div>
<div *ngIf="loadedAttachments" class="bottom-content">
<ion-list>
<h3>Documentos Anexados</h3>
<ion-item class="ion-no-padding ion-no-margin">
<ion-label>
<p class="attach-title-item">Receita por Natureza</p>
<p><span class="span-left">{{loadedAttachments.Remetente}}</span><span class="span-right">{{loadedAttachments.CreateDate}}<!-- {{ task.CreateDate | date: 'dd-MM-yy' }} --></span></p>
</ion-label>
</ion-item>
<div class="d-flex container-div width-100" >
<ion-list class="width-100 " >
<ion-item class="width-100" *ngFor="let document of loadedAttachments">
<ion-label class="width-100 d-block list">
<p class="d-flex ion-justify-content-between">
<span class="attach-title-item">{{document.SourceName}}</span>
<span class="app-name" *ngIf="document.ApplicationId == 8"> Correspondencia </span>
<span class="app-name" *ngIf="document.ApplicationId == 386"> AccoesPresidenciais </span>
<span class="app-name" *ngIf="document.ApplicationId == 361 "> ArquivoDespachoElect </span>
<span class="close-button text-black" >
<ion-icon class="font-20" src="assets/images/icons-delete-25.svg"></ion-icon>
</span>
</p>
<p><span class="span-left">{{document.Stakeholders}}</span><span class="span-right"> {{document.CreateDate | date: 'dd-MM-yy'}} </span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
</ion-content>
<ion-footer>
<!-- <ion-toolbar>
@@ -140,3 +140,56 @@ ion-menu{
padding: 20px;
overflow: auto;
}
.app-name{
background: #42b9f2;
border-radius: 18px;
text-align: center;
display: flex;
align-items: center;
padding: 0px 5px;
color: white;
font-size: 9pt;
font-weight: 500;
height: 19px;
-webkit-border-radius: 18px;
-moz-border-radius: 18px;
-ms-border-radius: 18px;
-o-border-radius: 18px;
}
.close-button {
display: none;
}
.list:hover {
.app-name {
display: none;
}
.close-button {
display: block !important;
}
}
.attach-title-item{
width: 100%;
font-size: 15px;
color:#0d89d1;
}
/* SPAN */
.span-left{
float: left;
font-size: 15x;
}
.span-right{
text-align: right;
float: right;
font-size: 13px;
}
@@ -5,6 +5,7 @@ import { Event } from 'src/app/models/event.model';
import { AlertService } from 'src/app/services/alert.service';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { ProcessesService } from 'src/app/services/processes.service';
import { EditEventToApproveComponent } from 'src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page';
import { EmendMessageModalPage } from '../../../agenda/emend-message-modal/emend-message-modal.page';
import { EventActionsPopoverPage } from '../../../agenda/event-actions-popover/event-actions-popover.page';
@@ -24,7 +25,7 @@ export class ApproveEventModalPage implements OnInit {
months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"];
InstanceId: string
constructor(
private router: Router,
@@ -37,6 +38,8 @@ export class ApproveEventModalPage implements OnInit {
private alertService: AlertService,
private activatedRoute: ActivatedRoute,
) {
this.activatedRoute.paramMap.subscribe(paramMap =>
{
if (!paramMap.has("serialNumber")){
@@ -73,8 +76,13 @@ export class ApproveEventModalPage implements OnInit {
console.log(new Date(this.today));
this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]);
this.InstanceId = res.workflowInstanceDataFields.InstanceId
this.getAttachments()
})
}
approveTask(serialNumber:string){
console.log('approveTask SERIALNUMBER: ', serialNumber)
let body = { "serialNumber": serialNumber, "action": "Aprovar" }
@@ -100,12 +108,10 @@ export class ApproveEventModalPage implements OnInit {
this.router.navigate(['/home/gabinete-digital/event-list']);
this.modalController.dismiss(null);
}
getAttachments(){
this.attachmentsService.getAttachmentsBySerial(this.serialNumber).subscribe(res=>{
console.log('getAttachments: ',this.serialNumber)
this.loadedAttachments = res;
console.log(res);
});
async getAttachments(){
this.loadedAttachments = await this.attachmentsService.getAttachmentsById(this.InstanceId).toPromise();
}
async openOptions(ev:any) {
@@ -149,5 +155,27 @@ export class ApproveEventModalPage implements OnInit {
}
});
}
async editar(serialNumber: string) {
const modal = await this.modalController.create({
component: EditEventToApproveComponent,
componentProps: {
serialNumber: serialNumber
},
cssClass: 'modal modal-desktop',
// backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(res => {
this.getTask();
this.getAttachments();
});
}
}
@@ -33,7 +33,7 @@
<ion-list>
<ion-item-sliding>
<ion-item class="Rectangle cursor-pointer" lines="none"
*ngFor="let event of eventsMDGPRList" (click)="openApproveModal(event.serialNumber)">
*ngFor="let event of eventsMDGPRList" (click)="openApproveModal(event.serialNumber, event)">
<div class="content-mdgpr-{{event.workflowInstanceDataFields.Agenda}} width-100">
<div class="approve-event-time">
@@ -55,7 +55,7 @@
<div *ngIf="eventsPRList">
<ion-item-sliding>
<ion-item class="Rectangle cursor-pointer" lines="none"
*ngFor="let event of eventsPRList" (click)="openApproveModal(event.serialNumber)">
*ngFor="let event of eventsPRList" (click)="openApproveModal(event.serialNumber, event)">
<div class="content-pr-{{event.workflowInstanceDataFields.Agenda}} width-100">
<div class="approve-event-time">
<p>{{event.workflowInstanceDataFields.StartDate | date: 'hh:mm'}}</p>
@@ -72,7 +72,7 @@ export class EventListPage implements OnInit {
});
}
async openApproveModal(eventSerialNumber){
async openApproveModal(eventSerialNumber, event){
const modal = await this.modalController.create({
@@ -86,7 +86,7 @@ export class EventListPage implements OnInit {
await modal.present();
modal.onDidDismiss();
}
doRefresh(event) {
@@ -31,6 +31,10 @@
<ion-icon name="close-sharp"></ion-icon>
<ion-label>Rejeitar</ion-label>
</ion-item>
<ion-item (click)="editar(loadedEvent.serialNumber)">
<ion-icon name="close-sharp"></ion-icon>
<ion-label>Editar</ion-label>
</ion-item>
</ion-list>
</ion-content>
</ion-menu>
@@ -39,13 +43,13 @@
<div class="main-content d-flex height-100">
<div class="content d-flex flex-column">
<div class="header-content width-100 d-flex justify-space-between">
<div (click)="close()" class="header-icon-left">
<div (click)="close()" class="header-icon-left cursor-pointer">
<ion-icon src="assets/images/icons-arrow-arrow-left.svg"></ion-icon>
</div>
<div class="header-title flex-grow-1">
<div class="header-title flex-grow-1 cursor-pointer">
<label>{{loadedEvent.workflowInstanceDataFields.Subject}}</label>
</div>
<div (click)="notImplemented()" class="header-icon-right display-none-{{showAside}}">
<div (click)="editar(loadedEvent.serialNumber)" class="header-icon-right display-none-{{showAside}}">
<ion-icon src="assets/images/icons-edit.svg"></ion-icon>
</div>
</div>
@@ -104,12 +108,13 @@
</div>
<div *ngIf="showAside" class="aside-right flex-column height-100">
<div *ngIf="showAside" class="aside-right flex-column height-100 cursor-pointer">
<div class="aside-buttons">
<button hidden full class="btn-ok" shape="round" >Editar evento</button>
<button (click)="approveTask(loadedEvent.serialNumber)" full class="btn-ok" shape="round" >Aprovar</button>
<button (click)="emendTask(loadedEvent.serialNumber)" class="btn-cancel" shape="round" >Adicionar Nota</button>
<div class="solid"></div>
<button full class="btn-cancel" shape="round" (click)="editar(loadedEvent.serialNumber)" >Editar</button>
<button (click)="rejectTask(loadedEvent.serialNumber)" full class="btn-delete" shape="round" >Rejeitar</button>
</div>
</div>
@@ -125,5 +130,6 @@
</ion-menu-button>
<button class="btn-ok" shape="round" (click)="approveTask(loadedEvent.serialNumber)">Aprovar</button>
<button hidden class="btn-delete" shape="round" (click)="rejectTask(loadedEvent.serialNumber)">Rejeitar</button>
</div>
</ion-footer>
@@ -8,6 +8,7 @@ import { ProcessesService } from 'src/app/services/processes.service';
import { EmendMessageModalPage } from 'src/app/pages/agenda/emend-message-modal/emend-message-modal.page';
import { EventActionsPopoverPage } from 'src/app/pages/agenda/event-actions-popover/event-actions-popover.page';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { EditEventToApproveComponent } from '../../gabinete-digital/edit-event-to-approve/edit-event.page';
@Component({
@@ -176,4 +177,27 @@ export class ApproveEventComponent implements OnInit {
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
async editar(serialNumber: string) {
const modal = await this.modalController.create({
component: EditEventToApproveComponent,
componentProps: {
serialNumber: serialNumber,
InstanceId:this.InstanceId
},
cssClass: 'modal modal-desktop',
// backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(res => {
this.getTask();
this.getAttachments();
});
}
}
@@ -145,7 +145,7 @@
</ion-item>
</div>
<div class="add-people">
<button class="btn-no-color" (click)="addParticipants()">
<button class="btn-no-color cursor-pointer" (click)="addParticipants()">
<ion-icon class="font-35" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</button>
</div>
@@ -168,7 +168,7 @@
</ion-item>
</div>
<div class="add-people">
<button class="btn-no-color" (click)="addParticipantsCc()">
<button class="btn-no-color cursor-pointer" (click)="addParticipantsCc()">
<ion-icon class="font-35" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</button>
</div>
@@ -187,7 +187,7 @@
</div>
</div>
<div (click)="getDoc()" class="d-flex container-div width-100 ion-item-container-no-border" >
<div (click)="getDoc()" class="d-flex container-div width-100 ion-item-container-no-border cursor-pointer" >
<ion-label>
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
@@ -207,7 +207,7 @@
<span class="app-name" *ngIf="document.ApplicationId == 8"> Correspondencia </span>
<span class="app-name" *ngIf="document.ApplicationId == 386"> AccoesPresidenciais </span>
<span class="app-name" *ngIf="document.ApplicationId == 361 "> ArquivoDespachoElect </span>
<span class="close-button text-black" (click)="deleteAttachment(document.Id)" >
<span class="close-button text-black cursor-pointer" (click)="deleteAttachment(document.Id)" >
<ion-icon class="font-20" src="assets/images/icons-delete-25.svg"></ion-icon>
</span>
@@ -30,7 +30,7 @@
<ion-item
class="item ion-no-padding width-100 cursor-pointer"
*ngFor="let event of eventsMDGPRList"
(click)="openApproveModal(event.serialNumber)">
(click)="openApproveModal(event.serialNumber, event)">
<div class="event-mdgpr-{{event.workflowInstanceDataFields.Agenda}} width-100">
<div class="approve-event-time">
<p>{{event.workflowInstanceDataFields.StartDate | date: 'hh:mm'}}</p>
@@ -140,7 +140,7 @@
</ion-item>
</div>
<div class="add-people" (click)="addParticipants()">
<div class="add-people cursor-pointer" (click)="addParticipants()">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div>
@@ -163,7 +163,7 @@
</ion-item>
</div>
<div class="add-people" (click)="addParticipantsCc()">
<div class="add-people cursor-pointer" (click)="addParticipantsCc()">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div>
@@ -183,7 +183,7 @@
</div>
</div>
<div class="ion-item-container-no-border" (click)="getDoc()">
<div class="ion-item-container-no-border cursor-pointer" (click)="getDoc()">
<ion-label>
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
@@ -201,7 +201,7 @@
<p class="d-flex ion-justify-content-between">
<span class="attach-title-item">{{document.Assunto}}</span>
<span class="app-name">{{document.appName}}</span>
<span class="close-button text-black" (click)="removeAttachment(i)" >
<span class="close-button text-black cursor-pointer" (click)="removeAttachment(i)" >
<ion-icon class="font-20" src="assets/images/icons-delete-25.svg"></ion-icon>
</span>
</p>
@@ -0,0 +1,18 @@
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { Routes, RouterModule } from '@angular/router';
import { EditEventToApproveComponent } from './edit-event.page';
const routes: Routes = [
{
path: '',
component: EditEventToApproveComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes), BrowserModule],
exports: [RouterModule],
})
export class EditEventToApproveComponentRoutingModule {}
@@ -0,0 +1,26 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { EditEventToApproveComponentRoutingModule } from './edit-event-routing.module';
import { EditEventToApproveComponent } from './edit-event.page';
import { AttendeeModalPage } from 'src/app/shared/event/attendee-modal/attendee-modal.page';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
EditEventToApproveComponentRoutingModule
],
declarations: [
EditEventToApproveComponent,
AttendeeModalPage
]
})
export class EditEventToApproveComponentModule {}
@@ -0,0 +1,235 @@
<ion-content>
<!-- Edit event for Inicio -->
<div class="main-content height-100 d-flex">
<div class="content d-flex flex-column width-md-100 height-100">
<div class="main-header pt-30 px-20 background-white pb-15">
<ion-header>
<div class="title-content">
<div class="middle">
<ion-label class="title">Editar Evento Por Aprovar</ion-label>
</div>
</div>
</ion-header>
</div>
<ion-item-sliding class="overflow-y-auto">
<div class="px-20">
<div class="ion-item-container width-100">
<ion-input placeholder="Assunto" [(ngModel)]="eventProcess.workflowInstanceDataFields.Subject"></ion-input>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-input placeholder="Localização" [(ngModel)]="Location"></ion-input>
</div>
</div>
<!-- Error messages -->
<!-- <span class="error ion-padding" >
Campo obrigatório
</span> -->
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select disabled placeholder="Selecione agenda"
selectedText="{{eventProcess.workflowInstanceDataFields.Agenda}}"
[(ngModel)]="eventProcess.workflowInstanceDataFields.Agenda"
interface="action-sheet" Cancel-text="Cancelar"
required>
<ion-select-option value="Oficial">Oficial</ion-select-option>
<ion-select-option value="Pessoal">Pessoal</ion-select-option>
</ion-select>
</div>
</div>
</div>
<!-- <div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select placeholder="Selecione tipo"
[(ngModel)]="postEvent.Categories[0]"
selectedText="{{postEvent.Categories[0]}}"
interface="action-sheet"
Cancel-text="Cancelar" required>
<ion-select-option value="Reunião">Reunião</ion-select-option>
<ion-select-option value="Viagem">Viagem</ion-select-option>
<ion-select-option value="Conferência">Conferência</ion-select-option>
<ion-select-option value="Encontro">Encontro</ion-select-option>
</ion-select>
</div>
</div>
</div> -->
<div class="container-div width-100">
<div class="ion-item-class-2 width-100">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class width-100">
<ion-datetime
placeholder="Início"
[(ngModel)]="eventProcess.taskStartDate"
displayFormat="D MMM YYYY H:mm"
minuteValues="0,15,30,45"
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
min="2018"
max="2022"
>
</ion-datetime>
<!-- <ion-input placeholder="Data início" [(ngModel)]="postData.StartDate"></ion-input> -->
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-datetime
placeholder="Fim"
[(ngModel)]="eventProcess.workflowInstanceDataFields.EndDate"
displayFormat="D MMM YYYY H:mm"
minuteValues="0,15,30,45"
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
min="2018"
max="2022"
>
</ion-datetime>
<!-- <ion-input placeholder="Data fim" [(ngModel)]="postData.EndDate"></ion-input> -->
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select placeholder="Selecione repetição"
[(ngModel)]="eventProcess.workflowInstanceDataFields.IsRecurring"
selectedText="{{isRecurring}}"
interface="action-sheet"
Cancel-text="Cancelar" required>
<ion-select-option value="false">Não se repete</ion-select-option>
<ion-select-option value="true">Repete</ion-select-option>
</ion-select>
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon>
</div>
<div class="ion-input-class-no-height d-flex">
<div class="list-people flex-grow-1">
<ion-item lines="none">
<ion-list>
<ion-label *ngIf="taskParticipants.length == 0" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label *ngFor="let participant of taskParticipants">{{participant.Name}}</ion-label>
</ion-list>
</ion-item>
</div>
<div class="add-people cursor-pointer" (click)="addParticipants()">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div>
</div>
</div>
<div class="container-div width-100">
<div class="ion-item-class-2">
<div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon>
</div>
<div class="ion-input-class-no-height d-flex">
<div class="list-people flex-grow-1">
<ion-item lines="none">
<ion-list>
<ion-label *ngIf="taskParticipantsCc.length == 0" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label *ngFor="let participant of taskParticipantsCc">{{participant.Name}}</ion-label>
</ion-list>
</ion-item>
</div>
<div class="add-people cursor-pointer" (click)="addParticipantsCC()">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div>
</div>
</div>
</div>
<div (click)="getDoc()" class="cursor-pointer d-flex container-div width-100 ion-item-container-no-border" >
<ion-label>
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
</div>
<div class="attach-document">
<ion-label>Adicionar documentos</ion-label>
</div>
</ion-label>
</div>
<div class="d-flex container-div width-100" >
<ion-list class="width-100 ">
<ion-item class="width-100" *ngFor="let document of loadedAttachments">
<ion-label class="width-100 d-block list">
<p class="d-flex ion-justify-content-between">
<span class="attach-title-item">{{document.SourceName}}</span>
<span class="app-name" *ngIf="document.ApplicationId == 8"> Correspondencia </span>
<span class="app-name" *ngIf="document.ApplicationId == 386"> AccoesPresidenciais </span>
<span class="app-name" *ngIf="document.ApplicationId == 361 "> ArquivoDespachoElect </span>
<span class="close-button text-black cursor-pointer" (click)="deleteAttachment(document.Id)" >
<ion-icon class="font-20" src="assets/images/icons-delete-25.svg"></ion-icon>
</span>
</p>
<p><span class="span-left">{{document.Stakeholders}}</span><span class="span-right"> {{document.CreateDate | date: 'dd-MM-yy'}} </span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
</ion-item-sliding>
</div>
<app-attendee-modal class="aside-right flex-column height-100 d-none d-md-flex pt-10"
*ngIf="showAttendees"
[taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc"
[adding]="adding"
(dynamicSetIntervenient)="dynamicSetIntervenient($event)"
></app-attendee-modal>
</div>
</ion-content>
<ion-footer class="background-whit">
<div class="buttons">
<button class="btn-cancel cursor-pointer" shape="round" (click)="close()">Cancelar</button>
<button class="btn-ok cursor-pointer" shape="round" (click)="save()">Gravar</button>
</div>
</ion-footer>
@@ -0,0 +1,201 @@
.title-content::after, .header-md::after{
display: none;
}
.content {
margin: 0;
float: left;
border-right: 1px solid #d8d8d8 !important;
}
.main-header{
font-family: Roboto;
background-color: #fff;
overflow:hidden;
transform: translate3d(0, 1px, 0);
.title-content{
margin: 0px auto;
padding: 0 !important;
background: #fff;
.middle{
padding: 0!important;
float: left;
}
}
.title{
font-size: 25px;
}
}
.ion-item-container{
margin: 15px auto;
border: 1px solid #ebebeb;
border-radius: 5px;
padding-left: 10px;
}
.ion-item-container-no-border{
width: 100%;
margin: 0px auto;
padding: 0 !important;
}
.container-div{
margin-bottom: 15px;
float: left;
}
.ion-item-class-2{
margin: 0px auto;
}
.ion-icon-class{
width: 45px;
height: 45px;
float: left;
padding: 10px;
font-size: 25px;
}
ion-select{
padding-left: 5px;
margin-left: 0;
}
.ion-input-class{
width: calc(100% - 45px);
height: 45px;
border: 1px solid #ebebeb;
border-radius: 5px;
padding-left: 5px;
padding-right: 10px;
float: left;
}
.ion-input-class-no-height{
width: calc(100% - 45px);
border: 1px solid #ebebeb;
border-radius: 5px;
}
.list-people{
float: left;
}
.add-people{
width: 45px;
float: right;
overflow: auto;
font-size: 25px;
padding: 10px;
}
.list-people-title{
/* font-size: 13px; */
color: #797979;
}
.attach-document{
font-size: 15px;
color: #0d89d1;
margin: 5px 5px 5px 10px;
padding: 5px;
float: left;
}
.attach-icon{
width: 37px;
font-size: 35px;
float: left;
}
.attach-title-item{
width: 100%;
font-size: 15px;
color:#0d89d1;
}
/* SPAN */
.span-left{
float: left;
font-size: 15x;
}
.span-right{
text-align: right;
float: right;
font-size: 13px;
}
.container-footer{
margin:0 auto;
overflow: auto;
}
.button-cancel {
width: 170px;
height: 44px;
border-radius: 22.5px;
--background: #e0e9ee;
--color: #061b52;
margin:10px;
}
.button-save {
width: 170px;
height: 44px;
border-radius: 22.5px;
--background: #42b9fe;
--color:#ffffff;
margin:10px;
}
.text-input{
width: 100%;
border: 1px solid #ebebeb;
margin: 0px 15px 15px 0px;
padding: 0 !important;
border-radius: 5px;
}
/* Error Messages */
.error{
color:red;
font-size: 12px;
font-weight: bold;
padding-bottom: 20px;
}
.span-color{
color:red;
}
.buttons{
display: flex;
justify-content: space-between;
padding: 20px;
overflow: auto;
}
.app-name{
background: #42b9f2;
border-radius: 18px;
text-align: center;
display: flex;
align-items: center;
padding: 0px 5px;
color: white;
font-size: 9pt;
font-weight: 500;
height: 19px;
-webkit-border-radius: 18px;
-moz-border-radius: 18px;
-ms-border-radius: 18px;
-o-border-radius: 18px;
}
.close-button {
display: none;
}
.list:hover {
.app-name {
display: none;
}
.close-button {
display: block !important;
}
}
@@ -0,0 +1,24 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { EditEventPage } from './edit-event.page';
describe('EditEventPage', () => {
let component: EditEventPage;
let fixture: ComponentFixture<EditEventPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ EditEventPage ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(EditEventPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,258 @@
import { Component, OnInit } from '@angular/core';
import { AlertController, ModalController, NavParams } from '@ionic/angular';
import { Attachment } from 'src/app/models/attachment.model';
import { EventPerson } from 'src/app/models/eventperson.model';
import { AttendeesPage } from 'src/app/pages/events/attendees/attendees.page';
import { SearchPage } from 'src/app/pages/search/search.page';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { EventsService } from 'src/app/services/events.service';
import { ProcessesService } from 'src/app/services/processes.service';
import { Event } from '../../../models/event.model';
@Component({
selector: 'app-edit-event',
templateUrl: './edit-event.page.html',
styleUrls: ['./edit-event.page.scss'],
})
export class EditEventToApproveComponent implements OnInit {
serialNumber: string
loadedAttachments:any
eventProcess = {
taskStartDate: "",
workflowInstanceDataFields:{
Body: "",
IsRecurring: false,
ParticipantsList: [],
Agenda: '',
EndDate: '',
Location: '',
Subject: '',
InstanceId: ''
}
}
show =false
postEvent: Event;
isRecurring:string;
isEventEdited: boolean;
segment:string = "true";
profile:string;
eventAttendees: EventPerson[];
loadedEventAttachments: Attachment[];
taskParticipants: any = [];
taskParticipantsCc: any = [];
adding: "intervenient" | "CC" = "intervenient";
Location = ''
showAttendees = false;
InstanceId: string
constructor(
private modalController: ModalController,
private navParams: NavParams,
private eventsService: EventsService,
public alertController: AlertController,
private attachmentsService: AttachmentsService,
private processes:ProcessesService,
) {
this.serialNumber = this.navParams.get('serialNumber');
// this.profile = this.navParams.get('profile');
this.isEventEdited = false;
this.getTask()
}
async getTask() {
console.log('this.eventProcess', this.eventProcess);
const result = await this.processes.GetTask(this.serialNumber).subscribe( result =>{
this.eventProcess = result
console.log('this.eventProcess', this.eventProcess);
console.log(this.eventProcess.workflowInstanceDataFields.Subject)
// description
let body : any =this.eventProcess.workflowInstanceDataFields.Body.replace(/<[^>]+>/g, '')
this.eventProcess.workflowInstanceDataFields.Body = body
this.Location = this.eventProcess.workflowInstanceDataFields.Location
this.InstanceId = this.eventProcess.workflowInstanceDataFields.InstanceId
this.getAttachments()
// attendees
//this.eventProcess.workflowInstanceDataFields.ParticipantsList
// subject
//this.eventProcess.workflowInstanceDataFields.Subject | this.eventProcess.workflowInstanceFolio
// location
//this.eventProcess.workflowInstanceDataFields.Location
// startDate
//this.eventProcess.taskStartDate
// endDate
//this.eventProcess.workflowInstanceDataFields.EndDate
// this.eventProcess.workflowInstanceDataFields.Agenda
// eventProcess.workflowInstanceDataFields.IsRecurring
if(this.eventProcess.workflowInstanceDataFields.IsRecurring == false) {
this.isRecurring = "Não se repete";
}
else {
this.isRecurring = "Repete";
}
this.eventProcess.workflowInstanceDataFields.ParticipantsList.forEach(e => {
if(e.IsRequired){
this.taskParticipants.push(e);
} else {
this.taskParticipantsCc.push(e);
}
})
})
}
ngOnInit() {
window.onresize = (event) => {
// if not mobile remove all component
if( window.innerWidth >= 800){
this.modalController.dismiss();
}
};
}
close() {
this.modalController.dismiss();
}
save() {
this.eventProcess.workflowInstanceDataFields.ParticipantsList = this.taskParticipants.concat(this.taskParticipantsCc)
}
async openAttendees() {
if(window.innerWidth <= 1024) {
const modal = await this.modalController.create({
component: AttendeesPage,
componentProps: {
adding: this.adding,
taskParticipants: this.taskParticipants,
taskParticipantsCc: this.taskParticipantsCc
},
cssClass: 'attendee modal modal-desktop',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((data) => {
if(data){
data = data['data'];
const newAttendees: EventPerson[] = data['taskParticipants'];
const newAttendeesCC: EventPerson[] = data['taskParticipantsCc'];
this.setIntervenient(newAttendees);
this.setIntervenientCC(newAttendeesCC);
}
});
} else {
this.showAttendees = true
}
}
setIntervenient(data){
this.taskParticipants = data;
this.postEvent.Attendees = data;
}
setIntervenientCC(data){
this.taskParticipantsCc = data;
}
addParticipants(){
this.adding = 'intervenient'
this.openAttendees();
}
addParticipantsCC(){
this.adding = 'CC'
this.openAttendees();
}
dynamicSetIntervenient({taskParticipants, taskParticipantsCc}){
this.taskParticipants = taskParticipants;
this.taskParticipantsCc = taskParticipantsCc;
}
async getAttachments() {
this.loadedAttachments = await this.attachmentsService.getAttachmentsById(this.InstanceId).toPromise();
console.log(this.loadedAttachments)
}
deleteAttachment(attachmentID: string) {
this.attachmentsService.deleteEventAttachmentById(attachmentID).subscribe(
res=>{
this.loadedAttachments = this.loadedAttachments.filter(e=> e.Id.toString() != attachmentID);
})
}
async getDoc() {
const modal = await this.modalController.create({
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true,
select: true,
}
});
await modal.present();
modal.onDidDismiss().then( async (res)=>{
if(res){
const data = res.data;
//data.selected
const DocumentToSave = {
SourceTitle: data.selected.Assunto,
ParentId: this.InstanceId,
Source: '1',
SourceId: data.selected.Id,
ApplicationId: data.selected.ApplicationType.toString(),
Id: '',
Link: '',
SerialNumber: ''
};
await this.attachmentsService.setEventAttachmentById(DocumentToSave).subscribe(()=>{
this.getAttachments();
});
}
});
}
}