JS

 avatar
unknown
plain_text
22 days ago
11 kB
1
Indexable
<div class="table-responsive">
    <table class="table table-sm table-bordered w-100">
        <thead>
            <tr>
                <th colspan="18">
                    <div class="d-flex justify-content-around align-items-center">
                        <div class="form-check form-switch" style="font-size: 1.1rem;">
                            <input class="form-check-input clicavel" type="checkbox" id="filtroConcluidas" (change)="filtrei()" [(ngModel)]="filtroInativos">
                            <label class="form-check-label clicavel" for="filtroConcluidas" style="vertical-align: middle;">Mostrar concluídas</label>
                          </div>
                        <span style="font-size: 1.1rem">RESERVAS (Dia {{ arrayDiasTela[0].data | date:'shortDate' }} ao {{ arrayDiasTela.slice(-1)[0].data | date:'shortDate'}})</span>
                        <div class="d-flex justify-content-center gap-1">
                            <button class="btn btn-info btn-sm" (click)="mesAnterior()" title="Quinzena anterior"><</button>
                            <button class="btn btn-warning btn-sm" (click)="voltarHoje()" title="Filtrar hoje">HOJE</button>
                            <button class="btn btn-info btn-sm" (click)="proximoMes()" title="Próxima quinzena">></button>
                        </div>

                    </div>

                </th>
            </tr>
            <tr>
                <th title="Quartos" class="infoQuarto"><img class="w-50" src="/assets/icone-quartos.svg" alt="Ícone de quartos"></th>
                <th [title]="dia.data | date:'longDate'" [id]="dia.data" *ngFor="let dia of arrayDiasTela; index as index"
                    [ngClass]="dia.data === diaHoje ? 'bg-warning': 'bg-white'">
                    <div>
                        <span>{{ dia.numero }}</span>
                        <br>
                        <span>{{ dia.dia }}</span>
                    </div>
                </th>
            </tr>
        </thead>

        <tbody>
            <tr *ngFor="let quarto of quartos">
                <td class="infoQuarto" [title]="quarto.estado + ' | '+ quarto.totalCamas + ' Cama(s)' " (click)="mostrarReservaAtual(quarto)" [ngClass]="{'bg-danger': checarEstadoQuarto(quarto) === 'ocupado', 'bg-success': checarEstadoQuarto(quarto) === 'livre', 'bg-black': checarEstadoQuarto(quarto) === 'manutencao'}">
                    <div class="w-100 h-100 d-flex flex-column justify-content-around" style="color: white;">
                        <div class="d-flex justify-content-center gap-1">
                            <span style="color: white; height: 10px;">N°</span>
                            <span style="color: white; height: 10px;">{{ quarto.numero }}</span>
                        </div>
                        <div class="d-flex justify-content-center gap-1 mx-1">
                            <img src="/assets/icone-cama.svg" alt="Ícone de cama." style="width: 40%">
                            <span style="font-size: 1rem;">{{ quarto?.totalCamas }}</span>
                        </div>
                    </div>
                </td>
                @for (dia of arrayDiasTela; track dia.data){
                    
                        @switch (checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).resultado) {
                            @case ("dia-especifico") {
                                    @switch (checarReservaQuartoSaidaDia(quarto.reservas, dia.data).resultado){
                                        @case("dia-checkout"){
                                            <td [title]="dia.data | date:'longDate'">
                                            <div class="d-flex justify-content-around gap-3">
                                                <span (click)="validarReservaSaidaDiaEspecifico(quarto.reservas, dia, quarto)" class="btn dia-saida-dividido" [title]="checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.cliente?.nome" [ngClass]="{'btn-danger': checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkin', 'btn-warning': checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado', 'btn-primary': checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado-pg', 'btn-secondary': checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkout'}">
                                                    </span>
                                                <span (click)="validarReservaEspecificoDiaEntrada(quarto.reservas, dia, quarto)" class="btn dia-entrada-dividido" [title]="checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.cliente?.nome" [ngClass]="{'btn-danger': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkin', 'btn-warning': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado', 'btn-primary': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado-pg', 'btn-secondary': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkout'}">
                                                    {{ checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.cliente?.nome | uppercase }}</span>
                                            </div>
                                        </td>
                                        } 
                                        @default {
                                            <td [title]="dia.data | date:'longDate'">

                                            
                                            <span (click)="validarReservaOuNao(quarto.reservas, dia, quarto)" class="btn dia-entrada-solo" [title]="checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.cliente?.nome | uppercase" [ngClass]="{'btn-danger': checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkin', 'btn-warning': checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado', 'btn-primary': checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado-pg', 'btn-secondary': checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkout'}">
                                                {{ checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.cliente?.nome | uppercase }}</span>
                                                </td>
                                        }
                                    }
                            }
                            @case ("dia-checkout") {
                                <td [title]="dia.data | date:'longDate'">
                                <div class="d-flex justify-content-around gap-3">
                                    <span (click)="validarReservaSaidaDiaEspecifico(quarto.reservas, dia, quarto)" class="btn dia-saida-dividido" [title]="checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.cliente?.nome | uppercase" [ngClass]="{'btn-danger': checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkin', 'btn-warning': checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado', 'btn-primary': checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado-pg', 'btn-secondary': checarReservaQuartoSaidaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkout'}">
                                        </span>
                                    <span (click)="validarReservaEspecificoDiaEntrada(quarto.reservas, dia, quarto)" class="btn dia-entrada-dividido" [ngClass]="{'btn-danger': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkin', 'btn-warning': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado', 'btn-primary': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado-pg', 'btn-secondary': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkout'}">
                                        {{ checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.cliente?.nome | uppercase }}</span>
                                </div>
                                </td>
                            }
                            @case ("entre-dias") {
                                <td [title]="dia.data | date:'longDate'">
                                    <span (click)="validarReservaOuNao(quarto.reservas, dia, quarto)" class="btn entre-dias" [title]="checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.cliente?.nome | uppercase" [ngClass]="{'btn-danger': checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkin', 'btn-warning': checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado', 'btn-primary': checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado-pg', 'btn-secondary': checarReservaQuartoDiaEspecifico(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkout'}">
                                        </span>
                                </td>
                            }
                            @default {
                                <td [title]="dia.data | date:'longDate'">
                                <span (click)="validarReservaOuNao(quarto.reservas, dia, quarto)" class="btn vago" [ngClass]="{'btn-danger': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkin', 'btn-warning': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado', 'btn-primary': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'reservado-pg', 'btn-secondary': checarReservaQuartoEntradaDia(quarto.reservas, dia.data).reserva?.estadoReserva?.toLowerCase() === 'checkout'}"></span>
                                </td>
                            }
                        }

                }

            </tr>
            <tr *ngIf="quartos.length <= 0 && telaCarregamento === false;">
                <td colspan="20">Não existem quartos</td>
            </tr>
        </tbody>

    </table>

</div>
Leave a Comment