feat: show next tour start in ticket search
This commit is contained in:
parent
b4854dff0f
commit
068fa9519c
|
|
@ -17,6 +17,7 @@ import {
|
|||
} from '../../../core/data-access/graphql/generated/generated';
|
||||
import { TicketViewComponent } from '../ticket-view/ticket-view.component';
|
||||
import { TicketsService } from '../tickets.service';
|
||||
import { format, isAfter } from 'date-fns';
|
||||
|
||||
@Component({
|
||||
template: `<div class="flex flex-col items-center justify-start p-4">
|
||||
|
|
@ -33,15 +34,16 @@ import { TicketsService } from '../tickets.service';
|
|||
class="flex flex-col justify-between items-center py-2 border-b border-gray-200 cursor-pointer"
|
||||
(click)="showTicketView(ticket)"
|
||||
>
|
||||
<div class="w-full">
|
||||
<div class="w-full flex justify-between">
|
||||
<span>
|
||||
{{ ticket.tours.at(0)?.ordinanceType }}
|
||||
@if (ticket.tours.at(0)?.category) {
|
||||
<span
|
||||
class="text-sm text-gray-600"
|
||||
>
|
||||
<span class="text-sm text-gray-600">
|
||||
({{ ticket.tours.at(0)?.category }})
|
||||
</span>
|
||||
}
|
||||
</span>
|
||||
<!-- <span class="text-sm text-gray-600">{{ getNextStart(ticket.tours) }}</span> -->
|
||||
</div>
|
||||
<div class="w-full flex justify-between">
|
||||
<span>
|
||||
|
|
@ -49,8 +51,8 @@ import { TicketsService } from '../tickets.service';
|
|||
{{ ticket.tours.at(0)?.patientSurname }}
|
||||
</span>
|
||||
<span>
|
||||
{{ ticket.tours.length }} Tour{{
|
||||
ticket.tours.length > 1 ? 'en' : ''
|
||||
{{ getToursLength(ticket) }} Tour{{
|
||||
getToursLength(ticket) > 1 ? 'en' : ''
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
|
|
@ -58,13 +60,8 @@ import { TicketsService } from '../tickets.service';
|
|||
}
|
||||
</div>
|
||||
</div>`,
|
||||
imports: [
|
||||
MatFormFieldModule,
|
||||
MatInputModule,
|
||||
ReactiveFormsModule,
|
||||
AsyncPipe
|
||||
],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
imports: [MatFormFieldModule, MatInputModule, ReactiveFormsModule, AsyncPipe],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class TicketsSearchDialogComponent {
|
||||
private ticketsService = inject(TicketsService);
|
||||
|
|
@ -89,4 +86,22 @@ export class TicketsSearchDialogComponent {
|
|||
.pipe(tap((result) => result && this.showTicketView(result)))
|
||||
.subscribe();
|
||||
}
|
||||
|
||||
getToursLength(ticket: unknown) {
|
||||
return (ticket as Ticket & { tours: Tour[] }).tours.filter(
|
||||
({ check }) => check === 0
|
||||
).length;
|
||||
}
|
||||
|
||||
getNextStart(tours: Partial<Tour>[]) {
|
||||
const sortedStartDates = [...tours.map(({startDate}) => new Date(startDate))].sort((a, b) => a.getTime() - b.getTime())
|
||||
for(let i = 0; i < sortedStartDates.length; i++) {
|
||||
const currentDate = sortedStartDates.at(i)
|
||||
if(currentDate && isAfter(currentDate, new Date())) {
|
||||
return format(currentDate, 'HH:mm | dd.MM.yy')
|
||||
}
|
||||
}
|
||||
const latestDate = sortedStartDates.at(-1);
|
||||
return latestDate ? format(latestDate, 'HH:mm | dd.MM.yy') : 'No Tours'
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue