DEV Community

Cover image for Calculate class start & end time then book class
MOHSIN ALI SOOMRO
MOHSIN ALI SOOMRO

Posted on

3 2

Calculate class start & end time then book class

I use moment.js for time comparison

My usecase

Class have class availability start & end time

User selected time

 const selectedTime= moment(userSelectedTime)
Enter fullscreen mode Exit fullscreen mode

Given start and end time,class length is a minute of class like 60 equal 1 clock

const startSelectedTimes = moment(availableLength.start)
const endSelectedTimes = moment(availableLength.end).subtract(class.length,'minutes')
Enter fullscreen mode Exit fullscreen mode

1 Check
if user selected time is before start time then it throw a error

 if(startTimes.isBefore(startSelectedTimes)){
     throw error...
     return
}
Enter fullscreen mode Exit fullscreen mode

2 Check
if user selected time is after end time then it throw a error

 if(startTimes.isAfter(endSelectedTimes)){
     throw error...
     return
}
Enter fullscreen mode Exit fullscreen mode

After some booked classes your have array of booked class with start and end time

Booked class start & end time loop throw i is loop variable

const classStartTime = moment(i.start)
const classEndTime = moment(i.end)
const checkBack = moment(i.start).subtract(class.length,"minutes")
const checkNext = moment(i.end).add(class.length,"minutes")
Enter fullscreen mode Exit fullscreen mode

3 Check
if the selected time is between start & end time then throw error

 if (startTimes.isBetween(classStartTime, classEndTime)===true) {
     throw error...
     return ;
 }
Enter fullscreen mode Exit fullscreen mode

4 Check
Subtract class length to start time then check there is a class between selected time then throw error

 if(startTimes.isBetween(checkBack,classStartTime)===true){
      throw error...
      return ;
  }
Enter fullscreen mode Exit fullscreen mode

5 Check
Add class length to end time and then check if there is a class between selected time then throw error

 if(startTimes.isBetween(classEndTime,checkNext)===true){
    throw error..
   return ;
  }
Enter fullscreen mode Exit fullscreen mode

finally
Book class

Your logic here 
Enter fullscreen mode Exit fullscreen mode

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay