Commit 20bbe93f authored by hasan khaddour's avatar hasan khaddour

adding pages for projects

parent 1eea8f3a
......@@ -22,7 +22,7 @@
<span class="text-muted">صفة المساهمة {{employeeParticipate.role}}</span>
</div>
<div class="progress" style="height: 2px;">
<div class="progress-bar" role="progressbar" style="width: 25%" aria-valuenow=[employeeParticipate.partialTimeRatio] aria-valuemin="0" aria-valuemax="60"></div>
<div class="progress-bar" role="progressbar" style="width: 25%" [ariaValueNow]="employeeParticipate.partialTimeRatio" aria-valuemin="0" aria-valuemax="60"></div>
</div>
</div>
<div class="col-auto">
......
......@@ -2,7 +2,50 @@
color: darkgrey;
text-decoration: underline;
}
.features .features-item {
color: color-mix(in srgb, var(--default-color), transparent 20%);
}
.features .features-item+.features-item {
margin-top: 100px;
}
@media (max-width: 640px) {
.features .features-item+.features-item {
margin-top: 40px;
}
}
.features .features-item h3 {
font-weight: 700;
font-size: 26px;
}
.features .features-item ul {
list-style: none;
padding: 0;
}
.features .features-item ul li {
padding-bottom: 10px;
display: flex;
align-items: center;
}
.features .features-item ul li:last-child {
padding-bottom: 0;
}
.features .features-item ul i {
font-size: 20px;
padding-right: 4px;
color: var(--accent-color);
}
.features .features-item p:last-child {
margin-bottom: 0;
}
.search-Border {
height: 40px;
}
......
<div class="row gy-4 align-items-center py-5 features-item">
<div class="col-md-5 d-flex align-items-center aos-init aos-animate" data-aos="zoom-out" data-aos-delay="100">
<img src="assets/images/home/features-2.png" class="img-fluid" alt="">
</div>
<div class="col-md-7 aos-init aos-animate" data-aos="fade-up" data-aos-delay="100">
<div style="margin-bottom: 60px;" class="row gy-4 text-center align-items-center py-5 features-item">
<div class="col-md-7 fst-italic">
<h3>
مرحبا بك في موقع إدارة حالة المشاريع
</h3>
......@@ -11,12 +8,11 @@
</p>
<p class="fst-italic">
تابع المشاريع بكل أريحية
</p>
<ul>
<li><i class="bi bi-check"></i><span> تستطيع من خلال هذا الموقع الاطلاع على المشاريع التي تديرها ومتابعتها </span></li>
<li><i class="bi bi-check"></i> <span>كما يمكنك الاطلاع على ساعات عملك ضمن المشاريع التي تساهم بها</span></li>
<li><i class="bi bi-check"></i> <span>أصدر التقارير التي تحتاجها</span></li>
</ul>
</div>
<div class="col-md-5 d-flex align-items-center " >
<img src="assets/images/home/features-1.png" class="img-fluid" alt="">
</div>
</div>
\ No newline at end of file
<table class="table table-borderless table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col" clsss="text-center">نوع الكلفة</th>
<th scope="col" class="text-center">البيان</th>
<th scope="col" class="text-center">الشراء المحلي </th>
<th scope="col" class="text-center">الشراء الخارجي</th>
<th scope="col" class="text-center">نوع القطع</th>
<th scope="col" class="text-center">تاريخ الانفاق المتوقع</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let spend of financialSpending" >
<th scope="row"></th>
<td class="text-center"> {{spend.costType}}
</td>
<td class="text-center">{{spend.description }}</td>
<td class="text-center">{{spend.localPurchase}}</td>
<td class="text-center">{{spend.externalPurchase.ammount}}</td>
<td class="text-center">{{spend.externalPurchase.currency}}</td>
<td class="text-center">{{spend.expectedSpendingDate | date}}</td>
</tr>
</tbody>
</table>
import { Component, Input } from '@angular/core';
import { FinancialSpending } from '../../models/responses/FinancialSpending';
@Component({
selector: 'financial-spend-table',
templateUrl: './financial-spend-table.component.html',
styleUrl: './financial-spend-table.component.css'
})
export class FinancialSpendTableComponent {
@Input() financialSpending:FinancialSpending[]
}
<div class="card shadow mb-4">
<div class="card-body text-center">
<div class="avatar avatar-lg mt-4">
<a href="">
<img src="./assets/images/users/4.jpg" alt="..." class="avatar-img rounded-circle">
</a>
</div>
<div class="card-text my-2">
<strong class="card-title my-0">{{participant.employee.personalInfo | fullname}}</strong>
<p class="small text-muted mb-0">Tristique Ltd</p>
<p class="small"><span class="badge badge-light text-muted"> {{participant.employee.workInfo.workType}} {{participant.employee.workInfo.workJob}}</span></p>
</div>
</div> <!-- ./card-text -->
<div class="card-footer">
<div class="row align-items-center justify-content-between">
<div class="col-auto text-center">
<small>
<span class="dot dot-lg bg-secondary mr-1"></span> {{participant.role}} </small>
</div>
</div>
</div> <!-- /.card-footer -->
</div>
\ No newline at end of file
import { Component, Input } from '@angular/core';
import { EmployeeParticipate } from '../../../employees/models/responses/employeeParticipate';
@Component({
selector: 'participant-item',
templateUrl: './participant-item.component.html',
styleUrl: './participant-item.component.css'
})
export class ParticipantItemComponent {
@Input() participant : EmployeeParticipate
}
<p><strong>المشاركين في المشروع</strong></p>
<table class="table table-borderless table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col" clsss="text-center">الرقم الذاتي</th>
<th scope="col" class="text-center">اسم المشارك</th>
<th scope="col" class="text-center">صفة العمل</th>
<th scope="col" class="text-center">الهيئة</th>
<th scope="col" class="text-center">نسبة التفرغ</th>
<th scope="col" class="text-center">المساهمة</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let participant of employeeParticipates" >
<th scope="row"></th>
<td class="text-center"> {{participant.employee.hiastId}}
</td>
<td class="text-center">{{participant.employee.personalInfo | fullname }}</td> <td class="text-center">{{participant.employee.workInfo.workJob}}</td>
<td class="text-center">{{participant.employee.workInfo.workType}}</td>
<td class="text-center">{{participant.partialTimeRatio}}</td>
<td class="text-center">{{participant.role}}</td>
</tr>
</tbody>
</table>
import { Component, Input } from '@angular/core';
import { EmployeeParticipate } from '../../../employees/models/responses/employeeParticipate';
@Component({
selector: 'participants-table',
templateUrl: './participants-table.component.html',
styleUrl: './participants-table.component.css'
})
export class ParticipantsTableComponent {
@Input() employeeParticipates : EmployeeParticipate[]
}
<div class="row mt-5">
<div class="col-2 text-center">
<img src="/assets/images/users/4.jpg" class="navbar-brand-img brand-sm mx-auto my-4" alt="...">
</div>
<div class="col-2">
<p class="mb-4 text-center">
<strong>مدير المشروع </strong>
<br/><small>{{projectManager.personalInfo | fullname}}</small>
</p>
</div>
<div class="col-2">
<p class="mb-4 text-center">
<strong>رئيس فريق العمل </strong>
<br/><small>{{teamLeader.personalInfo| fullname }}</small>
</p>
</div>
<div class="col-2">
<p class="mb-4 text-center">
<strong>الجهة الطارحة </strong>
<br/><small>{{proposer.customerName}}</small>
</p>
</div>
<div class="col-2">
<p class="mb-4 text-center">
<strong>الجهة المنفذة </strong>
<br/><small>{{executer.name}}</small>
</p>
</div>
<div class="col-2 text-center">
<img src="/assets/images/users/4.jpg" class="navbar-brand-img brand-sm mx-auto my-4" alt="...">
</div>
</div> <!-- /.row -->
import { Component, Input } from '@angular/core';
import { Customer } from '../../../customers/models/customer';
import { Employee } from '../../../employees/models/responses/employee';
import { Department } from '../../models/responses/Department';
@Component({
selector: 'project-footer',
templateUrl: './project-footer.component.html',
styleUrl: './project-footer.component.css'
})
export class ProjectFooterComponent {
@Input() proposer : Customer ;
@Input() projectManager : Employee
@Input() teamLeader : Employee
@Input() executer : Department
}
<tr>
<th scope="row"></th>
<td> {{step.stepInfo.stepName}}
</td>
<td class="text-left">{{step.stepInfo.description}}</td>
<td class="text-left">{{step.currentCompletionRatio}}</td>
<td class="text-left">{{step.weight}}</td>
<td class="text-left">{{step.stepInfo.startDate | date}}</td>
<td class="text-left">{{step.stepInfo.duration}}</td>
</tr>
<div class="card shadow mb-4 col-8 offset-2">
<div class="card-header py-3">
<div class="row align-items-center">
<div class="col-auto">
<a href="profile-posts.html" class="avatar avatar-md">
<img src="./assets/images/users/4.jpg" alt="..." class="avatar-img rounded-circle">
</a>
</div>
<div class="col ml-n2">
<strong class="mb-1">{{step.stepInfo.stepName}}</strong><span class=" ml-1"></span>
<p class="small text-muted mb-1">{{step.stepInfo.description}}</p>
</div>
<div class="col-auto">
</div>
</div>
</div>
<div class="card-body ">
<div class="row align-items-center">
<div class="col-8 ">
<div class="small mb-2 d-flex">
<span class="text-muted flex-fill">نسبة الانجاز {{step.currentCompletionRatio}}</span>
<span class="text-muted">الثقل {{step.weight}}</span>
</div>
</div>
<div class="col-8 ">
<div class="small mb-2 d-flex">
<span class="text-muted flex-fill">تاريخ البدء {{step.stepInfo.startDate | date}}</span>
<span class="text-muted">المدة {{step.stepInfo.duration}} </span>
</div>
<div class="col-auto">
<button type="button" class="btn m-2 btn-sm btn-primary">استعراض تارخ متابعتها </button>
<button type="button" class="btn m-2 btn-sm btn-secondary">تعديل المعلومات</button>
<button type="button" class="btn m-2 btn-sm btn-danger">إزالة</button>
</div>
</div>
</div>
</div> <!-- / .card-body -->
</div>
\ No newline at end of file
<section *ngIf="participants" class="row">
<div class="row justify-content-center">
<div class="col-12">
<div class="row align-items-center my-4">
<div class="col">
<h2 class="h4 mb-0 page-title"> قائمة المشاركين بالمشروع </h2>
</div>
<div class="col-auto">
<button type="button" class="btn btn-primary"><span class="fe fe-file-plus fe-12 mr-2"></span>إضافة مشارك </button>
</div>
</div>
<hr>
<div class="row">
<participant-item class="col-3" *ngFor="let participant of participants" [participant]="participant"></participant-item>
</div>
<div *ngIf="participants.length==0">
للأسف هذا المشروع لايحوي على أية مشاركين
</div>
</div>
</div>
</section>
\ No newline at end of file
import { Component } from '@angular/core';
import { EmployeeParticipate } from '../../../employees/models/responses/employeeParticipate';
import { ProjectService } from '../../services/project.service';
import { ActivatedRoute, Router } from '@angular/router';
import { ToastrService } from 'ngx-toastr';
@Component({
selector: 'participants-list',
templateUrl: './participants-list.component.html',
styleUrl: './participants-list.component.css'
})
export class ParticipantsListComponent {
participants : EmployeeParticipate[]
projectId = Number(this.route.snapshot.paramMap.get('id'));
constructor(
private projectService :ProjectService,
private toastr : ToastrService,
private route: ActivatedRoute,
public router :Router
) {
}
ngOnInit(): void {
this.loadParticipations();
}
loadParticipations(): void{
this.projectService.getParticipants(this.projectId).subscribe({
next: (data)=> {
this.participants= data
this.toastr.success("تم تحميل المراحل بنجاح");
}
,
error:(err)=>{
console.log(err)
this.toastr.error("لقد حدث خطاء ما")
}
})
}
}
......@@ -49,108 +49,17 @@
<p><strong>مراحل المشروع</strong></p>
<step-table [steps]="project.steps"></step-table>
<hr>
<p><strong>المشاركين في المشروع</strong></p>
<table class="table table-borderless table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col" clsss="text-center">الرقم الذاتي</th>
<th scope="col" class="text-center">اسم المشارك</th>
<th scope="col" class="text-center">صفة العمل</th>
<th scope="col" class="text-center">الهيئة</th>
<th scope="col" class="text-center">نسبة التفرغ</th>
<th scope="col" class="text-center">المساهمة</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let participant of project.employeeParticipates" >
<th scope="row"></th>
<td class="text-center"> {{participant.employee.hiastId}}
</td>
<td class="text-center">{{participant.employee.personalInfo | fullname }}</td> <td class="text-center">{{participant.employee.workInfo.workJob}}</td>
<td class="text-center">{{participant.employee.workInfo.workType}}</td>
<td class="text-center">{{participant.partialTimeRatio}}</td>
<td class="text-center">{{participant.role}}</td>
</tr>
</tbody>
</table>
<participants-table [employeeParticipates]="project.employeeParticipates"></participants-table>
<p><strong>خطة الانفاق</strong></p>
<table class="table table-borderless table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col" clsss="text-center">نوع الكلفة</th>
<th scope="col" class="text-center">البيان</th>
<th scope="col" class="text-center">الشراء المحلي </th>
<th scope="col" class="text-center">الشراء الخارجي</th>
<th scope="col" class="text-center">نوع القطع</th>
<th scope="col" class="text-center">تاريخ الانفاق المتوقع</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let spend of project.financialSpending" >
<th scope="row"></th>
<td class="text-center"> {{spend.costType}}
</td>
<td class="text-center">{{spend.description }}</td>
<td class="text-center">{{spend.localPurchase}}</td>
<td class="text-center">{{spend.externalPurchase.ammount}}</td>
<td class="text-center">{{spend.externalPurchase.currency}}</td>
<td class="text-center">{{spend.expectedSpendingDate | date}}</td>
</tr>
</tbody>
</table>
<div class="row mt-5">
<div class="col-2 text-center">
<img src="/assets/images/users/4.jpg" class="navbar-brand-img brand-sm mx-auto my-4" alt="...">
</div>
<div class="col-2">
<p class="mb-4">
<strong>مدير المشروع </strong>
<br/><small>{{project.projectManager.personalInfo | fullname}}</small>
</p>
</div>
<div class="col-2">
<p class="mb-4">
<strong>رئيس فريق العمل </strong>
<br/><small>{{project.projectManager.personalInfo | fullname }}</small>
</p>
</div>
<div class="col-2">
<p class="mb-4">
<strong>الجهة الطارحة </strong>
<br/><small>{{project.proposer.customerName}}</small>
</p>
</div>
<div class="col-2">
<p class="mb-4">
<strong>الجهة المنفذة </strong>
<br/><small>{{project.executer.name}}</small>
</p>
</div>
<div class="col-2 text-center">
<img src="/assets/images/users/4.jpg" class="navbar-brand-img brand-sm mx-auto my-4" alt="...">
</div>
</div> <!-- /.row -->
<financial-spend-table [financialSpending]="project.financialSpending"></financial-spend-table>
<project-footer [proposer]="project.proposer"
[executer]="project.executer"
[projectManager]="project.projectManager"
[teamLeader]="project.teamLeader"
>
</project-footer>
</div> <!-- /.card-body -->
</div> <!-- /.card -->
</div> <!-- /.col-12 -->
......@@ -241,7 +150,7 @@
<strong>معلومات المشروع</strong>
</div>
<div class="row">
<div class="col-md-6 col-lg-4">
<div class="col-md-6 col-lg-4" (click)="this.router.navigate(['/projects/steps/',project.id])">
<div class="card shadow mb-4">
<div class="card-body file-list">
<div class="d-flex align-items-center">
......@@ -272,7 +181,7 @@
</div> <!-- .card-body -->
</div> <!-- .card -->
</div> <!-- .col -->
<div class="col-md-6 col-lg-4">
<div class="col-md-6 col-lg-4" (click)="this.router.navigate(['/projects/participants/',project.id])">
<div class="card shadow mb-4">
<div class="card-body file-list">
<div class="d-flex align-items-center">
......
......@@ -14,7 +14,7 @@ export class ProjectDetailsComponent implements OnInit {
project : Project
@ViewChild('dataToExport', { static: false }) public dataToExport: ElementRef;
constructor(
private router : Router,
public router : Router,
private route: ActivatedRoute,
private projectService: ProjectService,
private toastr: ToastrService,
......
......@@ -9,6 +9,7 @@
<button type="button" (click)="this.router.navigate(['projects/create'])" class="btn btn-primary"><span class="fe fe-file-plus fe-12 mr-2"></span>طرح مشروع</button>
</div>
</div>
<hr>
<div class="row">
<project-item class="col-md-4" (click)="this.router.navigate(['projects/detail',project.id])" *ngFor="let project of projects" [project]="project"></project-item>
</div>
......
<section *ngIf="steps" class="row">
<div class="row justify-content-center">
<div class="col-12">
<div class="row align-items-center my-4">
<div class="col">
<h2 class="h3 mb-0 page-title"> قائمة مراحل المشروع </h2>
</div>
<div class="col-auto">
<button type="button" (click)="this.router.navigate(['projects/create'])" class="btn btn-primary"><span class="fe fe-file-plus fe-12 mr-2"></span>إضافة مرحلة </button>
</div>
</div>
<hr>
<step-row-item class=" offset-2" *ngFor="let step of steps" [step]="step"></step-row-item>
<div *ngIf="steps.length==0">
للأسف هذا المروع لايحوي على أية مراحل
</div>
</div>
</div>
</section>
\ No newline at end of file
import { Component } from '@angular/core';
import { Step } from '../../models/responses/Step';
import { ProjectService } from '../../services/project.service';
import { ToastrService } from 'ngx-toastr';
import { ActivatedRoute, Route, Router } from '@angular/router';
import { StepService } from '../../services/step.service';
@Component({
selector: 'step-list',
templateUrl: './step-list.component.html',
styleUrl: './step-list.component.css'
})
export class StepListComponent {
steps : Step[]
projectId = Number(this.route.snapshot.paramMap.get('id'));
constructor(
private stepService :StepService,
private toastr : ToastrService,
private route: ActivatedRoute,
public router :Router
) {
}
ngOnInit(): void {
this.loadParticipations();
}
loadParticipations(): void{
this.stepService.getStepsByProject(this.projectId).subscribe({
next: (data)=> {
this.steps= data
this.toastr.success("تم تحميل المراحل بنجاح");
}
,
error:(err)=>{
console.log(err)
this.toastr.error("لقد حدث خطاء ما")
}
})
}
}
......@@ -3,12 +3,18 @@ import { RouterModule, Routes } from '@angular/router';
import { ProjectListComponent } from './pages/project-list/project-list.component';
import { ProjectDetailsComponent } from './pages/project-details/project-details.component';
import { ProjectCreateComponent } from './pages/project-create/project-create.component';
import { StepListComponent } from './pages/step-list/step-list.component';
import { ParticipantsListComponent } from './pages/participants-list/participants-list.component';
const routes: Routes = [
{path:'',component :ProjectListComponent},
{ path: 'detail/:id', component: ProjectDetailsComponent },
{ path: 'create', component: ProjectCreateComponent }
{ path: 'create', component: ProjectCreateComponent },
{ path: 'steps/:id', component: StepListComponent },
{ path: 'participants/:id', component: ParticipantsListComponent }
];
......
......@@ -21,6 +21,12 @@ import {MatDatepickerModule} from '@angular/material/datepicker';
import {provideNativeDateAdapter} from '@angular/material/core';
import { ProjectAttachmentsComponent } from './pages/project-attachments/project-attachments.component';
import { StepTableComponent } from './components/step-table/step-table.component';
import { ParticipantsTableComponent } from './components/participants-table/participants-table.component';
import { FinancialSpendTableComponent } from './components/financial-spend-table/financial-spend-table.component';
import { ProjectFooterComponent } from './components/project-footer/project-footer.component';
import { StepListComponent } from './pages/step-list/step-list.component';
import { ParticipantsListComponent } from './pages/participants-list/participants-list.component';
import { ParticipantItemComponent } from './components/participant-item/participant-item.component';
@NgModule({
declarations: [
......@@ -32,7 +38,13 @@ import { StepTableComponent } from './components/step-table/step-table.component
ProjectHeaderComponent,
ProjectCreateComponent,
ProjectAttachmentsComponent,
StepTableComponent
StepTableComponent,
ParticipantsTableComponent,
FinancialSpendTableComponent,
ProjectFooterComponent,
StepListComponent,
ParticipantsListComponent,
ParticipantItemComponent
],
providers: [
ProjectService,
......
import { TestBed } from '@angular/core/testing';
import { FinancialSpendingService } from './financial-spending.service';
describe('FinancialSpendingService', () => {
let service: FinancialSpendingService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(FinancialSpendingService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class FinancialSpendingService {
constructor() { }
}
......@@ -26,7 +26,7 @@ export class StepService {
//
public getStepsByProject(projectId : number ):Observable<Step[]>{
return this.http.get<Step[]>(this.config.getServerUrl()+ "/Steps/ByProject/"+projectId);
return this.http.get<Step[]>(this.config.getServerUrl()+ "/Steps/ByProject/?projectId="+projectId);
}
// this method responsible for change the step weight of a step
......
......@@ -19,7 +19,7 @@
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow profile">
<li class="dropdown-header">
<h6>{{fullName}}</h6>
<span>موظف</span>
<span>{{email}}</span>
</li>
<li>
<hr class="dropdown-divider">
......@@ -28,7 +28,7 @@
<li>
<a class="dropdown-item d-flex align-items-center" [routerLink]="['/employees/profile']">
<i class="fe fe-user"></i>
<span>My Profile</span>
<span>ملفي الشخصي</span>
</a>
</li>
<li>
......@@ -38,7 +38,7 @@
<li>
<button class="dropdown-item d-flex align-items-center" (click)="logout()">
<i class="fe fe-log-out"></i>
<span>Sign Out</span>
<span>تسجيل الخروج</span>
</button>
</li>
......
......@@ -17,7 +17,7 @@ export class HeaderComponent implements OnInit {
@Input() isToggled :Boolean;
fullName :string
email : string
constructor(
private router: Router,
private userService : UserService,
......@@ -26,7 +26,7 @@ export class HeaderComponent implements OnInit {
) { }
ngOnInit(): void {
this.email= this.userService.getCurrentUser().email
this.fullName= this.userService.getUserFirstName()+" " + this.userService.getUserLastName();
}
......
......@@ -3,7 +3,7 @@
<ul class="sidebar-nav" id="sidebar-nav">
<li class="nav-item">
<a class="nav-link " href="index.html">
<a class="nav-link" [routerLink]="['/']">
<i class="fe fe-grid"></i>
<span>الصفحة الرئيسية</span>
</a>
......@@ -83,21 +83,26 @@
</li>
<li class="nav-item">
<a class="nav-link collapsed" href="forms-editors.html">
<i class="bi bi-circle"></i><span>إلغاء مشروع</span>
<i class="bi bi-circle"></i><span>المشاريع التي أديرها</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link collapsed" href="forms-validation.html">
<i class="bi bi-circle"></i><span>إضافة بيانات المشروع</span>
<a class="nav-link collapsed">
<i class="bi bi-circle"></i><span>المشاريع التي أرأسها</span>
</a>
</li>
<li class="nav-heading">العمل</li>
<li [routerLink]="['/employees/participates',id]" class="nav-item">
<a class="nav-link collapsed" >
<i class="bi bi-layout-text-window-reverse"></i><span>استعراض مساهماتي</span><i class="bi bi-chevron-down ms-auto"></i>
</a>
<li [routerLink]="['/employees/participates',id]" class="nav-item">
<a class="nav-link collapsed" >
<i class="bi bi-layout-text-window-reverse"></i><span>استعراض مساهماتي</span><i class="bi bi-chevron-down ms-auto"></i>
</a>
</li>
</li>
<li class="nav-item">
<a class="nav-link collapsed" [routerLink]="['/employees/profile']">
<i class="bi bi-layout-text-window-reverse"></i><span>ملفي الشخصي</span><i class="bi bi-chevron-down ms-auto"></i>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment