@startuml
'https://plantuml.com/class-diagram

autonumber
    actor "Administrator" as ADM

    participant ":AddSNSfromCSVUI" as UI
    participant ":AddSNSfromCSVController" as  CTRL
    participant "Company" as COMP
    participant ":MapperSNSuser" as MAPPER
    participant "dtoSNSuser" as DTO
    participant "app:App" as APP
    participant "auth:AuthFacade" as AUTH
    participant "em:SNSuser" as SNS
    participant "validate:Validate" as VALID
    participant "SNSuserList \n:List<SNSuser>"

        activate ADM
       ADM -> UI: Request register new Users from CSV file
       activate UI
       UI --> ADM: request data(file name or address of file)
       deactivate UI
       UI <- ADM: Types requested data

       activate UI

       group loop: [while CSV file has a line with valid information]
       UI->UI:validateContents(Line)
       activate UI
       deactivate UI
       UI->CTRL: createSNSuser(dto)
       activate CTRL
       CTRL->COMP: us=createSNSuser(dto)
       activate COMP
       COMP->MAPPER: us=toSNSuser(dto)
       activate MAPPER
       deactivate MAPPER
       CTRL->COMP: validateSNSuser(us)
        deactivate COMP
       CTRL-->UI: printSNSuser()
       deactivate CTRL
       ADM <-- UI: shows the user data and requests confirmation
       deactivate UI
       ADM -> UI: confirms the data
       activate UI
       UI->CTRL:saveSNSuser(dto)
       activate CTRL
       CTRL->COMP:saveSNSuser(dto)
       activate COMP
       COMP->DTO:name=getName()
       activate DTO
       COMP->DTO:email=getEmail()
       deactivate DTO
       COMP->AUTH:addUserWithRole(name, email, pwd, roleId)
       activate AUTH
       deactivate AUTH
       COMP->COMP:validateSNSuserDTO(dtoSNSuser dto,int i)
       activate COMP
       COMP->DTO: email=getEmail()
       activate DTO
       COMP->DTO:cc=getCcNumber()
       COMP->DTO:phone=getPhoneNumber()
       COMP->DTO:SNSnumber=getSNSnumber()
       deactivate DTO
       deactivate COMP
       deactivate CTRL


       ADM <-- UI: informs operation success
       deactivate UI
       end
       @enduml

@enduml