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

This commit is contained in:
bitbucket 2023-04-18 14:44:51 +05:30
commit 2084caeb0b
21 changed files with 156 additions and 62 deletions

Binary file not shown.

View File

@ -16,45 +16,91 @@
<mat-expansion-panel-header > -->
<!-- <div class="example-container mat-elevation-z8 "> -->
<table mat-table [dataSource]="businessListSource" matSort *ngIf="businessListLength > 0" class="my-table mat-elevation-z8 len-table">
<table mat-table [dataSource]="businessListSource" #mytable class="my-table mat-elevation-z8 len-table">
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef class="font-color mat-no"> S.No</th>
<td mat-cell *matCellDef="let row; let i = index;" class="element-spc"> {{row.id}} </td>
</ng-container>
<ng-container matColumnDef="logo">
<th mat-header-cell *matHeaderCellDef class="font-color mat-no"> Logo </th>
<td mat-cell *matCellDef="let row"> <img [src]="image_view(row.logo)" /> </td>
</ng-container>
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef class="font-color th-mat"> Name </th>
<td mat-cell *matCellDef="let row"> {{row.busName}} </td>
</ng-container>
<ng-container matColumnDef="email">
<th mat-header-cell *matHeaderCellDef class="font-color th-mat"> Email </th>
<td mat-cell *matCellDef="let row"> {{row.email}} </td>
</ng-container>
<ng-container matColumnDef="phone">
<th mat-header-cell *matHeaderCellDef class="font-color mat-mob"> Mobile no </th>
<td mat-cell *matCellDef="let row" class="element-spc"> {{row.contactNo}} </td>
</ng-container>
<ng-container matColumnDef="address">
<th mat-header-cell *matHeaderCellDef class="font-color"> Address </th>
<td mat-cell *matCellDef="let row" class="element-spc"> {{row.address}},{{row.city}} , {{row.state}}</td>
</ng-container>
<ng-container matColumnDef="action">
<th mat-header-cell *matHeaderCellDef class="font-color"> Action </th>
<td mat-cell *matCellDef="let row" class="action-link">
<a (click)="openDialog('Update',row)"><span class="material-icons edit-color">edit</span></a>
<a (click)="confirmBox('Delete',row)"><span class="material-icons edit-color2 delete">delete</span></a>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
<!-- <table mat-table [dataSource]="businessListSource" matSort *ngIf="businessListLength > 0" class="my-table mat-elevation-z8 len-table">
<!-- ID Column -->
<ng-container matColumnDef="id">
<mat-header-cell *matHeaderCellDef mat-sort-header> S.No </mat-header-cell>
<mat-cell *matCellDef="let row; let i = index;"> {{row.id}} </mat-cell>
</ng-container>
<!-- Progress Column -->
<ng-container matColumnDef="logo">
<mat-header-cell *matHeaderCellDef mat-sort-header> Logo </mat-header-cell>
<mat-cell *matCellDef="let row"> <img [src]="image_view(row.logo)" /> </mat-cell>
</ng-container>
<!-- Name Column -->
<ng-container matColumnDef="name">
<mat-header-cell *matHeaderCellDef mat-sort-header> Name </mat-header-cell>
<mat-cell *matCellDef="let row"> {{row.busName}} </mat-cell>
</ng-container>
<!-- Color Column -->
<ng-container matColumnDef="email">
<mat-header-cell *matHeaderCellDef mat-sort-header> Email </mat-header-cell>
<mat-cell *matCellDef="let row" > {{row.email}} </mat-cell>
</ng-container>
<!-- Color Column -->
<ng-container matColumnDef="phone">
<mat-header-cell *matHeaderCellDef mat-sort-header> Mobile No </mat-header-cell>
<mat-cell *matCellDef="let row" > {{row.contactNo}} </mat-cell>
</ng-container>
<!-- Color Column -->
<ng-container matColumnDef="address">
<mat-header-cell *matHeaderCellDef mat-sort-header> Address </mat-header-cell>
<mat-cell *matCellDef="let row"> {{row.address}} <br> {{row.city}} <br> {{row.state}} </mat-cell>
</ng-container>
<!-- Color Column -->
<ng-container matColumnDef="action">
<mat-header-cell *matHeaderCellDef mat-sort-header> Action </mat-header-cell>
<mat-cell *matCellDef="let row">
@ -67,7 +113,7 @@
<mat-row *matRowDef="let row; columns: displayedColumns;">
</mat-row>
</table>
</table> -->
<mat-card *ngIf="isLoading" style="display: flex; justify-content: center; align-items: center">
<mat-progress-spinner
color="primary"

