Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---
- config:
- theme: neo-dark
- ---
- sequenceDiagram
- participant frontend as Frontend/Client
- participant controller as Controller
- participant service as Service
- participant database as Database
- participant storage as Storage: S3
- participant queue as beanstalkd
- Note over frontend,queue: List lokasi
- frontend->>+controller: GET /lokasi
- controller->>+controller: validasi k_jenjang
- controller->>+service: fetch lokasi per jenjang
- service->>+database: select from lokasi
- database-->>-service: data lokasi
- service-->>-controller: data lokasi
- controller-->>-frontend: data response
- Note over frontend,queue: Init save
- frontend->>+controller: GET /lokasi/init-save
- controller->>controller: validasi k_jenjang
- controller-->>-frontend: data response
- Note over frontend,queue: Init save
- frontend->>+controller: POST /lokasi/validate-save
- controller->>controller: validasi form request
- controller->>+service: create object lokasi
- service-->>-controller: object lokasi
- controller-->>-frontend: data response
- Note over frontend,queue: Save
- frontend->>+controller: POST /lokasi/save
- controller->>controller: validasi form request
- controller->>+service: create object lokasi
- service->>+controller: object lokasi
- controller->>+service: config multi kompetensi
- service->>+database: insert lokasi
- database-->>-service: status query insert
- service-->>-controller: object lokasi
- controller-->>-frontend: data response
- Note over frontend,queue: Unduh Template
- frontend->>+controller: GET /lokasi/template-upload
- controller->>+service: get fields dan data
- service->>+database: get fields dan data
- database-->>-service: data
- service-->>-controller: .
- controller->>+service: generate excel
- controller-->>-frontend: status success
- service-->>-frontend: stream excel
- Note over frontend,queue: Inisialisasi
- frontend->>+controller: POST /lokasi/init-upload
- controller->>+service: get status upload
- service->>+database: cek status upload
- database-->>-service: status upload
- service-->>-controller: status upload
- opt Inisialisasi ulang
- controller->>+service: reset status upload
- service->>+database: update state = IDLE
- database-->>-service: status direset
- service-->>-controller: status upload
- end
- controller->>-frontend: status idle
- Note over frontend,queue: Unggah Excel
- frontend->>+controller: POST /lokasi/validate-upload
- controller->>+service: validate
- service->>+database: insert state = QUEUE-VALIDATE
- database-->>-service: .
- service->>+queue: queue job import-validate
- queue-->>-service: .
- service-->>-controller: .
- controller->>-frontend: status success
- Note over frontend,queue: Proses Validasi
- queue->>+service: trigger validasi
- service->>+storage: get file excel
- storage->>+service: get format validasi
- loop Setiap 100 Data
- loop Setiap Row
- service->>service: validasi format
- service->>service: validasi data
- end
- service->>+database: simpan hasil validasi
- database-->>-service: .
- end
- service->>+database: update state = VALIDATED
- database-->>-storage: .
- storage-->>-queue: done
- Note over frontend,queue: Download Hasil Validasi
- frontend->>+controller: POST /lokasi/download-error
- controller->>+service: buat excel
- opt Hanya error
- service-->>service: filter yang error
- end
- service->>service: generate excel
- service-->>-controller: .
- controller->>-frontend: status success
- service-->>-frontend: stream excel
- Note over frontend,queue: Simpan Data (jika ada yang valid)
- frontend->>+controller: POST /lokasi/save-upload
- controller->>+service: save
- service->>service: update dengan state antri simpan
- service->>+queue: queue job import-save
- queue-->>-service: .
- service-->>-controller: .
- controller->>-frontend: status success
- Note over frontend,queue: Proses Simpan
- queue->>+service: trigger simpan
- service->>+database: read data
- database-->>-service: .
- loop Setiap Record Yang Valid
- service->>service: proses data
- service->>+database: simpan data
- database-->>-service: .
- end
- service->>+database: update dengan state selesai simpan
- database-->>-service: .
- service-->>-queue: done
- Note over frontend,queue: Fetch
- frontend->>+controller: GET /lokasi/:lokasi
- controller->>+service: validasi id lokasi yang dikirim
- service->>+database: select lokasi berdasarkan id yang dikirim
- database-->>-service: data lokasi
- service-->>-controller: data lokasi
- controller-->>-frontend: data response
- Note over frontend,queue: Update
- frontend->>+controller: POST /lokasi/:lokasi/lokasi
- controller->>controller: validasi request
- controller->>+service: validasi data lokasi dari id yang dikirim
- service->>+database: get lokasi
- database-->>-service: object lokasi
- service-->>-controller: lokasi instance
- controller->>+service: panggil fungsi update
- service->>+database: update data lokasi
- database-->>-service: update data
- service-->>-controller: data lokasi
- controller-->>-frontend: data response
- Note over frontend,queue: Delete
- frontend->>+controller: POST /lokasi/:lokasi/delete
- controller->>controller: validasi request
- controller->>+service: validasi data lokasi dari id yang dikirim
- service->>+database: get lokasi
- database-->>-service: object lokasi
- service-->>-controller: lokasi instance
- controller->>+service: panggil fungsi delete
- service->>+database: delete data lokasi
- database-->>-service: status query
- service-->>-controller: status aksi hapus
- controller-->>-frontend: data response
- Note over frontend,queue: Fetch lokasi daftar
- frontend->>+controller: POST /lokasi/:lokasi/daftar
- controller->>+service: validasi id lokasi yang dikirim
- service->>+database: select lokasi berdasarkan id yang dikirim
- database-->>-service: data lokasi daftar
- service-->>-controller: data lokasi daftar
- controller-->>-frontend: data response
- Note over frontend,queue: Init lokasi daftar
- frontend->>+controller: POST /lokasi/:lokasi/daftar/init-save
- controller->>+service: get data user lokasi
- service->>+database: select user lokasi
- database-->>-service: data user lokasi
- service-->>-controller: data user lokasi
- controller->>+service: get jenjang jalur tahap yang tersedia
- service-->>-controller: data jenjang jalur tahap yang tersedia
- controller-->>-frontend: data response
- Note over frontend,queue: Validasi lokasi daftar
- frontend->>+controller: POST /lokasi/:lokasi/daftar/validate-save
- controller->>controller: validasi request
- controller->>+service: get data user lokasi
- service->>+database: select user lokasi
- database-->>-service: data user lokasi
- service-->>-controller: data user lokasi
- controller->>+service: get jenjang jalur tahap yang tersedia
- service-->>-controller: data jenjang jalur tahap yang tersedia
- controller->>+service: validasi lokasi daftar
- service-->>-controller: object lokasi daftar
- controller-->>-frontend: data response
- Note over frontend,queue: Simpan lokasi daftar
- frontend->>+controller: POST /lokasi/:lokasi/daftar/save
- controller->>controller: validasi request
- controller->>+service: get data user lokasi
- service->>+database: select user lokasi
- database-->>-service: data user lokasi
- service-->>-controller: data user lokasi
- controller->>+service: get jenjang jalur tahap yang tersedia
- service-->>-controller: data jenjang jalur tahap yang tersedia
- controller->>+service: validasi lokasi daftar
- service-->>-controller: object lokasi daftar
- controller->>+service: simpan lokasi daftar
- service->>+database: simpan lokasi daftar
- database-->>-service: status query
- service-->>-controller: status simpan lokasi daftar
- controller-->>-frontend: data response
Advertisement
Add Comment
Please, Sign In to add comment