api-qobiltu-dev / space /controller /email /email_controller.go
lifedebugger's picture
Deploy files from GitHub repository
c2003d2
package email_controller
import (
"net/http"
"api.qobiltu.id/middleware"
"api.qobiltu.id/models"
"api.qobiltu.id/response"
"api.qobiltu.id/services"
"github.com/gin-gonic/gin"
)
type EmailController interface {
CreateEmailVerification(ctx *gin.Context)
Verify(ctx *gin.Context)
}
type emailController struct {
emailService services.EmailService
}
func NewEmailController(emailService services.EmailService) EmailController {
return &emailController{
emailService: emailService,
}
}
func (c *emailController) CreateEmailVerification(ctx *gin.Context) {
accountData := middleware.GetAccountData(ctx)
req := models.CreateEmailVerificationRequest{
AccountID: int64(accountData.UserID),
}
res, err := c.emailService.CreateEmailVerification(ctx, &req)
if err != nil {
response.HandleError(ctx, err)
return
}
response.HandleSuccess(ctx, http.StatusOK, "Email verification created", res, nil)
}
func (c *emailController) Verify(ctx *gin.Context) {
var req models.ValidateEmailVerificationRequest
if err := ctx.ShouldBindJSON(&req); err != nil {
response.HandleError(ctx, err)
return
}
accountData := middleware.GetAccountData(ctx)
req.AccountID = int64(accountData.UserID)
res, err := c.emailService.ValidateEmailVerification(ctx, &req)
if err != nil {
response.HandleError(ctx, err)
return
}
response.HandleSuccess(ctx, http.StatusOK, "Email verified", res, nil)
}