-
Notifications
You must be signed in to change notification settings - Fork 1
/
building.go
41 lines (33 loc) · 1.06 KB
/
building.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package services
import (
"github.com/energietransitie/twomes-backoffice-api/twomes/building"
)
type BuildingService struct {
repository building.BuildingRepository
// Services used when getting device info.
uploadService *UploadService
}
// Create a new BuildingService.
func NewBuildingService(repository building.BuildingRepository, uploadService *UploadService) *BuildingService {
return &BuildingService{
repository: repository,
uploadService: uploadService,
}
}
func (s *BuildingService) Create(accountID uint, long float32, lat float32, tzName string) (building.Building, error) {
b := building.MakeBuilding(accountID, long, lat, tzName)
return s.repository.Create(b)
}
func (s *BuildingService) GetByID(id uint) (building.Building, error) {
b, err := s.repository.Find(building.Building{ID: id})
if err != nil {
return building.Building{}, err
}
for _, device := range b.Devices {
device.LatestUpload, _, err = s.uploadService.GetLatestUploadTimeForDeviceWithID(device.ID)
if err != nil {
return building.Building{}, err
}
}
return b, nil
}