package mail import ( "fmt" "strconv" "strings" mailService "dove/services/mail" "dove/utils/meta" "dove/utils/shortcuts" "dove/utils/urls" "github.com/gofiber/fiber/v2" ) func CreateUser(context *fiber.Ctx) error { body, parseError := meta.Body[mailService.CreateUserRequest](context) if parseError != nil { return shortcuts.BadRequestError(context, parseError) } serviceError := mailService.CreateUser(body) if serviceError != nil { return shortcuts.HandleError(context, serviceError) } return shortcuts.Redirect(context, "mail.users") } func UpdateUser(context *fiber.Ctx) error { userID, parseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) if parseError != nil { return shortcuts.BadRequestError(context, parseError) } body, bodyError := meta.Body[mailService.UpdateUserRequest](context) if bodyError != nil { return shortcuts.BadRequestError(context, bodyError) } serviceError := mailService.UpdateUser(uint(userID), body) if serviceError != nil { return shortcuts.HandleError(context, serviceError) } return shortcuts.Redirect(context, "mail.users") } func DeleteUser(context *fiber.Ctx) error { userID, parseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) if parseError != nil { return shortcuts.BadRequestError(context, parseError) } serviceError := mailService.DeleteUser(uint(userID)) if serviceError != nil { return shortcuts.HandleError(context, serviceError) } return shortcuts.Redirect(context, "mail.users") } func CreateMailbox(context *fiber.Ctx) error { body, parseError := meta.Body[mailService.CreateMailboxRequest](context) if parseError != nil { return shortcuts.BadRequestError(context, parseError) } serviceError := mailService.CreateMailbox(body) if serviceError != nil { return shortcuts.HandleError(context, serviceError) } return shortcuts.Redirect(context, "mail.mailboxes") } func UpdateMailbox(context *fiber.Ctx) error { mailboxID, parseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) if parseError != nil { return shortcuts.BadRequestError(context, parseError) } body, bodyError := meta.Body[mailService.UpdateMailboxRequest](context) if bodyError != nil { return shortcuts.BadRequestError(context, bodyError) } serviceError := mailService.UpdateMailbox(uint(mailboxID), body) if serviceError != nil { return shortcuts.HandleError(context, serviceError) } return shortcuts.Redirect(context, "mail.mailboxes") } func DeleteMailbox(context *fiber.Ctx) error { mailboxID, parseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) if parseError != nil { return shortcuts.BadRequestError(context, parseError) } serviceError := mailService.DeleteMailbox(uint(mailboxID)) if serviceError != nil { return shortcuts.HandleError(context, serviceError) } return shortcuts.Redirect(context, "mail.mailboxes") } func mailboxEditPath(mailboxID uint) string { editPath, _ := urls.GetFullPath("mail.mailboxes.edit") return strings.Replace(editPath, ":id", fmt.Sprintf("%d", mailboxID), 1) } func CreateAlias(context *fiber.Ctx) error { mailboxID, parseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) if parseError != nil { return shortcuts.BadRequestError(context, parseError) } body, bodyError := meta.Body[mailService.CreateAliasRequest](context) if bodyError != nil { return shortcuts.BadRequestError(context, bodyError) } body.MailboxID = uint(mailboxID) serviceError := mailService.CreateAlias(body) if serviceError != nil { return shortcuts.HandleError(context, serviceError) } return shortcuts.RedirectToPath(context, mailboxEditPath(uint(mailboxID))) } func DeleteAlias(context *fiber.Ctx) error { aliasID, parseError := strconv.ParseUint(meta.Request(context).Param("alias_id"), 10, 64) if parseError != nil { return shortcuts.BadRequestError(context, parseError) } mailboxID, mailboxParseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) if mailboxParseError != nil { return shortcuts.BadRequestError(context, mailboxParseError) } serviceError := mailService.DeleteAlias(uint(aliasID)) if serviceError != nil { return shortcuts.HandleError(context, serviceError) } return shortcuts.RedirectToPath(context, mailboxEditPath(uint(mailboxID))) }