2022-01-06 22:16:15 +01:00
import { Component , OnInit , OnDestroy , ViewChild } from '@angular/core' ;
2022-02-24 22:31:08 +01:00
import { TableComponent } from '../../_components/table/table.component' ;
import { ModalAvailabilityScheduleComponent } from '../../_components/modal-availability-schedule/modal-availability-schedule.component' ;
2021-12-24 15:21:22 +01:00
import { ApiClientService } from 'src/app/_services/api-client.service' ;
2021-12-29 15:03:02 +01:00
import { ToastrService } from 'ngx-toastr' ;
2021-12-27 20:50:10 +01:00
import { BsModalService , BsModalRef } from 'ngx-bootstrap/modal' ;
2021-12-29 15:03:02 +01:00
import { AuthService } from 'src/app/_services/auth.service' ;
2021-12-04 21:36:11 +01:00
@Component ( {
selector : 'app-list' ,
templateUrl : './list.component.html' ,
styleUrls : [ './list.component.scss' ]
} )
export class ListComponent implements OnInit {
2021-12-27 20:50:10 +01:00
scheduleModalRef? : BsModalRef ;
@ViewChild ( 'table' ) table ! : TableComponent ;
2021-12-04 21:36:11 +01:00
2022-01-06 22:16:15 +01:00
public loadAvailabilityInterval : NodeJS.Timer | undefined = undefined ;
public available : boolean | undefined = undefined ;
public manual_mode : boolean | undefined = undefined ;
2021-12-29 15:03:02 +01:00
constructor (
private api : ApiClientService ,
private auth : AuthService ,
private toastr : ToastrService ,
private modalService : BsModalService
2022-01-06 22:16:15 +01:00
) {
this . loadAvailability ( ) ;
}
loadAvailability() {
this . api . get ( "availability" ) . then ( ( response ) = > {
this . available = response . available ;
this . manual_mode = response . manual_mode ;
} ) ;
}
2021-12-24 15:21:22 +01:00
changeAvailibility ( available : 0 | 1 , id? : number | undefined ) {
2022-02-14 11:40:47 +01:00
if ( typeof id === 'undefined' ) {
id = this . auth . profile . auth_user_id ;
}
2021-12-24 15:21:22 +01:00
this . api . post ( "availability" , {
id : id ,
available : available
2021-12-26 21:32:54 +01:00
} ) . then ( ( response ) = > {
2021-12-29 15:03:02 +01:00
let changed_user_msg = parseInt ( response . updated_user ) === parseInt ( this . auth . profile . auth_user_id ) ? "La tua disponibilità" : ` La disponibilità di ${ response . updated_user_name } ` ;
let msg = available === 1 ? ` ${ changed_user_msg } è stata impostata con successo. ` : ` ${ changed_user_msg } è stata rimossa con successo. ` ;
this . toastr . success ( msg ) ;
2022-01-06 22:16:15 +01:00
this . loadAvailability ( ) ;
2021-12-26 21:32:54 +01:00
this . table . loadTableData ( ) ;
2021-12-24 15:21:22 +01:00
} ) ;
}
2021-12-04 21:36:11 +01:00
2022-01-06 22:16:15 +01:00
updateManualMode ( manual_mode : 0 | 1 ) {
this . api . post ( "manual_mode" , {
manual_mode : manual_mode
} ) . then ( ( response ) = > {
this . toastr . success ( "Modalità manuale aggiornata con successo." ) ;
this . loadAvailability ( ) ;
} ) ;
}
2021-12-28 00:32:15 +01:00
openScheduleModal() {
this . scheduleModalRef = this . modalService . show ( ModalAvailabilityScheduleComponent , Object . assign ( { } , { class : 'modal-custom' } ) ) ;
2021-12-27 20:50:10 +01:00
}
2021-12-04 21:36:11 +01:00
ngOnInit ( ) : void {
2022-01-06 22:16:15 +01:00
this . loadAvailabilityInterval = setInterval ( ( ) = > {
console . log ( "Refreshing availability..." ) ;
this . loadAvailability ( ) ;
} , 10000 ) ;
2022-02-14 16:49:55 +01:00
this . auth . authChanged . subscribe ( {
next : ( ) = > this . loadAvailability ( )
} ) ;
2022-01-06 22:16:15 +01:00
}
ngOnDestroy ( ) : void {
if ( typeof this . loadAvailabilityInterval !== 'undefined' ) {
clearInterval ( this . loadAvailabilityInterval ) ;
}
2021-12-04 21:36:11 +01:00
}
2022-01-05 00:51:59 +01:00
requestTelegramToken() {
this . api . post ( "telegram_login_token" , { } ) . then ( ( response ) = > {
console . log ( response ) ;
window . open ( response . start_link , "_blank" ) ;
} ) ;
}
2021-12-04 21:36:11 +01:00
}