Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | 102x 11x 11x 11x 11x 11x 11x 9x 9x 9x 9x 9x 3x 3x 3x 3x 2x 2x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 9x | import { Component, OnInit, inject } from '@angular/core';
import { ActivatedRoute, Router, RouterModule } from '@angular/router';
import { MessageService } from 'primeng/api';
import { TableModule } from 'primeng/table';
import { NgIf, DatePipe } from '@angular/common';
import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
import { TwinpadApiService } from '../../services/twinpad-api.service';
import { Phase } from '../../models/campaign';
@Component({
selector: 'app-campaign',
imports: [NgIf, FormsModule, ReactiveFormsModule, RouterModule, TableModule, DatePipe],
templateUrl: './campaign.component.html',
styleUrl: './campaign.component.scss'
})
export class CampaignComponent implements OnInit {
campaignId: string;
campaignForm: FormGroup;
campaignName: string;
campaignDescription?: string;
phases: Phase[] = [];
private messageService = inject(MessageService);
constructor(private route: ActivatedRoute, private fb: FormBuilder, private twinpadApiService: TwinpadApiService, private router: Router){}
ngOnInit(): void {
// Initialize the form
this.campaignForm = this.fb.group({
campaignName: [],
campaignDescription: []
});
this.campaignId = this.route.snapshot.params['campaign_id'] || null;
if(this.campaignId != null){
this.twinpadApiService.getCampaignById(this.campaignId).subscribe({
next: value => {
this.campaignName = value.name;
this.campaignForm.get("campaignName")?.setValue(value.name);
this.campaignForm.get("campaignDescription")?.setValue(value.description);
this.refreshTable();
},
error: error => {
this.messageService.add({severity: 'error', summary: 'Add Campaign', detail: error.error });
}
});
}
}
getInfos(){
this.campaignName = this.campaignForm.get("campaignName")?.value;
this.campaignDescription = this.campaignForm.get("campaignDescription")?.value;
Eif(this.campaignName != null){
return true;
}
this.messageService.add({severity: 'error', summary: 'Add Campaign', detail: "Name field is required" });
return false;
}
addCampaign() {
Eif(this.getInfos()){
this.twinpadApiService.addCampaign(this.campaignName, this.campaignDescription).subscribe({
next: value => {
const responseId = Object.values(value);
this.messageService.add({severity: 'success', summary: 'Add Campaign', detail: "Campaign successfully created" });
this.router.navigate([`/campaigns/${responseId}`]);
},
error: error => {
this.messageService.add({severity: 'error', summary: 'Add Campaign', detail: error.error });
}
});
}
}
editCampaign() {
Eif(this.getInfos()){
this.twinpadApiService.editCampaign(this.campaignId, this.campaignName, this.campaignDescription).subscribe({
next: _ => {
this.messageService.add({severity: 'success', summary: 'Edit Campaign', detail: "Campaign successfully Edited" });
},
error: error => {
this.messageService.add({severity: 'error', summary: 'Edit Campaign', detail: error.error });
}
});
}
}
deleteCampaign() {
Eif(confirm("Are you sure to delete " + this.campaignName + " and all phases associated ?")){
this.twinpadApiService.deleteCampaign(this.campaignId).subscribe({
next: value => {
Eif(value) {
this.messageService.add({severity: 'success', summary: 'Delete Campaign', detail: "Campaign successfully deleted"});
this.router.navigate(['/campaigns']);
}
else {
this.messageService.add({severity: 'error', summary: 'Delete Campaign', detail: "An error occurred while deleting campaign"});
}
},
error: error => {
this.messageService.add({severity: 'error', summary: 'Delete Campaign', detail: error.error});
}
});
}
}
deletePhase(phaseId: string, phaseName: string) {
if(confirm("Are you sure to delete " + phaseName + " ?")){
this.twinpadApiService.deletePhase(phaseId).subscribe({
next: value => {
if(value) {
this.messageService.add({severity: 'success', summary: 'Delete Phase', detail: "Phase successfully deleted"});
this.refreshTable();
}
else {
this.messageService.add({severity: 'error', summary: 'Delete Phase', detail: "An error occurred while deleting Phase"});
}
},
error: error => {
this.messageService.add({severity: 'error', summary: 'Delete Phase', detail: error.error});
}
});
}
}
refreshTable(){
this.twinpadApiService.getPhases(this.campaignId).subscribe(value => {this.phases = value;});
}
}
|