mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 12:37:53 +00:00
fix agenda and publication
This commit is contained in:
@@ -0,0 +1,107 @@
|
|||||||
|
# Software Architecture documentation
|
||||||
|
This Architecture promotes a clear separation of concerns by dividing the system into layers, each with its own responsibility. However, rather than using a traditional layered approach, we'll focus on a component-based structure where each component adheres to SOLID principles and can operate independently. The architecture consist of the following layers:
|
||||||
|
|
||||||
|
- **Components**: Business components
|
||||||
|
- **Presentation**: UI components and Angular services.
|
||||||
|
|
||||||
|
## Architecture Layers
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Components
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Components are the core business logic units in the application. The components are divided into two sub-layers:
|
||||||
|
|
||||||
|
**Domain Layer**
|
||||||
|
|
||||||
|
- Contains business logic and rules.
|
||||||
|
- Models the business entities.
|
||||||
|
- Does not depend on the data layer or any other external services.
|
||||||
|
|
||||||
|
**Data Layer**
|
||||||
|
|
||||||
|
- Responsible for data access and persistence.
|
||||||
|
- Contains repositories or data services that interact with APIs or databases.
|
||||||
|
- Isolated from the domain layer to ensure a clear separation of concerns.
|
||||||
|
|
||||||
|
### Presentation
|
||||||
|

|
||||||
|
|
||||||
|
The presentation layer is responsible for the user interface and interactions. It consists of Angular UI components and services:
|
||||||
|
|
||||||
|
|
||||||
|
## File Structure Explanation
|
||||||
|
The project is divided into several key sections, each serving a specific purpose:
|
||||||
|
|
||||||
|
**Source Code (src)**
|
||||||
|
|
||||||
|
- **common**: Shared utilities such as decorators, interceptors, and guards.
|
||||||
|
|
||||||
|
- **core**: Business Object divided by features to store shared entity, use case and repository interface
|
||||||
|
|
||||||
|
- **infra**: Infrastructure code such as storage, HTTP clients, and logging.
|
||||||
|
|
||||||
|
- **libs**: Reusable libraries (e.g., session management, cryptography).
|
||||||
|
|
||||||
|
- **components**: Business Feature divided by responsibility
|
||||||
|
|
||||||
|
- **UI**: Presentation layer with Angular divided by Feature
|
||||||
|
|
||||||
|
- **utils**: Utility functions and constants.
|
||||||
|
main.ts: Entry point of the application.
|
||||||
|
|
||||||
|
|
||||||
|
├── package-lock.json
|
||||||
|
├── package.json
|
||||||
|
├── src
|
||||||
|
│ ├── common
|
||||||
|
│ ├── core
|
||||||
|
│ │ ├── attachment
|
||||||
|
│ │ │ ├── entity
|
||||||
|
│ │ │ ├── repository
|
||||||
|
│ │ │ └── use-cases
|
||||||
|
│ ├── components
|
||||||
|
│ │ ├── gabinete
|
||||||
|
│ │ │ ├── domain
|
||||||
|
│ │ │ ├── data
|
||||||
|
│ │ ├── Agenda
|
||||||
|
│ │ │ ├── domain
|
||||||
|
│ │ │ ├── data
|
||||||
|
│ ├── UI
|
||||||
|
│ │ ├── pages
|
||||||
|
│ │ │ ├── share
|
||||||
|
| │ │ │ ├── buttons
|
||||||
|
│ │ │ │ └── modal
|
||||||
|
│ │ │ ├── Home
|
||||||
|
│ │ │ | ├── service
|
||||||
|
│ │ │ │ └── store
|
||||||
|
│ │ │ ├── Agenda
|
||||||
|
│ │ │ ├── Gabinete
|
||||||
|
│ │ │ ├── Actions
|
||||||
|
│ │ │ ├── Chat
|
||||||
|
│ ├── infra
|
||||||
|
│ │ ├── http
|
||||||
|
│ ├── utils
|
||||||
|
│ │ ├── date.ts
|
||||||
|
│ │ ├── exception.ts
|
||||||
|
│ │ ├── sort.ts
|
||||||
|
│ ├── libs
|
||||||
|
|
||||||
|
|
||||||
|
## Achieving Reusability
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example: Gabinete Page
|
||||||
|
|
||||||
|
Consider a Gabinete scenario:
|
||||||
|
- **Business components**: Event Component, Gabinete Component
|
||||||
|
- **UI components**: Gabinete UI Business
|
||||||
|
|
||||||
|
In this setup, the Event Component functionalities are reusable without any dependency on UI details. If the product team introduces create-event functionality in the Gabinete screen, the Event Component module can be added as a dependency to the Gabinete UI module seamlessly.
|
||||||
|

|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
This file structure supports Clean Architecture by ensuring a clear separation of concerns and adhering to SOLID principles. Each part of the application is modular, making it easy to maintain, test, and extend. This setup promotes a clean and organized project that scales well as complexity grows.
|
||||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 168 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 91 KiB |
+133
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 278 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 30 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 36 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 24 KiB |
+11
-11
@@ -363,18 +363,18 @@ export class HomePage implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async synchWhenOnline() {
|
async synchWhenOnline() {
|
||||||
try {
|
// try {
|
||||||
await this.storage.get('eventEdit').then((req) => {
|
// await this.storage.get('eventEdit').then((req) => {
|
||||||
JSON.parse(req).forEach(element => {
|
// JSON.parse(req).forEach(element => {
|
||||||
this.eventservice.editEvent(element, 2, 3).subscribe((res) => {
|
// this.eventservice.editEvent(element, 2, 3).subscribe((res) => {
|
||||||
this.storage.remove('eventEdit')
|
// this.storage.remove('eventEdit')
|
||||||
//this.sqliteservice.deleteeventsTable();
|
// //this.sqliteservice.deleteeventsTable();
|
||||||
})
|
// })
|
||||||
});
|
// });
|
||||||
})
|
// })
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await this.storage.get('eventDelete').then((req) => {
|
await this.storage.get('eventDelete').then((req) => {
|
||||||
|
|||||||
@@ -78,23 +78,23 @@ export class ViewEventPage implements OnInit {
|
|||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.loadEvent();
|
this.loadEvent();
|
||||||
|
|
||||||
this.backgroundservice.registerBackService('Online', () => {
|
// this.backgroundservice.registerBackService('Online', () => {
|
||||||
this.storage.get('eventEdit').then((req) => {
|
// this.storage.get('eventEdit').then((req) => {
|
||||||
JSON.parse(req).forEach(element => {
|
// JSON.parse(req).forEach(element => {
|
||||||
this.eventsService.editEvent(element, 2, 3).subscribe((res) => {
|
// this.eventsService.editEvent(element, 2, 3).subscribe((res) => {
|
||||||
this.storage.remove('eventEdit')
|
// this.storage.remove('eventEdit')
|
||||||
})
|
// })
|
||||||
});
|
// });
|
||||||
})
|
// })
|
||||||
this.storage.get('eventDelete').then((req) => {
|
// this.storage.get('eventDelete').then((req) => {
|
||||||
JSON.parse(req).forEach(element => {
|
// JSON.parse(req).forEach(element => {
|
||||||
this.eventsService.editEvent(element, 2, 3).subscribe((res) => {
|
// this.eventsService.editEvent(element, 2, 3).subscribe((res) => {
|
||||||
this.storage.remove('eventDelete')
|
// this.storage.remove('eventDelete')
|
||||||
})
|
// })
|
||||||
});
|
// });
|
||||||
})
|
// })
|
||||||
this.loadEvent();
|
// this.loadEvent();
|
||||||
});
|
// });
|
||||||
|
|
||||||
window.onresize = (event) => {
|
window.onresize = (event) => {
|
||||||
// if not mobile remove all component
|
// if not mobile remove all component
|
||||||
|
|||||||
@@ -377,7 +377,7 @@ export class EditEventPage implements OnInit {
|
|||||||
this.postEvent.EventRecurrence.Type = this.selectedRecurringType;
|
this.postEvent.EventRecurrence.Type = this.selectedRecurringType;
|
||||||
|
|
||||||
if (this.sesseionStora.user.Profile == 'MDGPR' || this.sesseionStora.user.Profile == 'PR') {
|
if (this.sesseionStora.user.Profile == 'MDGPR' || this.sesseionStora.user.Profile == 'PR') {
|
||||||
this.eventsService.editEvent(this.postEvent, 2, 3).subscribe(async () => {
|
this.eventsService.editEvent(this.postEvent, 2, 3, null).subscribe(async () => {
|
||||||
|
|
||||||
if (window['reloadCalendar']) {
|
if (window['reloadCalendar']) {
|
||||||
window['reloadCalendar']()
|
window['reloadCalendar']()
|
||||||
|
|||||||
@@ -106,25 +106,25 @@ export class ViewEventPage implements OnInit {
|
|||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.loadEvent();
|
this.loadEvent();
|
||||||
|
|
||||||
this.backgroundservice.registerBackService('Online', () => {
|
// this.backgroundservice.registerBackService('Online', () => {
|
||||||
this.storage.get('eventEdit').then((req) => {
|
// this.storage.get('eventEdit').then((req) => {
|
||||||
JSON.parse(req).forEach(element => {
|
// JSON.parse(req).forEach(element => {
|
||||||
this.eventsService.editEvent(element, 2, 3).subscribe((res) => {
|
// this.eventsService.editEvent(element, 2, 3).subscribe((res) => {
|
||||||
this.storage.remove('eventEdit')
|
// this.storage.remove('eventEdit')
|
||||||
|
|
||||||
})
|
// })
|
||||||
});
|
// });
|
||||||
})
|
// })
|
||||||
this.storage.get('eventDelete').then((req) => {
|
// this.storage.get('eventDelete').then((req) => {
|
||||||
JSON.parse(req).forEach(element => {
|
// JSON.parse(req).forEach(element => {
|
||||||
this.eventsService.editEvent(element, 2, 3).subscribe((res) => {
|
// this.eventsService.editEvent(element, 2, 3).subscribe((res) => {
|
||||||
this.storage.remove('eventDelete')
|
// this.storage.remove('eventDelete')
|
||||||
|
|
||||||
})
|
// })
|
||||||
});
|
// });
|
||||||
})
|
// })
|
||||||
this.loadEvent();
|
// this.loadEvent();
|
||||||
});
|
// });
|
||||||
|
|
||||||
window.onresize = (event) => {
|
window.onresize = (event) => {
|
||||||
// if not mobile remove all component
|
// if not mobile remove all component
|
||||||
|
|||||||
@@ -243,7 +243,7 @@
|
|||||||
{{last ? scrollToBottom() : ''}}
|
{{last ? scrollToBottom() : ''}}
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="msg.t == 'ul'" class="info-text-leave">
|
<div *ngIf="msg.t == 'ul'" class="info-text-leave">
|
||||||
<div *ngFor="let user of allUsers">
|
<div *ngFor="let user of ChatSystemService.users">
|
||||||
<div *ngIf="msg.msg == user.username">
|
<div *ngIf="msg.msg == user.username">
|
||||||
<ion-label>{{user.name}} saiu do grupo</ion-label><br />
|
<ion-label>{{user.name}} saiu do grupo</ion-label><br />
|
||||||
</div>
|
</div>
|
||||||
@@ -251,7 +251,7 @@
|
|||||||
{{last ? scrollToBottom() : ''}}
|
{{last ? scrollToBottom() : ''}}
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="msg.t == 'ru'" class="info-text-leave">
|
<div *ngIf="msg.t == 'ru'" class="info-text-leave">
|
||||||
<div *ngFor="let user of allUsers">
|
<div *ngFor="let user of ChatSystemService.users">
|
||||||
<div *ngIf="msg.msg == user.username">
|
<div *ngIf="msg.msg == user.username">
|
||||||
<ion-label>{{user.name}} foi removido do grupo</ion-label><br />
|
<ion-label>{{user.name}} foi removido do grupo</ion-label><br />
|
||||||
</div>
|
</div>
|
||||||
@@ -260,7 +260,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div *ngIf="msg.t == 'au' && msg.msg != sessionStore.user.UserName">
|
<div *ngIf="msg.t == 'au' && msg.msg != sessionStore.user.UserName">
|
||||||
|
|
||||||
<div *ngFor="let user of allUsers">
|
<div *ngFor="let user of ChatSystemService.users">
|
||||||
<div *ngIf="msg.msg == user.username" class="info-text-leave">
|
<div *ngIf="msg.msg == user.username" class="info-text-leave">
|
||||||
<ion-label>Adicionou {{user.name}}</ion-label><br />
|
<ion-label>Adicionou {{user.name}}</ion-label><br />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
|
|||||||
roomName: any;
|
roomName: any;
|
||||||
members: any = []
|
members: any = []
|
||||||
contacts: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"];
|
contacts: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"];
|
||||||
allUsers: any[] = [];
|
|
||||||
|
|
||||||
roomId: string;
|
roomId: string;
|
||||||
loggedUserChat: any;
|
loggedUserChat: any;
|
||||||
@@ -421,12 +420,9 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getChatMembers() {
|
async getChatMembers() {
|
||||||
this.chatService.getAllUsers().subscribe(res => {
|
if(this.ChatSystemService.users.length == 0) {
|
||||||
|
this.ChatSystemService.getUser()
|
||||||
|
}
|
||||||
this.allUsers = res['users'].filter(data => data.username != SessionStore.user.UserName);
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* load(){
|
/* load(){
|
||||||
|
|||||||
@@ -162,28 +162,28 @@ export class EditEventPage implements OnInit {
|
|||||||
|
|
||||||
Save()
|
Save()
|
||||||
{
|
{
|
||||||
if (this.ionicForm.valid){
|
// if (this.ionicForm.valid){
|
||||||
|
|
||||||
this.activatedRoute.paramMap.subscribe(paramMap =>{
|
// this.activatedRoute.paramMap.subscribe(paramMap =>{
|
||||||
if (paramMap.has("profile")){
|
// if (paramMap.has("profile")){
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
|
// this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
|
||||||
{
|
// {
|
||||||
const alert = await this.alertController.create({
|
// const alert = await this.alertController.create({
|
||||||
cssClass: 'my-custom-class',
|
// cssClass: 'my-custom-class',
|
||||||
header: 'Evento actualizado',
|
// header: 'Evento actualizado',
|
||||||
buttons: ['OK']
|
// buttons: ['OK']
|
||||||
});
|
// });
|
||||||
|
|
||||||
setTimeout(()=>{
|
// setTimeout(()=>{
|
||||||
alert.dismiss();
|
// alert.dismiss();
|
||||||
}, 1500);
|
// }, 1500);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
showAlert(){
|
showAlert(){
|
||||||
|
|||||||
@@ -163,27 +163,27 @@ export class EventDetailPage implements OnInit {
|
|||||||
|
|
||||||
Save()
|
Save()
|
||||||
{
|
{
|
||||||
if (this.ionicForm.valid){
|
// if (this.ionicForm.valid){
|
||||||
|
|
||||||
this.activatedRoute.paramMap.subscribe(paramMap =>{
|
// this.activatedRoute.paramMap.subscribe(paramMap =>{
|
||||||
if (paramMap.has("profile")){
|
// if (paramMap.has("profile")){
|
||||||
|
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
|
// this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
|
||||||
{
|
// {
|
||||||
const alert = await this.alertController.create({
|
// const alert = await this.alertController.create({
|
||||||
cssClass: 'my-custom-class',
|
// cssClass: 'my-custom-class',
|
||||||
header: 'Evento actualizado',
|
// header: 'Evento actualizado',
|
||||||
buttons: ['OK']
|
// buttons: ['OK']
|
||||||
});
|
// });
|
||||||
|
|
||||||
setTimeout(()=>{
|
// setTimeout(()=>{
|
||||||
alert.dismiss();
|
// alert.dismiss();
|
||||||
}, 1500);
|
// }, 1500);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
showAlert(){
|
showAlert(){
|
||||||
|
|||||||
@@ -886,7 +886,7 @@ export class EventsService {
|
|||||||
return this.http.put<Event>(`${puturl}`, event, options)
|
return this.http.put<Event>(`${puturl}`, event, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
editEvent(event: Event, conflictResolutionMode: number, sendInvitationsOrCancellationsMode: number, CalendarId? ): Observable<Event> {
|
editEvent(event: Event, conflictResolutionMode: number, sendInvitationsOrCancellationsMode: number, CalendarId ): Observable<Event> {
|
||||||
let arrayReq = [];
|
let arrayReq = [];
|
||||||
arrayReq.push(event);
|
arrayReq.push(event);
|
||||||
const puturl = environment.apiURL + 'calendar/PutEvent';
|
const puturl = environment.apiURL + 'calendar/PutEvent';
|
||||||
@@ -917,6 +917,21 @@ export class EventsService {
|
|||||||
this.headers = this.headersPrOficial;
|
this.headers = this.headersPrOficial;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|
||||||
|
if(CalendarId) {
|
||||||
|
|
||||||
|
const headers = [
|
||||||
|
this.headerSharedOficial,
|
||||||
|
this.headerSharedPessoal,
|
||||||
|
this.headerOwnPessoal,
|
||||||
|
this.headerOwnOficial
|
||||||
|
]
|
||||||
|
|
||||||
|
const calendar = this.DetectCalendars(CalendarId)
|
||||||
|
const header = this.makeHeader(calendar)
|
||||||
|
|
||||||
|
this.headers = header
|
||||||
|
} else {
|
||||||
const headers = [
|
const headers = [
|
||||||
this.headerSharedOficial,
|
this.headerSharedOficial,
|
||||||
this.headerSharedPessoal,
|
this.headerSharedPessoal,
|
||||||
@@ -930,6 +945,8 @@ export class EventsService {
|
|||||||
|
|
||||||
this.headers = header
|
this.headers = header
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (SessionStore.user.Profile == 'MDGPR') {
|
if (SessionStore.user.Profile == 'MDGPR') {
|
||||||
@@ -939,6 +956,23 @@ export class EventsService {
|
|||||||
this.headers = this.headersPrPessoal;
|
this.headers = this.headersPrPessoal;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(CalendarId) {
|
||||||
|
|
||||||
|
const headers = [
|
||||||
|
this.headerSharedOficial,
|
||||||
|
this.headerSharedPessoal,
|
||||||
|
this.headerOwnPessoal,
|
||||||
|
this.headerOwnOficial
|
||||||
|
]
|
||||||
|
|
||||||
|
const calendar = this.DetectCalendars(CalendarId)
|
||||||
|
const header = this.makeHeader(calendar)
|
||||||
|
|
||||||
|
this.headers = header
|
||||||
|
} else {
|
||||||
const headers = [
|
const headers = [
|
||||||
this.headerSharedOficial,
|
this.headerSharedOficial,
|
||||||
this.headerSharedPessoal,
|
this.headerSharedPessoal,
|
||||||
@@ -953,6 +987,7 @@ export class EventsService {
|
|||||||
this.headers = header
|
this.headers = header
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let options = {
|
let options = {
|
||||||
headers: this.headers,
|
headers: this.headers,
|
||||||
|
|||||||
+17
-17
@@ -158,28 +158,28 @@ export class EditEventPage implements OnInit {
|
|||||||
|
|
||||||
Save()
|
Save()
|
||||||
{
|
{
|
||||||
if (this.ionicForm.valid){
|
// if (this.ionicForm.valid){
|
||||||
|
|
||||||
this.activatedRoute.paramMap.subscribe(paramMap =>{
|
// this.activatedRoute.paramMap.subscribe(paramMap =>{
|
||||||
if (paramMap.has("profile")){
|
// if (paramMap.has("profile")){
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
|
// this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
|
||||||
{
|
// {
|
||||||
const alert = await this.alertController.create({
|
// const alert = await this.alertController.create({
|
||||||
cssClass: 'my-custom-class',
|
// cssClass: 'my-custom-class',
|
||||||
header: 'Evento actualizado',
|
// header: 'Evento actualizado',
|
||||||
buttons: ['OK']
|
// buttons: ['OK']
|
||||||
});
|
// });
|
||||||
|
|
||||||
setTimeout(()=>{
|
// setTimeout(()=>{
|
||||||
alert.dismiss();
|
// alert.dismiss();
|
||||||
}, 1500);
|
// }, 1500);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
loadAttachments()
|
loadAttachments()
|
||||||
+17
-17
@@ -158,28 +158,28 @@ export class EventDetailPage implements OnInit {
|
|||||||
|
|
||||||
Save()
|
Save()
|
||||||
{
|
{
|
||||||
if (this.ionicForm.valid){
|
// if (this.ionicForm.valid){
|
||||||
|
|
||||||
this.activatedRoute.paramMap.subscribe(paramMap =>{
|
// this.activatedRoute.paramMap.subscribe(paramMap =>{
|
||||||
if (paramMap.has("profile")){
|
// if (paramMap.has("profile")){
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
|
// this.eventsService.editEvent(this.loadedEvent, 2, 3).subscribe(async () =>
|
||||||
{
|
// {
|
||||||
const alert = await this.alertController.create({
|
// const alert = await this.alertController.create({
|
||||||
cssClass: 'my-custom-class',
|
// cssClass: 'my-custom-class',
|
||||||
header: 'Evento actualizado',
|
// header: 'Evento actualizado',
|
||||||
buttons: ['OK']
|
// buttons: ['OK']
|
||||||
});
|
// });
|
||||||
|
|
||||||
setTimeout(()=>{
|
// setTimeout(()=>{
|
||||||
alert.dismiss();
|
// alert.dismiss();
|
||||||
}, 1500);
|
// }, 1500);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
loadAttachments()
|
loadAttachments()
|
||||||
@@ -8,10 +8,10 @@ const routes: Routes = [
|
|||||||
path: '',
|
path: '',
|
||||||
component: EventsPage
|
component: EventsPage
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
path: 'event-detail',
|
// path: 'event-detail',
|
||||||
loadChildren: () => import('./event-detail/event-detail.module').then( m => m.EventDetailPageModule)
|
// loadChildren: () => import('./event-detail/event-detail.module').then( m => m.EventDetailPageModule)
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
path: 'attachments',
|
path: 'attachments',
|
||||||
loadChildren: () => import('./attachments/attachments.module').then( m => m.AttachmentsPageModule)
|
loadChildren: () => import('./attachments/attachments.module').then( m => m.AttachmentsPageModule)
|
||||||
@@ -24,10 +24,10 @@ const routes: Routes = [
|
|||||||
path: 'event-detail-modal',
|
path: 'event-detail-modal',
|
||||||
loadChildren: () => import('./event-detail-modal/event-detail-modal.module').then( m => m.EventDetailModalPageModule)
|
loadChildren: () => import('./event-detail-modal/event-detail-modal.module').then( m => m.EventDetailModalPageModule)
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
path: 'edit-event',
|
// path: 'edit-event',
|
||||||
loadChildren: () => import('./edit-event/edit-event.module').then( m => m.EditEventPageModule)
|
// loadChildren: () => import('./edit-event/edit-event.module').then( m => m.EditEventPageModule)
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { EventsService } from 'src/app/services/events.service';
|
|||||||
import { NavigationExtras, Router } from '@angular/router';
|
import { NavigationExtras, Router } from '@angular/router';
|
||||||
import { ActivatedRoute, NavigationEnd } from '@angular/router';
|
import { ActivatedRoute, NavigationEnd } from '@angular/router';
|
||||||
import { ModalController, Platform } from '@ionic/angular';
|
import { ModalController, Platform } from '@ionic/angular';
|
||||||
import { EventDetailPage } from './event-detail/event-detail.page';
|
// import { EventDetailPage } from './event-detail/event-detail.page';
|
||||||
import { ProcessesService } from '../../services/processes.service';
|
import { ProcessesService } from '../../services/processes.service';
|
||||||
import { DailyWorkTask } from '../../models/dailyworktask.model';
|
import { DailyWorkTask } from '../../models/dailyworktask.model';
|
||||||
import { LoginUserRespose } from 'src/app/models/user.model';
|
import { LoginUserRespose } from 'src/app/models/user.model';
|
||||||
@@ -315,23 +315,8 @@ export class EventsPage implements OnInit {
|
|||||||
this.router.navigate(['/home/login']);
|
this.router.navigate(['/home/login']);
|
||||||
}
|
}
|
||||||
|
|
||||||
async openEventDetail1(id:any){
|
|
||||||
|
|
||||||
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: EventDetailPage,
|
|
||||||
componentProps: {
|
|
||||||
eventId: id,
|
|
||||||
},
|
|
||||||
cssClass: 'event-detail',
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss();
|
|
||||||
await modal.present();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
LoadList() {
|
LoadList() {
|
||||||
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||||
|
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ export class EditEventPage implements OnInit {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if(this.sesseionStora.user.Profile == 'MDGPR' || this.sesseionStora.user.Profile == 'PR') {
|
if(this.sesseionStora.user.Profile == 'MDGPR' || this.sesseionStora.user.Profile == 'PR') {
|
||||||
await this.eventsService.editEvent(this._postEvent, 2, 3).toPromise()
|
await this.eventsService.editEvent(this._postEvent, 2, 3, this._postEvent.CalendarId).toPromise()
|
||||||
if(this.initCalendarName != this._postEvent.CalendarName) {
|
if(this.initCalendarName != this._postEvent.CalendarName) {
|
||||||
let body = {
|
let body = {
|
||||||
"EventId": this._postEvent.EventId,
|
"EventId": this._postEvent.EventId,
|
||||||
@@ -380,6 +380,7 @@ export class EditEventPage implements OnInit {
|
|||||||
this.showLoader = false;
|
this.showLoader = false;
|
||||||
this.httpErrorHandle.httpsSucessMessagge('Editar evento')
|
this.httpErrorHandle.httpsSucessMessagge('Editar evento')
|
||||||
} else {
|
} else {
|
||||||
|
console.log(this._postEvent, 2, 3, this._postEvent.CalendarId)
|
||||||
await this.eventsService.editEvent(this._postEvent, 2, 3, this._postEvent.CalendarId).toPromise()
|
await this.eventsService.editEvent(this._postEvent, 2, 3, this._postEvent.CalendarId).toPromise()
|
||||||
if(this.initCalendarName != this._postEvent.CalendarName) {
|
if(this.initCalendarName != this._postEvent.CalendarName) {
|
||||||
let body = {
|
let body = {
|
||||||
@@ -542,7 +543,7 @@ export class EditEventPage implements OnInit {
|
|||||||
SourceName: data.selected.Assunto,
|
SourceName: data.selected.Assunto,
|
||||||
ParentId: this._postEvent.EventId,
|
ParentId: this._postEvent.EventId,
|
||||||
SourceId: data.selected.Id,
|
SourceId: data.selected.Id,
|
||||||
Stakeholders: data.selected.Stakeholders | data.selected.EntidadeOrganicaNome,
|
Stakeholders: data.selected.EntidadeOrganicaNome | data.selected.Stakeholders,
|
||||||
ApplicationId: data.selected.ApplicationType.toString(),
|
ApplicationId: data.selected.ApplicationType.toString(),
|
||||||
CreateDate: data.selected.Data,
|
CreateDate: data.selected.Data,
|
||||||
Id: 'add',
|
Id: 'add',
|
||||||
|
|||||||
@@ -213,7 +213,7 @@
|
|||||||
{{last ? scrollToBottom() : ''}}
|
{{last ? scrollToBottom() : ''}}
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="msg.t == 'au' && msg.msg != sessionStore.user.UserName">
|
<div *ngIf="msg.t == 'au' && msg.msg != sessionStore.user.UserName">
|
||||||
<div *ngFor="let user of allUsers">
|
<div *ngFor="let user of ChatSystemService.users">
|
||||||
<div *ngIf="msg.msg == user.username" class="info-text-leave">
|
<div *ngIf="msg.msg == user.username" class="info-text-leave">
|
||||||
<ion-label>Adicionou {{user.name}}</ion-label><br />
|
<ion-label>Adicionou {{user.name}}</ion-label><br />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
|
|||||||
loggedUser: any;
|
loggedUser: any;
|
||||||
message: any;
|
message: any;
|
||||||
messages: any;
|
messages: any;
|
||||||
allUsers: any[] = [];
|
|
||||||
documents: SearchList[] = [];
|
documents: SearchList[] = [];
|
||||||
|
|
||||||
room: any = new Array();
|
room: any = new Array();
|
||||||
@@ -333,12 +332,18 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
|
|||||||
|
|
||||||
async getChatMembers() {
|
async getChatMembers() {
|
||||||
|
|
||||||
this.chatService.getAllUsers().subscribe(res => {
|
// this.chatService.getAllUsers().subscribe(res => {
|
||||||
//
|
// //
|
||||||
|
|
||||||
|
// this.allUsers = res['users']
|
||||||
|
// //
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
if(this.ChatSystemService.users.length == 0) {
|
||||||
|
this.ChatSystemService.getUser()
|
||||||
|
}
|
||||||
|
|
||||||
this.allUsers = res['users']
|
|
||||||
//
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
openGroupContactsPage() {
|
openGroupContactsPage() {
|
||||||
|
|||||||
@@ -226,13 +226,14 @@ export class PublicationFromMvService {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
await this.publications.CreatePublication(publication.ProcessId, publication).toPromise()
|
const publicationsId = await this.publications.CreatePublication(publication.ProcessId, publication).toPromise()
|
||||||
|
|
||||||
this.httpErroHandle.httpsSucessMessagge('Criar publicação')
|
this.httpErroHandle.httpsSucessMessagge('Criar publicação')
|
||||||
|
|
||||||
// this.goBackToViewPublications.emit();
|
// this.goBackToViewPublications.emit();
|
||||||
window['upload-header-set-remove'](this.id);
|
window['upload-header-set-remove'](this.id);
|
||||||
this.doneUpload()
|
this.doneUpload()
|
||||||
this.publicationFolderService.getPublicationsIds(this.folderId)
|
this.publicationFolderService.loadPublication(publicationsId, this.folderId)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
window['upload-header-set-retry'](this.id)
|
window['upload-header-set-retry'](this.id)
|
||||||
this.httpErroHandle.httpStatusHandle(error)
|
this.httpErroHandle.httpStatusHandle(error)
|
||||||
|
|||||||
@@ -184,15 +184,13 @@ export class PublicationFolderService {
|
|||||||
let a: any = Object.assign({}, this.publicationList[folderId][findIndex])
|
let a: any = Object.assign({}, this.publicationList[folderId][findIndex])
|
||||||
let b: any = Object.assign({}, publicationDetails)
|
let b: any = Object.assign({}, publicationDetails)
|
||||||
|
|
||||||
a.Files = a.Files.length
|
const fileNamesB = a.Files.map((e) => e.OriginalFileName).join('')
|
||||||
b.Files = b.Files.length
|
const fileNamesL = b.Files.map((e) => e.OriginalFileName).join('')
|
||||||
|
|
||||||
if (JSON.stringify(a) != JSON.stringify(b)) {
|
if (a.Message != b.Message || a.Title != b.Title || a.Files.length != b.Files.length || fileNamesB != fileNamesL) {
|
||||||
|
|
||||||
console.log({a, b})
|
console.log({a, b})
|
||||||
this.publicationList[folderId][findIndex] = publicationDetails
|
this.publicationList[folderId][findIndex] = publicationDetails
|
||||||
} else {
|
|
||||||
// console.log({publicationDetails})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ import { environment as oaprProd } from './suport/oapr'
|
|||||||
import { DevDev } from './suport/dev'
|
import { DevDev } from './suport/dev'
|
||||||
|
|
||||||
|
|
||||||
export const environment: Environment = oaprProd;
|
export const environment: Environment = DevDev;
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
"folders": [
|
"folders": [
|
||||||
{
|
{
|
||||||
"path": "."
|
"path": "."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../testAu"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"settings": {
|
"settings": {
|
||||||
|
|||||||
Reference in New Issue
Block a user