View File

@ -115,4 +115,12 @@ img {
overflow: auto;
max-height: 500px;
}
.mat-no{
width: 7%;
}
.th-mat{
width: 18%;
}
.mat-mob{
width: 15%;
}

View File

@ -194,7 +194,13 @@ unavailability(action,obj) {
console.log( this.practitionerdetails)
this._con.getPractitionerInfo.next( this.usersList['practitionerInfos']);
console.log(this.practitionerdetails)
this.endUserURL = this.end_User_Url+this.usersList['BusinessDetails'][0].randStr
if(this.userRole == 'PRACTITIONER'){
this.endUserURL = this.end_User_Url+'practitioner/'+this.usersList.randStr
} else if (this.userRole == 'BADMIN'){
this.endUserURL = this.end_User_Url+'business/'+this.usersList['BusinessDetails'][0].randStr
}
this.workinghours = JSON.parse(this.practitionerdetails.workingHours)
this.skills= JSON.parse(this.practitionerdetails.skills)
this.id=this.practitionerdetails.id
@ -356,7 +362,7 @@ unavailability(action,obj) {
save(){
this.isEditable = false;
let userid = localStorage.getItem('user_id')
let param: any = { "exp": this.exp,
let param: any = { "exp": this.exp,
// "id": this.id,
"qualification": this.qualification,
"fees": "800",
@ -366,7 +372,7 @@ unavailability(action,obj) {
"gender": this.gender,
"workingHours": JSON.stringify([{"sunday":{"hours":[{"startTime":"09:30 am","endTime":"06:00 pm","day":"sunday","value":null}],"breaks":[]}},{"monday":{"hours":[{"startTime":"09:00 am","endTime":"06:00 pm","day":"monday","value":null}],"breaks":[]}},{"tuesday":{"hours":[{"startTime":"09:00 am","endTime":"06:00 pm","day":"tuesday","value":null}],"breaks":[]}},{"wednesday":{"hours":[{"startTime":"09:00 am","endTime":"06:00 pm","day":"wednesday","value":null}],"breaks":[]}},{"thursday":{"hours":[{"startTime":"09:00 am","endTime":"06:00 pm","day":"thursday","value":null}],"breaks":[]}},{"friday":{"hours":[{"startTime":"09:00 am","endTime":"06:00 pm","day":"friday","value":null}],"breaks":[]}},{"saturday":{"hours":[{"startTime":"09:00 am","endTime":"06:00 pm","day":"saturday","value":null}],"breaks":[]}}]),
"description": this.description,
"skills": this.skills,
"skills": JSON.stringify(this.skills),
"caption": this.caption,
"userName": this.userName,
"practitionerId":userid

View File

@ -43,7 +43,8 @@ ngOnInit() {
description: new FormControl('',[Validators.required]),
fees:new FormControl('',[Validators.required])
});
this.local_data.duration = JSON.stringify(this.local_data.duration)
console.log(this.local_data)
this.local_data.duration = JSON.stringify(this.local_data.duration)
this.form.patchValue(this.local_data)
}

View File

@ -32,7 +32,7 @@
<!-- Description Column -->
<ng-container matColumnDef="duration">
<mat-header-cell *matHeaderCellDef mat-sort-header> Duration </mat-header-cell>
<mat-cell *matCellDef="let row"> {{row.duration}} </mat-cell>
<mat-cell *matCellDef="let row"> {{row.duration}} Mins</mat-cell>
</ng-container>
<ng-container matColumnDef="fees">
<mat-header-cell *matHeaderCellDef mat-sort-header> Fees </mat-header-cell>

View File

@ -76,24 +76,31 @@ export class UserListComponent implements OnInit {
this.getBusinessList()
}
getUsersList() {
//this._pd.getTabStatusPdDetails(this.tabStatus)
this._use.getUsersListDetails().subscribe(res => {
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;
}
else{
// this.usersList=[];
// this.dataSource = null;
this.recordStatus=true;
}
},error => this.isLoading = false);
let userRole = localStorage.getItem('user_role')
let param;
if(userRole == 'BADMIN'){
param ={"busId": localStorage.getItem('busId')}
}else {
param = {}
}
this._use.getUsersListDetails(param).subscribe(res => {
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;
}
else{
// this.usersList=[];
// this.dataSource = null;
this.recordStatus=true;
}
},error => this.isLoading = false);
}
getBusinessList() {
//this._pd.getTabStatusPdDetails(this.tabStatus)
@ -111,7 +118,7 @@ export class UserListComponent implements OnInit {
})
}
hashPassword(password: string){
return "*".repeat(password.length)
return "*".repeat(6)
}
ngAfterViewInit() {
console.log(this.usersList,this.paginator)

View File

@ -11,11 +11,17 @@ export class UserService {
private apiUrl = environment.apiEndpoint;
constructor(private _http: HttpClient) { }
getUsersListDetails(): Observable<any> {
getUsersListDetails2(): Observable<any> {
console.log('IN')
//return this._http.post<any[]>(this.apiUrl + "getusers")
return this._http.post(this.apiUrl + 'getusers', {})
return this._http.post<any[]>(this.apiUrl + "getusers",{})
// .pipe(
// catchError(this.handleError('role', []))
// )
}
getUsersListDetails(param): Observable<any> {
console.log('IN')
return this._http.post<any[]>(this.apiUrl + "getusers",param)
// .pipe(
// catchError(this.handleError('role', []))
// )

View File

@ -1,9 +1,10 @@
<ng-scrollbar class="scrollHV">
<div fxLayout="row wrap">
<div fxFlex.sm="100" fxFlex.xs="100" fxFlex.md="33.33" fxFlex.lg="33.33" fxFlex.xl="33.33" fxFlex="100" class="m-gap p-gap">
<mat-card>
<div class="card-wheather grad-blue">
<div class="city">New Orders</div>
<div class="date">This Week</div>
<div class="city">Practitioner</div>
<!-- <div class="date">This Week</div> -->
<div class="weather">
<div class="sun d-flex justify-content-between">
<i class="fa fa-shopping-bag fa-3x align-self-center"></i>
@ -16,8 +17,8 @@
<div fxFlex.sm="100" fxFlex.xs="100" fxFlex.md="33.33" fxFlex.lg="33.33" fxFlex.xl="33.33" fxFlex="100" class="m-gap p-gap">
<mat-card>
<div class="card-wheather grad-green">
<div class="city">Total Profit</div>
<div class="date">This Week</div>
<div class="city">Appointment</div>
<!-- <div class="date">This Week</div> -->
<div class="weather">
<div class="sun d-flex justify-content-between">
<i class="fa fa fa-users fa-3x align-self-center"></i>
@ -30,8 +31,8 @@
<div fxFlex.sm="100" fxFlex.xs="100" fxFlex.md="33.33" fxFlex.lg="33.33" fxFlex.xl="33.33" fxFlex="100" class="m-gap p-gap">
<mat-card>
<div class="card-wheather grad-red">
<div class="city">Email</div>
<div class="date">This Week</div>
<div class="city">Users</div>
<!-- <div class="date">This Week</div> -->
<div class="weather">
<div class="sun d-flex justify-content-between">
<i class="fa fa-inbox fa-3x align-self-center"></i>
@ -61,4 +62,5 @@
</mat-card-content>
</mat-card>
</div>
</div>
</div>
</ng-scrollbar>

View File

@ -2,6 +2,9 @@ $red: #f5515f;
$blue: #05abe0;
$grey: #343434;
$p: 12px;
.scrollHV {
height: calc(100vh - 162px);
}
.profile {
position: relative;
width: 100%;
@ -496,7 +499,7 @@ a.link {
//wheather
.card-wheather {
height: 220px;
height: 150px;
color: #fff;
}

View File

@ -15,6 +15,7 @@ import { NgxDatatableModule } from '@swimlane/ngx-datatable';
import { DashboardComponent } from './dashboard.component';
import { DashboardRoutes } from './dashboard.routing';
import { NgScrollbarModule } from 'ngx-scrollbar';
@NgModule({
imports: [
@ -29,7 +30,8 @@ import { DashboardRoutes } from './dashboard.routing';
ChartsModule,
NgxChartsModule,
NgxDatatableModule,
FlexLayoutModule
FlexLayoutModule,
NgScrollbarModule
],
declarations: [ DashboardComponent ]
})

View File

@ -113,6 +113,7 @@ export class ConsultantsListComponent implements OnInit {
}
goToSlotBooking(param){
localStorage.setItem('user_id',param.id)
let URL = this.router.url;
console.log(URL,param)
let URL_AS_LIST = URL.split('/');

View File

@ -1,6 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { local } from 'd3';
import { EndUserService } from '../end-user.service';
@Component({
@ -48,6 +49,7 @@ export class PaymentComponent implements OnInit {
submit(){
console.log(this.form.value)
let slot_array = JSON.parse(localStorage.getItem("slotData"))
let service = localStorage.getItem("servicedetails")
let serviceDetails = JSON.parse(service)
@ -57,11 +59,15 @@ export class PaymentComponent implements OnInit {
console.log(URL,slot_array)
let URL_AS_LIST = URL.split('/');
console.log(URL_AS_LIST);
// if(serviceDetails.hasOwnProperty('userId')){
serviceDetails.userId = localStorage.getItem('user_id')
// }
let paramsmap= {
"serviceId": ""+serviceDetails.serviceId+"",
"serviceId": ""+serviceDetails.serviceId+"",
"userId": serviceDetails.userId,
"busId": serviceDetails.busId
"busId": serviceDetails.busId
}
console.log(paramsmap)
this.enduser.CreatecusServicesMapDetails(paramsmap).subscribe(res => {
if (res.status == 200) {
console.log(res)

View File

@ -123,7 +123,7 @@ export class SearchCategoryComponent implements OnInit {
}
});
} else if(this.eventData == 'consultants'){
this._use.getUsersListDetails().subscribe(res => {
this._use.getUsersListDetails2().subscribe(res => {
if (res.status == 200) {
console.log(res)
// let data = res['data'].filter(val => val.role == 'PRACTITIONER')

View File

@ -81,8 +81,7 @@
<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> {{ serviceMapdetails[0].duration.length>0 ? serviceMapdetails[0].duration[0].fees:serviceMapdetails[0].service[0].fees
}}</span>
<span class="span-text"><span class="ex" style="font-size: 17px;padding-bottom: 10px;line-height: 17px;">&#x20b9;</span> {{ serviceMapdetails[0].duration.length>0 ? serviceMapdetails[0].duration[0].fees:serviceMapdetails[0].service[0].fees}}</span>
</div>
</div>

View File

@ -58,6 +58,7 @@ export class SlotBookingDetailsComponent implements OnInit {
if(res.length>0){
this.serviceMapdetails =res
this.servicesName = res[0].service[0]
console.log(this.servicesName)
this.user = res[0].user[0]
this.doctor = res[0].user[0].userName
this.getApiData()

View File

@ -10,7 +10,7 @@
<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> {{getUserData.BusinessDetails[0].busName}}</span>
<h2><i class="fa fa-calendar" aria-hidden="true"></i> <span> {{getUserData.role == 'SADMIN' ? 'Appointment' : getUserData.BusinessDetails[0].busName}}</span>
</h2>
</div>
@ -18,7 +18,8 @@
<div class="user-pro-wrap">
<div class="user-profile-thumb text-center">
<div class="user-i">
<img [src]="getUserData.logo != '' ? image_view(getUserData.logo) : 'assets/images/userpic.png'" class="rad-full mb-1" width="100" height="100" alt="">
<img *ngIf="getUserData.role == 'SADMIN'" src="/assets/images/userpic.png" class="rad-full mb-1" width="100" height="100" alt="">
<img *ngIf="getUserData.role != 'SADMIN'" [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>

View File

@ -51,13 +51,13 @@ export class AdminLayoutComponent implements OnInit, OnDestroy {
getUser: any;
// usersLogo: any;
private apiUrl = environment.apiEndpoint;
getUserData: any;
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
@ -69,7 +69,7 @@ users() {
//
ngOnInit(): void {
this.getUserDetails()
const elemSidebar = <HTMLElement>document.querySelector('.sidebar-container ');
if (window.matchMedia(`(min-width: 960px)`).matches && !this.isMac() && !this.compactSidebar && this.layoutDir != 'rtl') {

View File

@ -11,7 +11,7 @@ export class RoleMenuItemsPipe implements PipeTransform {
// if(type=="1"){
switch(localStorage.getItem('user_role')){
case 'SADMIN': return value.filter(val=>val.state!="appoinments" && val.state!="customers" && val.state != "consultant-setting" && val.state!="consultants" && val.state!="services");
case 'BADMIN': return value.filter(val=>val.state !="business" && val.state!="users" && val.state!="consultants");
case 'BADMIN': return value.filter(val=>val.state !="business" && val.state!="users" && val.state!="consultants" && val.state!="appoinments");
case 'PRACTITIONER': return value.filter(val=>val.state !="business" && val.state!="consultants" && val.state!="users" && val.state!="services");
// case 'PRACTITIONER':
// case '3': return value.filter(val=>val.state!="settings");

View File

@ -2,7 +2,12 @@ export const environment = {
production: true,
environmentName: 'Production Environment',//Localhost Environment.
// apiEndpoint:'http://venbainfotech.com:5000/',
apiEndpoint:'https://192.168.159.24:8080/api/',
// apiEndpoint:'https://192.168.159.24:8080/api/',
apiEndpoint:'https://api.venbait.in/api/',
//EndUser URL
endUserUrl:'https://venbainfotech.com/appointment/#/customer/',
firebase : {
apiKey: "AIzaSyBVPQ6C7cg5l8I-o7WSmmXdioMa4C0ZKNM",
authDomain: "phone-otp-5d22e.firebaseapp.com",

View File

@ -10,11 +10,11 @@ export const environment = {
// apiEndpoint:'http://192.168.1.20:8080/api/',
// apiEndpoint:'https://api.venbait.in/api/',
// apiEndpoint:'http://venbainfotech.com:5000/api/',
apiEndpoint:'http://192.168.1.8:8080/api/',
// apiEndpoint:'https://api.venbait.in/api/',
// apiEndpoint:'http://192.168.1.8:8080/api/',
apiEndpoint:'https://api.venbait.in/api/',
//EndUser URL
endUserUrl:'https://venbainfotech.com/appointment/#/customer/business/',
endUserUrl:'https://venbainfotech.com/appointment/#/customer/',
firebase: {
apiKey: "AIzaSyCKbfDJ5Qf0rDP3WKppa94u9xuVaVabaDw",