@startuml

header Page Header
footer Page %page% of %lastpage%

title SYDER Order Sequence diagram

==Before Order==
actor Sender
activate Sender
boundary Application
control Laravel
database RDS

Sender -> Application  : login
activate Application

Application -> Laravel : request access(id, pw)

alt login success
Laravel --> Application : response(token/maintain)

else login failed
Laravel --> Application : reject login

end



Application -> Laravel : waypoint request

activate Laravel
Laravel -> RDS : query waypoint
RDS -> Laravel : response query result
Laravel -> Application : response waypoint indexing
deactivate Laravel


Application -> Laravel : check registered order(token)
activate Laravel

alt registered order is existed

Laravel -> RDS : query orders table
RDS -> Laravel : response query result

Laravel -> Application : response(registered order)
deactivate Laravel

end
note right
When there is no registered order
Sender can request order
end note
deactivate Application

==Order Start==

Sender -> Application : select starting, arrival point
activate Application

Application -> Laravel : request order(starting, arrival point)

activate Laravel

alt registered route is existed

Laravel -> RDS : query Cart table

alt Cart is at the starting point

RDS --> Laravel : change Cart status
note left
If request order time out
Cart status is initialized
end note

else Cart isn't at the starting point
Laravel -> RDS : Cart search near starting point
RDS -> Laravel : response query result

alt There is no available Cart
Laravel --> Application : reject order request

else There is a available Cart
Laravel --> Application : response Cart,

end
else registered route isn't existed

Laravel --> Application : reject order request
end
deactivate Sender

@endduml
