2022-10-15 20:15:55 +00:00
|
|
|
package services
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"time"
|
|
|
|
|
2022-10-30 04:05:38 +00:00
|
|
|
"github.com/hay-kot/homebox/backend/internal/data/repo"
|
2022-10-15 20:15:55 +00:00
|
|
|
"github.com/hay-kot/homebox/backend/pkgs/hasher"
|
|
|
|
)
|
|
|
|
|
|
|
|
type GroupService struct {
|
|
|
|
repos *repo.AllRepos
|
|
|
|
}
|
|
|
|
|
|
|
|
func (svc *GroupService) UpdateGroup(ctx Context, data repo.GroupUpdate) (repo.Group, error) {
|
|
|
|
if data.Name == "" {
|
|
|
|
data.Name = ctx.User.GroupName
|
|
|
|
}
|
|
|
|
|
|
|
|
if data.Currency == "" {
|
|
|
|
return repo.Group{}, errors.New("currency cannot be empty")
|
|
|
|
}
|
|
|
|
|
|
|
|
return svc.repos.Groups.GroupUpdate(ctx.Context, ctx.GID, data)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (svc *GroupService) NewInvitation(ctx Context, uses int, expiresAt time.Time) (string, error) {
|
|
|
|
token := hasher.GenerateToken()
|
|
|
|
|
|
|
|
_, err := svc.repos.Groups.InvitationCreate(ctx, ctx.GID, repo.GroupInvitationCreate{
|
|
|
|
Token: token.Hash,
|
|
|
|
Uses: uses,
|
|
|
|
ExpiresAt: expiresAt,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
|
|
|
|
return token.Raw, nil
|
|
|
|
}
|