Use those entities, each targeting the one below it
func_buttons
target_delay (wait > total time elevator needs before moving again)
2xtarget_delay (to set train from wait to stop to start)
func_train
path_corner where elevator starts targeting next corner. Those that train needs to stop at, need wait 99999.
There might be an easier way, but you could make doors with func_trains with (2x number of stops) path_corners, all in closed position except one, and trigger all doors when/before train starts moving and when/after it reaches next stop, and make doors target the right path_corner to sync them with train. I guess you will need to make these with wait 99999 and 2x trigger too.
If you want the button in train, you will need to make something that looks like a button on the train and place an invisible trigger where it would be at each stop.
I assume you know how most of these entities work tho.