Add employee page

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-11-18 22:56:22 +01:00
parent 2f4cfd7ac0
commit 975d16c623
44 changed files with 5731 additions and 1842 deletions

View File

@@ -57,6 +57,8 @@ type (
ErrDocumentVersionSignatureAlreadyExists struct {
message string
}
ErrDocumentVersionSignatureAlreadySigned struct{}
)
func (e ErrDocumentVersionSignatureNotFound) Error() string {
@@ -67,6 +69,10 @@ func (e ErrDocumentVersionSignatureAlreadyExists) Error() string {
return e.message
}
func (e ErrDocumentVersionSignatureAlreadySigned) Error() string {
return "document version already signed"
}
func (pvs DocumentVersionSignature) CursorKey(orderBy DocumentVersionSignatureOrderField) page.CursorKey {
switch orderBy {
case DocumentVersionSignatureOrderFieldCreatedAt:
@@ -412,3 +418,41 @@ WHERE
return nil
}
func (pvs *DocumentVersionSignature) IsSignedByUserEmail(
ctx context.Context,
conn pg.Conn,
scope Scoper,
documentVersionID gid.GID,
userEmail string,
) (bool, error) {
q := `
SELECT EXISTS (
SELECT 1
FROM document_version_signatures dvs
INNER JOIN peoples p ON dvs.signed_by = p.id
WHERE dvs.document_version_id = @document_version_id
AND p.primary_email_address = @user_email
AND dvs.state = 'SIGNED'
AND dvs.tenant_id = @tenant_id
) AS signed
`
args := pgx.StrictNamedArgs{
"document_version_id": documentVersionID,
"user_email": userEmail,
}
maps.Copy(args, scope.SQLArguments())
rows, err := conn.Query(ctx, q, args)
if err != nil {
return false, fmt.Errorf("cannot query document version signature: %w", err)
}
signed, err := pgx.CollectOneRow(rows, pgx.RowTo[bool])
if err != nil {
return false, fmt.Errorf("cannot collect signed status: %w", err)
}
return signed, nil
}