Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d5cd2a7
feat: add contract generation feature for companies
Francisca105 Nov 25, 2025
44e5625
feat(contract): implement DOCX generation and download functionality
Francisca105 Nov 26, 2025
ab194e1
feat(contract): update contract generation to use database-stored tem…
Francisca105 Nov 27, 2025
30579b1
feat(template): add upload and download functionality for template files
Francisca105 Nov 27, 2025
580dbc9
feat(contract-templates): implement admin template management
Francisca105 Nov 27, 2025
2d3bf43
feat(spaces): enhance CDN initialization with custom domain support
Francisca105 Nov 27, 2025
597cd90
feat(templates): remove createDefaultTemplates function and related U…
Francisca105 Nov 27, 2025
415d8aa
feat(upload-template): replace native select and input with custom UI…
Francisca105 Nov 27, 2025
6bdd316
feat(templates): remove URL column from templates list
Francisca105 Nov 27, 2025
581388f
feat(contract): simplify contract naming and remove unused functions
Francisca105 Nov 27, 2025
75bf7d5
feat(database): update index creation to include event and kind fields
Francisca105 Nov 27, 2025
4e35307
feat(templates): add endpoint to upload template file by name and event
Francisca105 Nov 27, 2025
4779b99
feat(upload-template): implement upload template by name functionalit…
Francisca105 Nov 27, 2025
ddf3723
refactor(contract): rename PDF generation function to DOCX and update…
Francisca105 Nov 27, 2025
f7c4e49
feat(contract): add eventId to contract request and update contract g…
Francisca105 Nov 27, 2025
f77156d
feat(contract): require eventId in contract generation and improve er…
Francisca105 Nov 27, 2025
c7e2db6
feat(contract): require language in contract generation request and i…
Francisca105 Nov 27, 2025
03e573a
feat(contract): add language validation for contract generation request
Francisca105 Nov 27, 2025
df0adb0
feat(contract): enhance contract generation to support language-speci…
Francisca105 Nov 27, 2025
9224c45
feat(contract): update contract document generation handler to requir…
Francisca105 Nov 27, 2025
c7235c6
revert: main package.json
Francisca105 Nov 27, 2025
89330bf
feat(contract): require language and eventId in contract generation p…
Francisca105 Nov 27, 2025
5456c71
refactor: remove unnecessary comments and update file reading method …
Francisca105 Nov 27, 2025
93780f9
refactor: replace ioutil.ReadAll with io.ReadAll for improved readabi…
Francisca105 Nov 27, 2025
c1910e5
fix(contract): participation package retrieval logic
Francisca105 Nov 27, 2025
b01c224
fix(contract): add explicit error handling for missing package in con…
Francisca105 Nov 27, 2025
e647e90
feat(contract): add contract download functionality to CompanyBilling…
Francisca105 Nov 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file added backend/assets/fonts/DejaVuSans-Bold.ttf
Binary file not shown.
Binary file added backend/assets/fonts/DejaVuSans.ttf
Binary file not shown.
3 changes: 3 additions & 0 deletions backend/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.23.0
toolchain go1.24.2

