diff --git a/backend/internal/model/timereport b/backend/internal/model/timereport new file mode 100644 index 0000000..d48c5fb --- /dev/null +++ b/backend/internal/model/timereport @@ -0,0 +1,19 @@ +package model + +type TimeReport struct { + reportId string + projectName string + userName string + userRole string + reportDate string + timeWorked uint64 + isSigned bool + reportStatus string // Example "draft", "signed", "unsigned" +} + +type Project struct { + timeReports []TimeReport + projectName string + projectmembers map[string]User + projectRoles map[string]User +} diff --git a/backend/internal/model/user.go b/backend/internal/model/user.go new file mode 100644 index 0000000..c125a60 --- /dev/null +++ b/backend/internal/model/user.go @@ -0,0 +1,139 @@ +package model + +import ( + "errors" +) + +type Account struct { + fullName string + userName string +} + +type Administrator struct { + projects map[string]Project + Account + ProjectMember // comp +} + +// Administrator reciever functions +func (administrator Administrator) addUser(project *Project, user *User) error { + // WIP + return errors.New("WIP") +} + +func (administrator Administrator) removerUser(project *Project, user *User) error { + // WIP + return errors.New("WIP") +} + +func (administrator Administrator) deleteProject(project *Project) error { + // WIP + return errors.New("WIP") +} + +func (administrator Administrator) changeUserRole(project *Project, user *User) error { + // WIP + return errors.New("WIP") +} + +func (administrator *Administrator) login() error { + // WIP + return errors.New("WIP") +} + +func (administrator *Administrator) logout() error { + // WIP + return errors.New("WIP") +} + +type ProjectManager struct { + managedProjects map[string]Project // projekt som förvaltas av projektledaren + totalTime uint64 // total totalt tid arbetat av projektledaren + Account + ProjectMember // comp +} + +// ProjectManager reciever functions +func (projectManager ProjectManager) signReport(timeReport *TimeReport, user User) error { + // WIP + return errors.New("WIP") +} + +func (projectManager ProjectManager) unsignReport(timeReport *TimeReport, user User) error { + // WIP + return errors.New("WIP") +} + +func (projectManager ProjectManager) getAllReports(project *Project) ([]TimeReport, error) { + // WIP + return project.timeReports, errors.New("WIP") +} + +func (projectManager ProjectManager) assignRole(user *User, project *Project, newRole string) error { + // WIP + return errors.New("WIP") +} + +func (projectManager ProjectManager) removeMember(project *Project, user *User) error { + // WIP + return errors.New("WIP") +} + +func (projectManager ProjectManager) getTotalTime(project *Project) (uint64, error) { + // WIP + return 0, errors.New("WIP") +} + +func (projectManager *ProjectManager) login() error { + // WIP + return errors.New("WIP") +} + +func (projectManager *ProjectManager) logout() error { + // WIP + return errors.New("WIP") +} + +type ProjectMember struct { + timereports []TimeReport + role string // ????? + Account // comp +} + +// User reciever functions + +// function used to create a time report, returning a *TimeReport is questionable +func (ProjectMember *ProjectMember) createTimeReport(Project *Project) (*TimeReport, error) { + // WIP + return &TimeReport{}, errors.New("WIP") +} + +func (ProjectMember ProjectMember) getTimeReport(timereports *[]TimeReport) (*TimeReport, error) { + // WIP + return &TimeReport{}, errors.New("WIP") +} + +func (ProjectMember *ProjectMember) editTimeReport(timereport *TimeReport) { + // timereport.editReport() + // WIP +} + +func (projectUser ProjectMember) deleteTimeReport(timeReport *TimeReport) error { // Ska bara project manager kunna göra detta? fråga ledarna! + // WIP + return errors.New("WIP") +} + +func (projectUser *ProjectMember) login() error { + // WIP + return errors.New("WIP") +} + +func (projectUser *ProjectMember) logout() error { + // WIP + return errors.New("WIP") +} + +type User interface { + login() + logout() +} diff --git a/go.work.sum b/go.work.sum new file mode 100644 index 0000000..f0a8e9c --- /dev/null +++ b/go.work.sum @@ -0,0 +1,5 @@ +github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= +github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=