Merge branch 'master' of bitbucket.org:venbainformationtechnology/appointments_frontend

This commit is contained in:
bitbucket 2023-04-15 17:33:29 +05:30
commit 2c6f4c026f
15 changed files with 169 additions and 135 deletions

View File

@ -38,7 +38,7 @@
<!-- Name Column -->
<ng-container matColumnDef="datetime">
<mat-header-cell *matHeaderCellDef mat-sort-header> Date and Time </mat-header-cell>
<mat-cell *matCellDef="let row"> {{row.appoinmentDate | date:'dd-MMM-YYYY'}}, {{row.appoinmentSlots | date:'shortTime'}} </mat-cell>
<mat-cell *matCellDef="let row"> {{row.appoinmentDate | date:'dd-MMM-YYYY'}}, {{row.appoinmentSlots[0] | date:'shortTime'}} </mat-cell>
</ng-container>
<!-- Color Column -->

View File

@ -76,6 +76,7 @@ export class AppoinmentsListComponent implements OnInit {
}
getAppoinmentsList() {
let user_role = localStorage.getItem('user_role');
//this._pd.getTabStatusPdDetails(this.tabStatus)
this._app.getAppoinmentsListDetails().subscribe(res => {
@ -90,18 +91,43 @@ export class AppoinmentsListComponent implements OnInit {
this.appointmentListSource['data'] = this.appoinmentsList;
console.log(this.appointmentListSource)
this.recordStatus=false;
console.log(this.appoinmentsList)
let user_role = localStorage.getItem('user_role');
this.appoinmentsList.forEach(element => {
console.log(element)
element.appoinmentSlots = JSON.parse(element.appoinmentSlots)
});
console.log(this.appoinmentsList)
if(user_role == 'PRACTITIONER'){
console.log('if ')
let id = localStorage.getItem('user_id')
console.log(id)
this.appointmentListSource['data'] = this.appoinmentsList;
this.appointmentListSource
console.log(this.appointmentListSource)
let filter = this.appointmentListSource['data'].filter(arr=>{return arr["ServicesMapDetail.userId"] == id})
console.log(filter)
filter.sort((a: any, b: any) => {
return b.id - a.id;
});
this.appointmentListSource['data'] = filter
this.appointmentListLength = filter.length;
console.log(this.appointmentListSource)
} else {
console.log('else')
this.appointmentListLength = res.data.length;
console.log(this.appointmentListLength)
this.appoinmentsList.sort((a: any, b: any) => {
return b.id - a.id;
});
this.appointmentListSource['data'] = this.appoinmentsList;
console.log(this.appointmentListSource)
}
this.recordStatus=false;
}
else{
this.appoinmentsList=[];

View File

@ -64,6 +64,9 @@ export class BusinessListComponent implements OnInit {
console.log(this.businessList)
this.businessListLength = res.data.length;
console.log(this.businessListLength)
this.businessList.sort((a: any, b: any) => {
return b.id - a.id;
});
this.businessListSource['data'] = this.businessList;
console.log(this.businessListSource)
this.recordStatus=false;

View File

@ -112,10 +112,18 @@
</mat-select>
</mat-form-field>
</div>
<div class="form-group label-container">
<label>Caption <span style="margin-left: 4rem;">-</span></label>
<a style="padding: 10px;" *ngIf="isEditable == false">{{practitionerdetails.caption}}</a>
<mat-form-field style="width: 60%;" *ngIf="isEditable == true">
<mat-label>Caption</mat-label>
<textarea matInput rows="3" cols="30" placeholder="Caption" [(ngModel)]="caption"></textarea>
</mat-form-field>
</div>
<div class="form-group label-container">
<label>Description <span style="margin-left: 4rem;">-</span></label>
<a style="padding: 10px;" *ngIf="isEditable == false">{{practitionerdetails.description}}</a>
<mat-form-field style="width: 60%;">
<mat-form-field style="width: 60%;" *ngIf="isEditable == true">
<mat-label>Description</mat-label>
<textarea matInput rows="5" cols="40" placeholder="Description" [(ngModel)]="description"></textarea>
</mat-form-field>
@ -371,7 +379,7 @@
</div>
</div>
</div> -->
<div class="booking-url">
<!-- <div class="booking-url">
<span class="underline-title full-width hours">Special Working Hours</span>
<button mat-button (click)="workingDialog('Add',{})" class="add-button">Add</button>
</div>
@ -380,7 +388,7 @@
<span class="underline-title full-width hours">Unavailability</span>
<button mat-button (click)="unavailability('Add',{})" class="add-button">Add</button>
</div>
<p class="para margin">Workings on weekends or compensating for time off? Add them here to let customers know when you're available.</p>
<p class="para margin">Workings on weekends or compensating for time off? Add them here to let customers know when you're available.</p> -->
</ng-scrollbar>
</div>
</mat-tab>

View File

@ -46,6 +46,7 @@ export class ConsultantSettingComponent implements OnInit {
gender: any=[];
description:any=[];
skills:any = [];
caption:any = [];
dob: any=[];
languages: any=[];
designtion: any=[];
@ -162,6 +163,7 @@ unavailability(action,obj) {
"gender": null,
"description":null,
"skills": null,
"caption": null,
"isActive": "1",
}]
@ -175,7 +177,8 @@ unavailability(action,obj) {
this.userName = this.usersList.userName
this.gender=this.practitionerdetails.gender
this.description=this.practitionerdetails.description
this.skills=this.practitionerdetails.skills
this.skills= JSON.parse(this.practitionerdetails.skills)
this.caption = this.practitionerdetails.caption
this.dob=this.practitionerdetails.dob
this.exp=this.practitionerdetails.exp
this.languages=this.practitionerdetails.languages
@ -339,6 +342,7 @@ unavailability(action,obj) {
"gender": this.gender,
"description": this.description,
"skills": this.skills,
"caption": this.caption,
"userName": this.userName,
"userId":userid
}

View File

@ -7,7 +7,7 @@
<!-- <div class="calender ">
<i style="font-size:24px" class="fa" [routerLink]="['/appoinment/calendar-list']">&#xf073;</i>
</div> -->
<button mat-button (click)="openDialog('Add',{})" class="button">Add customers</button>
<!-- <button mat-button (click)="openDialog('Add',{})" class="button">Add customers</button> -->
<mat-sidenav-container class="app-inner background-none shadow-none mail-db">

View File

@ -98,7 +98,7 @@ export class CustomersListComponent implements OnInit {
}
})
}
this.getCustomerDetails()
// this.getCustomerDetails()
}
getCustomerDetails(){
@ -106,25 +106,32 @@ export class CustomersListComponent implements OnInit {
if (res.status == 200) {
this.isLoading = false
this.customersList = res.data;
console.log(this.customersList)
this.customersListLength = res.data.length;
console.log(this.customersListLength)
this.customersListSource['data'] = this.customersList;
console.log(this.customersListSource)
this.recordStatus=false;
console.log(this.customersList)
console.log(this.customersList,this.appoinmentsIds)
let user_role = localStorage.getItem('user_role');
if(user_role == 'PRACTITIONER'){
const activeIds = this.appoinmentsIds
const serviceList = this.customersList
console.log(activeIds,serviceList)
const activeIds = this.appoinmentsIds
const serviceList = this.customersList
console.log(activeIds,serviceList)
const result = serviceList.filter(({id}) => activeIds.includes(id));
console.log(result)
this.customersList = result
this.customersListSource['data'] = this.customersList;
}
const result = serviceList.filter(({id}) => activeIds.includes(id));
console.log(result)
this.customersList = result
this.customersListLength = this.customersList.length;
this.customersList.sort((a: any, b: any) => {
return b.id - a.id;
});
this.customersListSource['data'] = this.customersList;
} else{
this.customersListLength = res.data.length;
console.log(this.customersListLength)
this.customersList.sort((a: any, b: any) => {
return b.id - a.id;
});
this.customersListSource['data'] = this.customersList;
console.log(this.customersListSource)
this.recordStatus=false;
}
}
else{

View File

@ -66,6 +66,9 @@ export class ServiceListComponent implements OnInit {
console.log(this.servicesList)
this.servicesListLength = res.data.length;
console.log(this.servicesListLength)
this.servicesList.sort((a: any, b: any) => {
return b.serviceId - a.serviceId;
});
this.servicesListSource['data'] = this.servicesList;
console.log(this.servicesListSource)
this.recordStatus=false;

View File

@ -81,6 +81,9 @@ export class UserListComponent implements OnInit {
if (res.status == 200) {
this.isLoading = false
let usersList = res.data
usersList.sort((a: any, b: any) => {
return b.id - a.id;
});
this.usersList['data'] = usersList;
this.usersListLength = res.data.length;
this.recordStatus=false;

View File

@ -71,10 +71,10 @@
<span class="pr-1">Phone :</span>
<span> {{bookedAppointment.contactNo}}</span>
</li>
<li>
<!-- <li>
<span class="pr-1">Office :</span>
<span> {{bookedAppointment.contactNo}}</span>
</li>
</li> -->
<li>
<span class="pr-1">Email:</span>
<span> {{bookedAppointment.email}} </span>
@ -92,115 +92,49 @@
</li>
</ul>
</div>
<div class="last-of-type ">
<!-- <div class="last-of-type ">
<div class="emergency-case ">
<h2>EMERGENCY CASES</h2>
<div>(225) 679-9399</div>
</div>
</div>
</div> -->
</div>
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="70" fxFlex.lg="70" fxFlex.xl="70" class="m-gap p-gap" >
<div class="padding-lt">
<div class="elementor-container">
<p>I highly appreciate your help for my family in our most difficult time. We owed everyone at @dr.changes a big thank you and our life.</p>
<p>{{profileDetails.caption}}</p>
</div>
<div class="elementor-container">
<p class="para">
More than 15 years ago, a small group of families, community activists, and civil servants in New York came together to form an organization called Dr.Changes. They provide services for those struggling to care for a loved one who did not “fit” into traditional health systems: stroke, Parkinsons, Alzheimers disease, traumatic brain injury, debilitating disorders, etc. The diagnoses were different, but the families shared common challenges: few community resources, isolation, lack of information, and drastic changes in family roles.
{{profileDetails.description}}
</p>
</div>
<div class="elementor-container">
<h3>SKILLS</h3>
<div class="elementor-row ">
<div class="elementor-div">
<ul>
<li>
<h3 style="margin-bottom:2rem;">SKILLS</h3>
<div fxLayout="row wrap">
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="m-gap p-gap" *ngFor="let skillsList of skillsDetails">
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text"> Assisting with walking from bed to wheelchair</span>
</li>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text">
Bathing, dressing and grooming assistance</span>
</li>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text"> Medication reminders</span>
</li>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text"> Safety and fall prevention</span>
</li>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text"> Status reporting to family</span>
</li>
</ul>
</div>
<div class="elementor-div">
<ul>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text"> Assisting with walking from bed to wheelchair</span>
</li>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text">
Bathing, dressing and grooming assistance</span>
</li>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text"> Medication reminders</span>
</li>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text"> Safety and fall prevention</span>
</li>
<li>
<span>
<mat-icon > beenhere </mat-icon>
</span>
<span class="list-text"> Status reporting to family</span>
</li>
</ul>
</div>
</div>
<span class="list-text"> {{skillsList}}</span>
</div>
</div>
</div>
<div class="elementor-container">
<!-- <div class="elementor-container">
<h3 class="care">CARE COVERAGE</h3>
<p class="para">
The task forces early efforts had three lasting results: the formation of Dr.Changes caregiver center; the genesis of community social caregiver groups; and the beginnings of an evolutional movement to change the ideology of long-term health care and caregivers intended for the ill and elderly in our country.
</p>
</div>
</div> -->
<div class="elementor-container">
<div class="elementor-row ">
<div class="elementor-div">
<h3>LANGUAGE</h3>
<p class="language">English</p>
<p class="language">French</p>
<p class="language">{{profileDetails.languages}}</p>
</div>
<div class="elementor-div">
<h3>QUALIFICATIONS</h3>
<p>Master of Science</p>
<p>University Limerick</p>
<p>{{profileDetails.qualification}}</p>
</div>
</div>
</div>

View File

@ -14,6 +14,8 @@ export class DoctorProfileComponent implements OnInit {
private apiUrl = environment.apiEndpoint;
dp: any =[];
busName: any=[];
profileDetails: any;
skillsDetails: any = [];
constructor(private router:Router,public end_user:EndUserService,private spinner:NgxSpinnerService) {
this.spinner.show()
@ -29,9 +31,13 @@ export class DoctorProfileComponent implements OnInit {
console.log('booked', res);
if(res.length>0){
this.bookedAppointment=res[0].user[0]
this.bookedAppointment = res[0].user[0]
this.dp = this.apiUrl+'imageViewer?img_name='+ this.bookedAppointment.logo
console.log(this.dp)
this.profileDetails = this.bookedAppointment.practitionerInfos[0]
console.log(this.profileDetails)
this.skillsDetails = JSON.parse(this.profileDetails.skills)
console.log(this.skillsDetails)
}else{
let URL = this.router.url;

View File

@ -51,6 +51,7 @@
<div class="container mt-1">
<div fxLayout="row wrap" dir="ltr" fxLayoutAlign="center center">
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="100" fxFlex.lg="100" fxFlex.xl="100" class="m-gap p-gap flx">
<mat-card class="card-mat">
<div fxLayout="row wrap mt-2">
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap">
@ -63,10 +64,6 @@
<p class="text-color">Teero would like to schedule an interview with you! Pick a time & date.</p>
</div>
<div class="">
<!-- <p class="param">
<img src="/assets/images/Time-Icon.svg" alt="Avatar" class="img"> -->
<!-- <p class=" mt-1 param"><img src="/assets/images/Time-Icon.svg" alt="Avatar" class="img"> <span class="">{{Currentdate | date:'fullDate'}}</span></p> -->
<!-- </p> -->
<p class="param"><img src="assets/images/Location.svg" alt="Avatar" class="img">Business </p>
<span class="span-text">{{busName}}</span>
<p class="param"><img src="assets/images/person.svg" alt="Avatar" class="img"> Practitioner </p>
@ -74,25 +71,42 @@
<p class="param"><img src="assets/images/information.svg" alt="Avatar" class="img"> Service </p>
<span class="span-text"> {{servicesName.servicesName}} ({{servicesName.duration
}} Mins)</span>
<p class="text-color d-flex align-items-start" >
<!-- <p class="text-color d-flex align-items-start" >
<img src="assets/images/information.svg" alt="Avatar" class="img" />
<span>Date:{{date | date:'longDate'}}</span><br />
<span style="margin-left: 10px;">Time :{{slotTime | date:'shortTime'}}</span>
</p>
</p> -->
<p class="param"><img src="assets/images/Languages.svg" alt="Avatar" class="img">Date : </p>
<span class="span-text"> {{date | date:'longDate'}}</span>
<p class="param"><img src="assets/images/Time-Icon.svg" alt="Avatar" class="img">Time : </p>
<span class="span-text">{{slotTime | date:'shortTime'}}</span>
<p class="param"><img src="assets/images/Location.svg" alt="Avatar" class="img">Amount : </p>
<span class="span-text"><span class="ex" style="font-size: 17px;padding-bottom: 10px;line-height: 17px;">&#x20b9;</span> {{user.practitionerInfos[0].days}}</span>
</div>
</div>
<div style="border: 1px solid #ccc;" fxFlex.md="1"></div>
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="64" fxFlex.lg="64" fxFlex.xl="64" class="p-gap d-flex">
<div >
<div class="innerdivs" > <mat-card class="navStyle" fxLayoutAlign="center center"> <button mat-raised-button (click)="goToSlotBooking2()" style="background-color: #7fffd400;box-shadow: none;color:#fff" ><mat-icon style="cursor: pointer;">keyboard_arrow_left</mat-icon></button><span style="width: 150px;text-align: center;">{{check(days) | date:'fullDate'}}</span><button mat-raised-button (click)="goToSlotBooking()" *ngIf="clicks < 5" style="background-color: #7fffd400;box-shadow: none;color:#fff" ><mat-icon style="cursor: pointer;">keyboard_arrow_right</mat-icon></button></mat-card></div>
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="64" fxFlex.lg="64" fxFlex.xl="64" class="p-gap">
<div fxLayout="row wrap mt-2" fxLayoutAlign="center center">
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="100" fxFlex.lg="100" fxFlex.xl="100" class="p-gap">
<mat-card class="navStyle" fxLayoutAlign="center center"> <button mat-raised-button (click)="goToSlotBooking2()" style="background-color: #7fffd400;box-shadow: none;color:#fff" ><mat-icon style="cursor: pointer;">keyboard_arrow_left</mat-icon></button><span style="width: 150px;text-align: center;">{{check(days) | date:'longDate'}}</span><button mat-raised-button (click)="goToSlotBooking()" *ngIf="clicks < 5" style="background-color: #7fffd400;box-shadow: none;color:#fff" ><mat-icon style="cursor: pointer;">keyboard_arrow_right</mat-icon></button></mat-card>
</div>
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="100" fxFlex.lg="100" fxFlex.xl="100" class="p-gap" style="text-align: center;">
<ng-scrollbar class="scrollHV">
<button *ngFor="let slot of slots;let i=index" mat-raised-button mat-button-sm class="mr-1 mt-1 hoverButton" [ngClass]="{'primary':slotIndex != i,'clickedSlot':slotIndex == i } " (click)="toggleActive($event,slot,i)" >{{slot | date:'shortTime'}}</button>
</ng-scrollbar>
</div>
</div>
<!-- <div >
<div class="innerdivs" ></div>
<div class="innerdivs" > <div style="margin: 1%;">
<button *ngFor="let slot of slots;let i=index" mat-raised-button mat-button-sm class="mr-1 mt-1 hoverButton" [ngClass]="{'primary':slotIndex != i,'clickedSlot':slotIndex == i } " (click)="toggleActive($event,slot,i)" >{{slot | date:'shortTime'}}</button>
</div> </div>
</div>
</div> -->
<div>
<button mat-raised-button mat-button-sm class="mr-1 mb-1 mt-1 btn-red" [ngStyle]="{'background':slot_array.length ==0 ? '#ccc':'#4caf50' }" [disabled]="slot_array.length ==0" (click)="submit()">PROCEED</button>
</div>
<!-- <mat-tab-group mat-stretch-tabs="false" mat-align-tabs="start">
<mat-tab [label]="tab | date:'longDate' " *ngFor="let tab of days">
<div style="margin: 1%;">
@ -183,10 +197,7 @@
</div>
</div> -->
</div>
</div>
<div class="d-flex justify-content-center mt-3">
<button mat-raised-button mat-button-sm class="mr-1 mb-1 mt-1 btn-red" [ngStyle]="{'background':slot_array.length ==0 ? '#ccc':'#4caf50' }" [disabled]="slot_array.length ==0" (click)="submit()">PROCEED</button>
</div>
</div>
</mat-card>
</div>
</div>

View File

@ -104,6 +104,7 @@ margin-left: -3rem!important;
// max-width: 100%;
min-width: -webkit-fill-available;
padding: 1rem !important;
}
@media only screen and (max-width: 600px) {
h3{
@ -162,10 +163,11 @@ margin-left: -3rem!important;
color: #7a7a7a;
}
h4{
color: #227f6e;;
color: #227f6e;
margin: 0;
}
.scrollHV {
height: calc(100vh - 105px);
height: calc(100vh - 338px);
}
.flexxx{
flex-direction: column;

View File

@ -6,11 +6,11 @@
<mat-sidenav #sidemenu class="sidebar-panel" id="sidebar-panel" [mode]="isOver() ? 'over' : 'side'"
[opened]="!isOver()" (mouseover)="menuMouseOver()" (mouseout)="menuMouseOut()">
<div class="opt-side relative ">
<div class="sidebar-container ">
<div class="sidebar-container " *ngIf="userLength.length > 0">
<div class="branding text-center">
<!-- <h2><i class="fa fa-superpowers" aria-hidden="true"></i> <span> Appointment</span>
</h2> -->
<h2><i class="fa fa-calendar" aria-hidden="true"></i> <span> Appointment</span>
<h2><i class="fa fa-calendar" aria-hidden="true"></i> <span> {{getUserData.BusinessDetails[0].busName}}</span>
</h2>
</div>
@ -18,8 +18,9 @@
<div class="user-pro-wrap">
<div class="user-profile-thumb text-center">
<div class="user-i">
<img src="assets/images/userpic.png" class="rad-full mb-1" width="100" height="100" alt="">
<div> <span>{{getUser}}</span></div>
<img [src]="getUserData.logo != '' ? image_view(getUserData.logo) : 'assets/images/userpic.png'" class="rad-full mb-1" width="100" height="100" alt="">
<div> <span>{{getUserData.userName}}</span></div>
<div> <span>({{getUserData.role}})</span></div>
</div>
</div>
<!-- <div class="most-used text-center">

View File

@ -11,6 +11,8 @@ import PerfectScrollbar from 'perfect-scrollbar';
import { PerfectScrollbarConfigInterface,
PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar';
import { RoleMenuItemsPipe } from '../role-menu-items.pipe';
import { ConsultantService } from 'app/appoinment/consultant-setting/consultant-service/consultant.service';
import { environment } from 'environments/environment';
@Component({
selector: 'app-layout',
@ -46,11 +48,16 @@ export class AdminLayoutComponent implements OnInit, OnDestroy {
@ViewChild('sidemenu', {static: true}) sidemenu;
public config: PerfectScrollbarConfigInterface = {};
getUser: string;
constructor(private router: Router, public menuItems: MenuItems, public horizontalMenuItems : HorizontalMenuItems, public translate: TranslateService ) {
getUser: any;
// usersLogo: any;
private apiUrl = environment.apiEndpoint;
getUserData: any;
userLength: any = [];
constructor(public _con:ConsultantService,private router: Router, public menuItems: MenuItems, public horizontalMenuItems : HorizontalMenuItems, public translate: TranslateService ) {
const browserLang: string = translate.getBrowserLang();
translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');
this.getUser = localStorage.getItem('user_role')
this.getUserDetails()
}
//08/02/2023
@ -61,9 +68,7 @@ users() {
}
//
ngOnInit(): void {
this.getUser = localStorage.getItem('user_role')
ngOnInit(): void {
const elemSidebar = <HTMLElement>document.querySelector('.sidebar-container ');
@ -84,6 +89,24 @@ users() {
// Ps.update(elemContent);
}
});
}
getUserDetails(){
let userID = localStorage.getItem('user_id')
console.log('in')
this._con.getUsersListDetails(userID).subscribe(res => {
if (res.status == 200) {
this.userLength = res.data
this.getUserData = res.data[0]
// this.usersLogo = res.data[0].logo;
console.log(this.getUserData)
}
})
}
image_view(image){
return this.apiUrl+'imageViewer?img_name='+image;
}
@HostListener('click', ['$event'])
@ -100,7 +123,10 @@ users() {
}
ngOnDestroy() {
this._router.unsubscribe();
if (this._router) {
this._router.unsubscribe();
}
}
isOver(): boolean {