require (
baliance.com/gooxml v1.0.1
github.com/arran4/golang-ical v0.2.7
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/digitalocean/godo v1.19.0
Expand All @@ -15,7 +16,9 @@ require (
github.com/h2non/filetype v1.0.10
github.com/joho/godotenv v1.5.1
github.com/minio/minio-go v0.0.0-20190523192347-c6c2912aa552
github.com/nguyenthenguyen/docx v0.0.0-20230621112118-9c8e795a11db
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/phpdave11/gofpdf v1.4.3
github.com/spf13/viper v1.4.0
go.mongodb.org/mongo-driver v1.5.1
golang.org/x/oauth2 v0.30.0
Expand Down
13 changes: 11 additions & 2 deletions backend/go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
baliance.com/gooxml v1.0.1 h1:fG5lmxmjEVFfbKQ2NuyCuU3hMuuOb5avh5a38SZNO1o=
baliance.com/gooxml v1.0.1/go.mod h1:+gpUgmkAF4zCtwOFPNRLDAvpVRWoKs5EeQTSv/HYFnw=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
Expand Down Expand Up @@ -55,6 +57,7 @@ github.com/aws/aws-sdk-go v1.34.28 h1:sscPpn/Ns3i0F4HPEWAVcwdIRaZZCuL7llJ2/60yPI
github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
Expand Down Expand Up @@ -207,8 +210,6 @@ github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/handlers v1.4.2 h1:0QniY0USkHQ1RGCLfKxeNHK9bkDHGRYGNDFBCS+YARg=
github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
Expand Down Expand Up @@ -237,6 +238,7 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X
github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE=
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
Expand Down Expand Up @@ -270,13 +272,18 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nguyenthenguyen/docx v0.0.0-20230621112118-9c8e795a11db h1:v0cW/tTMrJQyZr7r6t+t9+NhH2OBAjydHisVYxuyObc=
github.com/nguyenthenguyen/docx v0.0.0-20230621112118-9c8e795a11db/go.mod h1:BZyH8oba3hE/BTt2FfBDGPOHhXiKs9RFmUvvXRdzrhM=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI=
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
github.com/phpdave11/gofpdf v1.4.3 h1:M/zHvS8FO3zh9tUd2RCOPEjyuVcs281FCyF22Qlz/IA=
github.com/phpdave11/gofpdf v1.4.3/go.mod h1:MAwzoUIgD3J55u0rxIG2eu37c+XWhBtXSpPAhnQXf/o=
github.com/phpdave11/gofpdi v1.0.15/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
Expand All @@ -300,6 +307,7 @@ github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
Expand Down Expand Up @@ -406,6 +414,7 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
Expand Down
5 changes: 3 additions & 2 deletions backend/src/models/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ type Template struct {
// template's ID (_id of mongodb).
ID primitive.ObjectID `json:"id" bson:"_id"`

Name string `json:"name" bson:"name"`
Url string `json:"url" bson:"url"`
Name string `json:"name" bson:"name"`
Url string `json:"url" bson:"url"`
Event int `json:"event,omitempty" bson:"event,omitempty"`
Requirements []Requirement `json:"requirements" bson:"requirements"`
Kind string `json:"kind" bson:"kind"`
}
2 changes: 1 addition & 1 deletion backend/src/mongodb/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ func InitializeDatabase() {
_, err = Templates.Collection.Indexes().CreateOne(
context.Background(),
mongo.IndexModel{
Keys: bson.D{{Key: "name", Value: 1}},
Keys: bson.D{{Key: "event", Value: 1}, {Key: "kind", Value: 1}, {Key: "name", Value: 1}},
Options: options.Index().SetUnique(true),
},
)
Expand Down
37 changes: 35 additions & 2 deletions backend/src/mongodb/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,9 @@ func (t *TemplateType) GetTemplates(tempOptions GetTemplatesOptions) ([]*models.
ctx := context.Background()

filter := bson.M{}
elemMatch := bson.M{}

if tempOptions.EventID != nil {
elemMatch["event"] = tempOptions.EventID
filter["event"] = *tempOptions.EventID
}

if tempOptions.Name != nil {
Expand Down Expand Up @@ -147,3 +146,37 @@ func (t *TemplateType) GetTemplates(tempOptions GetTemplatesOptions) ([]*models.

return template, nil
}

// CreateTemplate inserts a new template document and returns it.
func (t *TemplateType) CreateTemplate(template models.Template) (*models.Template, error) {
ctx := context.Background()

// ensure an ID is set
if template.ID.IsZero() {
template.ID = primitive.NewObjectID()
}

if _, err := t.Collection.InsertOne(ctx, template); err != nil {
return nil, err
}

return &template, nil
}

// UpdateTemplate updates name/event/kind fields of a template
func (t *TemplateType) UpdateTemplate(templateID primitive.ObjectID, update bson.M) (*models.Template, error) {
ctx := context.Background()

var filterQuery = bson.M{"_id": templateID}

var optionsQuery = options.FindOneAndUpdate()
optionsQuery.SetReturnDocument(options.After)

var updatedTemplate models.Template

if err := t.Collection.FindOneAndUpdate(ctx, filterQuery, bson.M{"$set": update}, optionsQuery).Decode(&updatedTemplate); err != nil {
return nil, err
}

return &updatedTemplate, nil
}
5 changes: 2 additions & 3 deletions backend/src/router/company.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"errors"
"fmt"
"io"
"io/ioutil"
"log"
"net/http"
"strconv"
Expand Down Expand Up @@ -905,7 +904,7 @@ func setCompanyPrivateImage(w http.ResponseWriter, r *http.Request) {
var buf bytes.Buffer
checker := io.TeeReader(file, &buf)

bytes, err := ioutil.ReadAll(checker)
bytes, err := io.ReadAll(checker)
if err != nil {
http.Error(w, "Unable to read the file: "+err.Error(), http.StatusExpectationFailed)
return
Expand Down Expand Up @@ -985,7 +984,7 @@ func setCompanyPublicImage(w http.ResponseWriter, r *http.Request) {
var buf bytes.Buffer
checker := io.TeeReader(file, &buf)

bytes, err := ioutil.ReadAll(checker)
bytes, err := io.ReadAll(checker)
if err != nil {
http.Error(w, "Unable to read the file: "+err.Error(), http.StatusExpectationFailed)
return
Expand Down
Loading