Merge branch 'oggui/calendar' into develop

develop-jenkins
Alvaro Puente Mella 2024-10-11 12:51:28 +02:00
commit 251f0e3464
7 changed files with 105 additions and 36 deletions

View File

@ -86,6 +86,12 @@
},
"serve": {
"builder": "@ngx-env/builder:dev-server",
"options": {
"port": 4200,
"ssl": true,
"sslKey": "./ssl/oggui.uds-test.net.key.pem",
"sslCert": "./ssl/oggui.uds-test.net.crt.pem"
},
"configurations": {
"production": {
"buildTarget": "ogWebconsole:build:production"

View File

@ -0,0 +1,14 @@
FROM node:22.1.0
WORKDIR /app
RUN npm install -g npm@latest
RUN npm install -g @angular/cli@^12.0.0
COPY . /app
RUN npm install
EXPOSE 4200
CMD ["ng", "serve", "--ssl","--host", "0.0.0.0", "--disable-host-check"]

View File

@ -259,7 +259,6 @@ export class GroupsComponent implements OnInit {
if (type != "client") {
const dialogRef = this.dialog.open(EditOrganizationalUnitComponent, { data: { uuid }, width: '700px'});
} else {
console.log('Editar cliente');
const dialogRef = this.dialog.open(EditClientComponent, { data: { uuid }, width: '700px' } );
}
}

View File

@ -138,10 +138,12 @@ export class CreateOrganizationalUnitComponent implements OnInit {
response => {
this.unitAdded.emit();
this.dialogRef.close();
this.toastService.success('Cliente creado exitosamente', 'Éxito');
this.openSnackBar(false, 'Cliente creado exitosamente');
},
error => {
console.error('Error al realizar POST:', error);
this.toastService.error('Ha ocurrido un error');
this.openSnackBar(true, 'Error al crear la unidad organizativa: ' + error.error['hydra:description']);
}
);

View File

@ -46,38 +46,38 @@ export class EditOrganizationalUnitComponent implements OnInit {
this.isEditMode = !!data?.uuid;
this.generalFormGroup = this._formBuilder.group({
name: ['', Validators.required],
parent: [''],
description: [''],
type: ['', Validators.required]
name: [null],
parent: [null],
description: [null],
type: [null]
});
this.additionalInfoFormGroup = this._formBuilder.group({
comments: [''],
comments: [null],
});
this.networkSettingsFormGroup = this._formBuilder.group({
proxy: [''],
dns: [''],
netmask: [''],
router: [''],
ntp: [''],
p2pMode: [''],
p2pTime: [0, Validators.min(0)],
mcastIp: [''],
mcastSpeed: [0, Validators.min(0)],
mcastPort: [0, Validators.min(0)],
mcastMode: [''],
proxy: [null],
dns: [null],
netmask: [null],
router: [null],
ntp: [null],
p2pMode: [null],
p2pTime: [null],
mcastIp: [null],
mcastSpeed: [null],
mcastPort: [null],
mcastMode: [null],
menu: [null],
hardwareProfile: [null],
validation: [false]
});
this.classroomInfoFormGroup = this._formBuilder.group({
location: [''],
location: [null],
projector: [false],
board: [false],
capacity: [0, Validators.min(0)],
capacity: [null],
remoteCalendar: [null]
});
@ -122,7 +122,7 @@ export class EditOrganizationalUnitComponent implements OnInit {
response => this.calendars = response['hydra:member'],
error => {
console.error('Error loading calendars', error);
this.openSnackBar(true, 'Error loading calendars');
this.toastService.error('Error loading current calendar');
}
);
}
@ -133,7 +133,7 @@ export class EditOrganizationalUnitComponent implements OnInit {
response => this.currentCalendar = response,
error => {
console.error('Error loading current calendar', error);
this.openSnackBar(true, 'Error loading current calendar');
this.toastService.error('Error loading current calendar');
}
);}
@ -148,7 +148,6 @@ export class EditOrganizationalUnitComponent implements OnInit {
this.http.get<any>(url).subscribe(
data => {
console.log('Data fetched for edit:', data);
this.generalFormGroup.patchValue({
name: data.name,
parent: data.parent ? data.parent['@id'] : '',
@ -185,7 +184,7 @@ export class EditOrganizationalUnitComponent implements OnInit {
error => {
console.error('Error fetching data for edit:', error);
this.openSnackBar(true, 'Error al cargar la unidad organizativa: ' + error.error['hydra:description'])
this.toastService.error('Error fetching data');
this.onNoClick()
}
);
@ -195,8 +194,6 @@ export class EditOrganizationalUnitComponent implements OnInit {
onSubmit() {
if (this.generalFormGroup.valid && this.additionalInfoFormGroup.valid && this.networkSettingsFormGroup.valid) {
const parentValue = this.generalFormGroup.value.parent;
console.log(this.generalFormGroup.value.remoetCalendar);
const formData = {
name: this.generalFormGroup.value.name,
parent: parentValue || null,
@ -209,35 +206,35 @@ export class EditOrganizationalUnitComponent implements OnInit {
if (this.isEditMode) {
// Edit mode: Send PUT request to update the unit
const putUrl = `${this.baseUrl}/organizational-units/${this.data.uuid}`;
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
console.log('PUT URLLLLL:', formData);
this.http.put<any>(putUrl, formData, { headers }).subscribe(
response => {
console.log('PUT successful:', response);
this.unitAdded.emit();
this.dialogRef.close();
this.toastService.success('Editado exitosamente', 'Éxito');
},
error => {
console.error('Error al realizar PUT:', error);
this.toastService.error('Error al editar:', error);
}
);
} else {
// Create mode: Send POST request to create a new unit
const postUrl = `${this.baseUrl}/organizational-units`;
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
this.http.post<any>(postUrl, formData, { headers }).subscribe(
response => {
console.log('POST successful:', response);
this.unitAdded.emit();
this.dialogRef.close();
this.openSnackBar(false, 'Cliente creado exitosamente');
this.toastService.success('Editado exitosamente', 'Éxito');
},
error => {
console.error('Error al realizar POST:', error);
this.openSnackBar(true, 'Error al crear la unidad organizativa: ' + error.error['hydra:description']);
this.toastService.error('Error al editar:', error);
}
);
}
@ -248,10 +245,5 @@ export class EditOrganizationalUnitComponent implements OnInit {
this.dialogRef.close();
}
openSnackBar(isError: boolean, message: string) {
if (isError) {
this.toastService.error(' Error al crear el cliente: ' + message, 'Error');
} else
this.toastService.success('Cliente creado exitosamente', 'Éxito');
}
}

View File

@ -0,0 +1,28 @@
-----BEGIN CERTIFICATE-----
MIIEwzCCAqugAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCRVMx
DzANBgNVBAgMBk1hZHJpZDEPMA0GA1UEBwwGTWFkcmlkMRgwFgYDVQQDDA9jYS51
ZHMtdGVzdC5uZXQwHhcNMjQxMDA5MTQyODM3WhcNMjUxMDE5MTQyODM3WjBMMQsw
CQYDVQQGEwJFUzEPMA0GA1UECAwGTWFkcmlkMQ8wDQYDVQQHDAZNYWRyaWQxGzAZ
BgNVBAMMEm9nZ3VpLnVkcy10ZXN0Lm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAKlM9SW4QghdIR1JW9Wn8HoagN1vyJ7GKhQXRPQXcL58zLlaZ+w8
bDANnOr9ctwVP3ftpfeCUBvuuoAL3PLttR9X1QrJk2N5kzEZyz2ckf9XLpbh5eI+
Eoaj5k1NLet9brKjBNN+32zBDqQPHhajtryEdRNq7HPiwhDKhLhyJBFWW36QnpQt
blfDRqBpUsDQ56I4fEnX+7hSEe2JSHN/XlCoDEWL0+jwuLtmVtGb4ZSX5akFDGkP
XV2YaHTELFzeEQpj+ffVgVT77FUeqrYU/Yh1VSo9G6fX5/6HGz513UIEfDoIwkZN
wOLntdXJuMpq216ZReF16stvoZi4cY+F2zcCAwEAAaOBsTCBrjAdBgNVHREEFjAU
ghJvZ2d1aS51ZHMtdGVzdC5uZXQwHQYDVR0OBBYEFMEnxET3oXXcuoQq7C9+AcHp
VqmyMG4GA1UdIwRnMGWhTaRLMEkxCzAJBgNVBAYTAkVTMQ8wDQYDVQQIDAZNYWRy
aWQxDzANBgNVBAcMBk1hZHJpZDEYMBYGA1UEAwwPY2EudWRzLXRlc3QubmV0ghRA
nfzWMM2iUx7UNNNmJzg92Si7NDANBgkqhkiG9w0BAQsFAAOCAgEAanwvug9UMaun
JakVSM8KPJVL2TFIKJApLbFX/zF1Z860dteJRLEY5jsk7ljZqnyXMIScUBdBVJxW
whp4dlGRBx/sLmfimn544s/Vzk90GYqbue+/ozLrFV74bn8suoZAuTQCCOHsclEp
v39R6EuvOf+htVi2jhBEtrOVPC2YMnUXCj8uUI4GLwrNlGmfZ2gl247xdsrPbrtT
ToU6y/S8AQBO7BuLVlNLGo62jgJmKLPhCkAFhiGZrVFH/3EgDUWaSJCwfs8Lp0yk
5GTckf4Ch6h89DMwt4PhD6zY8Rd72FQgNCVjg3F3A5yFE8iZd4KY/h1KBVMqwaeE
VjkpH4XzzNwUz0M/13278XLaVoDyOoFuzN8E/lPnfsdUUQjXUy1OlKpI5JerkGnE
+LlZbkZwJHwxS4e3sGKPjpMmBh5FOciYUBiCManlYtWwRbhTgKJt28wULBnh2eCw
8tdoo8L+5q9q3ke6bLbmfVPtFefKL+3fO7qWyubCTkT79HGetpShGmmansTH7P0G
7viwO1ispK2POTKt+DqEw+iuFEEWuw4SiVXxrY9uUs4VIExhsImNGOQoyxnYCz1t
kUs+jJ4PAPtuHqjjYdrcf057axQipkO2K2iGjdlG8mp7U3cOZwdpMkmfdhpfiyAW
w/L8jq15EtBxR6cINLdTTX/ySpjfV1g=
-----END CERTIFICATE-----

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCpTPUluEIIXSEd
SVvVp/B6GoDdb8iexioUF0T0F3C+fMy5WmfsPGwwDZzq/XLcFT937aX3glAb7rqA
C9zy7bUfV9UKyZNjeZMxGcs9nJH/Vy6W4eXiPhKGo+ZNTS3rfW6yowTTft9swQ6k
Dx4Wo7a8hHUTauxz4sIQyoS4ciQRVlt+kJ6ULW5Xw0agaVLA0OeiOHxJ1/u4UhHt
iUhzf15QqAxFi9Po8Li7ZlbRm+GUl+WpBQxpD11dmGh0xCxc3hEKY/n31YFU++xV
Hqq2FP2IdVUqPRun1+f+hxs+dd1CBHw6CMJGTcDi57XVybjKattemUXhderLb6GY
uHGPhds3AgMBAAECggEAAtBl/WvZTSJJ0Ul4M/jypP+ZHL/QPzNesll1//NTyxbF
SwoW/XTo/MjSeZAflKDrHnyIwbByJxoKEjl1lrl0xUHvJ0VqecDPktqxkiNEGfvC
U9JgFn6e+DXz4ge3t65XZLNo+nWlaRKxwkWuDlpHnfflqkj2B9xrtV5oY63Mrle7
hkr+VvddxOfNRYH7c/ofr9sYsCdGDBLNO2x8Zo9WPlw3cBuCLcJ/L7em14mI01Jg
Nx5oVpvlM9nUqfLRbOk5dUu7dpgGzxfx1Y1hWF/qMcdzltgKqFv47WZWl89WnGbG
ifL3NbCOAQRcTQ1Qex+z/NPLe8JmoftyIdwCqwjU4QKBgQDDZVdEO18HSZq1RQe1
b7Hd+1rkKBN1k+6Um4ZToy/6TOw0E/eZ/Xh8grpI5+zfLuVIQZ0JKGwvInybdHns
BLnPCMMRUtgf95/sfLXU4bY0aiR0DGPsGC8yfpmxnMelWW0K9HYtkmYxln/LfLM+
tugt0Y+6oa0h708pvqvyK7x9CwKBgQDdz5+qunsxuS/jxXdSmDFKXJOEkVOEamCt
DUyiAKBbeAgwywzzvyE3oKlCbnOz3FQYMiYGddm/Dea5oDdI3kF3730CayQ35aR6
ApT2UWkmGJoxa1SaUP/UMrRi3CKGnlEwjZnUKDWnXqaWWpaWLIjXGcdbGW1aeT/G
gc9FpWR+BQKBgDkOYZIiCBi3rH5cHukjKXwZhqvy6+O8g8FPPMU1dLARQDPg1L9Z
nZI2FjFtz+RH7FnSFwnyjMyitGIse+Goa52CAHwRhdyn0UIcFHiKREs/508fwxnQ
4g9LmpObpUyqNUYqpkueYUr/mGeSDUE15cxjUiX8SfMLz0DwVYNMtCiLAoGBAIWX
GZPq8m2VGjm1YVM2ZGFj9ljeag2TQByZqPDdLbdJSK2SbX+UOn5VXfurqDXIWkGk
WnCDpBxEVBSyYPmbGpUQgRrmyo572Z6+VVcw2wJdyOhAu1ihtiLoUupDqOupCD8U
2XQEr6PZBr4BWzahJd1fIklEvC7EXdvBrMNGhIq9AoGAN7vgV3bFvobIuXsYW/MY
F/a+ytH+DNTpuhhgyL/gDgsTYoK4HN1Xf1oJtG19Peo3yxh43cfJpNRXzee8lUMw
uVNlNPNvpnPh8UA2RFz6wdQXYmEYPLFbh2Pp07FBDSmQFJ8ZsejIK1RFfWT2x31t
BK3S+KNu2bajwPPgfodQPSk=
-----END PRIVATE KEY-----