Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 1x 86x 86x 86x 86x 67x 86x 86x 86x 29x 28x 27x 86x 21x 21x 21x 70x 55x 76x 76x 76x 42x 6x 6x 76x 6x 6x 76x 55x 67x 67x | import { OfficeImpl } from "@/types/OfficeImpl";
import { ServiceImpl } from "@/types/ServiceImpl";
import { SubService } from "@/types/SubService";
/**
* Calculates the total estimated duration for the selected service and subservices for a given provider.
* @param service The main service (with subServices and counts)
* @param provider The selected provider/office
* @returns The total estimated duration in minutes
*/
export function calculateEstimatedDuration(
service: ServiceImpl | undefined,
provider: OfficeImpl | undefined
): number {
if (!service || !provider) return 0;
let total = 0;
// Main service
const mainProvider = service.providers?.find((p) => p.id == provider.id);
if (
mainProvider &&
service.count &&
mainProvider.slots &&
mainProvider.slotTimeInMinutes
) {
total +=
service.count * mainProvider.slots * mainProvider.slotTimeInMinutes;
}
// Subservices
if (service.subServices) {
for (const sub of service.subServices) {
const subProvider = sub.providers?.find((p) => p.id == provider.id);
if (
subProvider &&
sub.count &&
subProvider.slots &&
subProvider.slotTimeInMinutes
) {
total += sub.count * subProvider.slots * subProvider.slotTimeInMinutes;
}
}
}
return total;
}
|