@startuml
[*] --> OpenIsCreateUserPage: user visit page "create user"
OpenIsCreateUserPage --> FullNameFieldsIsFilled: user filling field
FullNameFieldsIsFilled --> ServerGetRequest : http.post(user)
ServerGetRequest --> EntityIsCorrect : Binding.hasError() == flase
ServerGetRequest --> EntityIsIncorrect : Binding.hasError() == true
EntityIsIncorrect --> OpenIsCreateUserPage : redirect
EntityIsCorrect --> LoginAndPassIsGenerated : user.genUserLogin()\n user.genUserPassword()
LoginAndPassIsGenerated --> DbPerformedTransaction : UserRepository.save(user)
DbPerformedTransaction --> OpenIsShowUserPage : redirect
OpenIsShowUserPage --> [*]


'LoginAndPassIsGenerated: genUserLogin(User new_user)\n genUserPassword(User new_user)
'LoginAndPassIsGenerated --> SaveButtonIsPress
'SaveButtonIsPress --> RequestForBD : UserRepository.getUserByName(User new_user)    \n
'RequestForBD --> ShowMessageSuccess : Model.setViewName()   \n
'RequestForBD --> ShowMessageIncorrectFullName : Model.setViewName('Error message')  \n
'ShowMessageSuccess --> [*]
'ShowMessageIncorrectFullName --> [*]


'state PageIsOpen : user with empty field
'state FullNameFieldsIsFilled : user with filling first name and last name
'state LoginAndPassIsGenerated : Filling Login and Pass fields    \n
'state SaveButtonIsPress
'state RequestForBD
'state ShowMessageSuccess
'state ShowMessageIncorrectFullName
@enduml