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) }