notification_controller.go 2.7 KB
package controllers

import (
	"encoding/json"

	"github.com/astaxie/beego"
	"github.com/linmadan/egglib-go/web/beego/utils"
	"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/notification/command"
	"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/notification/query"
	"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/notification/service"
)

type NotificationController struct {
	beego.Controller
}

func (controller *NotificationController) ReadSentNotification() {
	notificationService := service.NewNotificationService(nil)
	readSentNotificationCommand := &command.ReadSentNotificationCommand{}
	json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), readSentNotificationCommand)
	sentNotificationId, _ := controller.GetInt64(":sentNotificationId")
	readSentNotificationCommand.SentNotificationId = sentNotificationId
	data, err := notificationService.ReadSentNotification(readSentNotificationCommand)
	var response utils.JsonResponse
	if err != nil {
		response = utils.ResponseError(controller.Ctx, err)
	} else {
		response = utils.ResponseData(controller.Ctx, data)
	}
	controller.Data["json"] = response
	controller.ServeJSON()
}

func (controller *NotificationController) ReadAllUnReadSentNotification() {
	notificationService := service.NewNotificationService(nil)
	readAllUnReadSentNotificationCommand := &command.ReadAllUnReadSentNotificationCommand{}
	json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), readAllUnReadSentNotificationCommand)
	data, err := notificationService.ReadAllUnReadSentNotification(readAllUnReadSentNotificationCommand)
	var response utils.JsonResponse
	if err != nil {
		response = utils.ResponseError(controller.Ctx, err)
	} else {
		response = utils.ResponseData(controller.Ctx, data)
	}
	controller.Data["json"] = response
	controller.ServeJSON()
}

func (controller *NotificationController) ListSentNotification() {
	notificationService := service.NewNotificationService(nil)
	listSentNotificationQuery := &query.ListSentNotificationQuery{}
	receiverId, _ := controller.GetInt64("receiverId")
	listSentNotificationQuery.ReceiverId = receiverId
	notificationType, _ := controller.GetInt("notificationType")
	listSentNotificationQuery.NotificationType = notificationType
	offset, _ := controller.GetInt("offset")
	listSentNotificationQuery.Offset = offset
	limit, _ := controller.GetInt("limit")
	listSentNotificationQuery.Limit = limit
	data, err := notificationService.ListSentNotification(listSentNotificationQuery)
	var response utils.JsonResponse
	if err != nil {
		response = utils.ResponseError(controller.Ctx, err)
	} else {
		response = utils.ResponseData(controller.Ctx, data)
	}
	controller.Data["json"] = response
	controller.ServeJSON()
}