diff options
Diffstat (limited to 'controllers')
| -rw-r--r-- | controllers/domain/domain.go | 54 | ||||
| -rw-r--r-- | controllers/mail/mail.go | 118 |
2 files changed, 171 insertions, 1 deletions
diff --git a/controllers/domain/domain.go b/controllers/domain/domain.go index 5613ade..ac61c94 100644 --- a/controllers/domain/domain.go +++ b/controllers/domain/domain.go @@ -1,6 +1,8 @@ package domain import ( + "strconv" + domainService "dove/services/domain" "dove/utils/meta" "dove/utils/shortcuts" @@ -22,6 +24,39 @@ func CreateDomain(context *fiber.Ctx) error { return shortcuts.Redirect(context, "domains.manage") } +func UpdateDomain(context *fiber.Ctx) error { + domainID, parseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) + if parseError != nil { + return shortcuts.BadRequestError(context, parseError) + } + + body, bodyError := meta.Body[domainService.UpdateDomainRequest](context) + if bodyError != nil { + return shortcuts.BadRequestError(context, bodyError) + } + + serviceError := domainService.UpdateDomain(uint(domainID), body) + if serviceError != nil { + return shortcuts.HandleError(context, serviceError) + } + + return shortcuts.Redirect(context, "domains.manage") +} + +func DeleteDomain(context *fiber.Ctx) error { + domainID, parseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) + if parseError != nil { + return shortcuts.BadRequestError(context, parseError) + } + + serviceError := domainService.DeleteDomain(uint(domainID)) + if serviceError != nil { + return shortcuts.HandleError(context, serviceError) + } + + return shortcuts.Redirect(context, "domains.manage") +} + func CreateTLD(context *fiber.Ctx) error { body, parseError := meta.Body[domainService.CreateTLDRequest](context) if parseError != nil { @@ -36,6 +71,25 @@ func CreateTLD(context *fiber.Ctx) error { return shortcuts.Redirect(context, "domains.tlds") } +func UpdateTLD(context *fiber.Ctx) error { + tldID, parseError := strconv.ParseUint(meta.Request(context).Param("id"), 10, 64) + if parseError != nil { + return shortcuts.BadRequestError(context, parseError) + } + + body, bodyError := meta.Body[domainService.UpdateTLDRequest](context) + if bodyError != nil { + return shortcuts.BadRequestError(context, bodyError) + } + + serviceError := domainService.UpdateTLD(uint(tldID), body) + if serviceError != nil { + return shortcuts.HandleError(context, serviceError) + } + + return shortcuts.Redirect(context, "domains.tlds") +} + func DeleteTLD(context *fiber.Ctx) error { serviceError := domainService.DeleteTLD(meta.Request(context).Param("name")) if serviceError != nil { diff --git a/controllers/mail/mail.go b/controllers/mail/mail.go index 544a51b..58df08d 100644 --- a/controllers/mail/mail.go +++ b/controllers/mail/mail.go @@ -1,9 +1,14 @@ package mail import ( + "fmt" + "strconv" + "strings" + mailService "dove/services/mail" "dove/utils/meta" "dove/utils/shortcuts" + "dove/utils/urls" "github.com/gofiber/fiber/v2" ) @@ -22,6 +27,39 @@ func CreateUser(context *fiber.Ctx) error { 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 { @@ -34,4 +72,82 @@ func CreateMailbox(context *fiber.Ctx) error { } return shortcuts.Redirect(context, "mail.mailboxes") -}
\ No newline at end of file +} + +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))) +} |
