# Push notification manually
Mô tả tính năng cho việc push thông báo chủ động
Trong phần này có 2 phần chính:
- Tạo topic chủ động
- Push notification chủ động
## 1. Tạo topic chủ động
### 1.1. Tạo topic
Đây là màn hình sơ bộ:

- Chọn chung cư (required)
- Chọn block (optional)
- Chọn căn hộ (optional)
Sau khi bấm nút tạo topic:
- Nếu chỉ chọn chung cư thì tạo topic cho chung cư đó cùng các block và căn hộ thuộc về chung cư đó
- Nếu chỉ chọn chung cư và chọn block thì tạo topic cho block đó cùng toàn bộ căn hộ thuộc về block đó
- Nếu có chọn cả 3 option thì tạo topic cho căn hộ đó
Lưu ý là sẽ có trường hợp có những topic đã tạo trước đó rồi thì không tạo nữa.
Ví dụ tạo topic cho block A, trong block A có `1000` căn hộ và `200` căn đã được tạo topic trước đó. Kết quả là cần tạo `801` topics, `1` topic chung cư và `800` topics căn hộ.
### 1.2. Lịch sử tạo topic
Sau khi tiến hành tạo topic chủ động xong thì sẽ hiển thị như hình:

- Số lượng, thì lấy ví dụ ở trên, trường hợp trong `800` topics được gọi để khởi tạo, có thể vì lí do gì đó mà không tạo được `100` topics (giả sử như aws bị lỗi, hoặc chết server, ...) thì hiển thị là `700/800`
- Trạng thái, mặc định là thành công. Thất bại khi không có topic nào được tạo hoặc có lỗi toàn bộ.
## 2. Push notification chủ động
### 2.1 Push notification chủ động
Dùng để push notification tới cho toàn chung cư, cho toàn block, hoặc căn hộ cụ thể.
Giao diện đề xuất:

Kết quả khi nhấn push notification thì ở app sẽ nhận được như hình:

- Chọn chung cư (required)
- Chọn block (optional)
- Chọng căn hộ (optional)
- Tiêu đề thông báo (required) , chính là title trong hình sau
- Nội dung thông báo (required), chính là message ở hình dưới
Ngoài ra, còn có trường hợp gắn thêm data vào message để app có thể xử lí một số trường hợp tương ứng. Do đó cần có thêm:
- Chọn loại thông báo (optional), có các loại sau:
- `notice-bill`: thông báo phí
- `service-booking`: thông báo đặt dịch vụ
- `utility-booking`: thông báo đặt tiện ích
- `order`: thông báo đã thanh toán thành công hóa đơn
- `announcement`: có thông báo mới từ BQL
- `news`: có tin tức mới từ BQL
- `conversation`: thông báo liên quan đến hội thoại
- Nhập id thông báo (required if inputed type): id này thường do người sử dụng lấy tùy vào mục đích, sẽ được CS hướng dẫn.
- `notice-bill`: id của thông báo tổng
- `service-booking`: id của booking dịch vụ
- `utility-booking`: id của booking tiện ích
- `order`: id của hóa đơn vừa được thanh toán
- `announcement`: id của thông báo
- `news`: id của tin tức
- `conversation`: id của hội thoại
Một số trường hợp push được liệt kê trong [link này](https://docs.google.com/spreadsheets/d/1g5uoUUxWk6pkyDOYU_O7KMkbVpOlpxLY8Cu51IrIxmc/edit#gid=0).
### 2.2 Lịch sử push notification chủ động
Mục đích của chức năng này là lưu lại các notification đã được gửi chủ động.
