55 "sort"
66 "strconv"
77
8+ dataTypesSettingsCgm "github.com/tidepool-org/platform/data/types/settings/cgm"
89 "github.com/tidepool-org/platform/errors"
910 "github.com/tidepool-org/platform/pointer"
1011 "github.com/tidepool-org/platform/structure"
@@ -32,9 +33,29 @@ const (
3233 AlertSettingAlertNameUrgentLow = "urgentLow"
3334 AlertSettingAlertNameUrgentLowSoon = "urgentLowSoon"
3435
36+ AlertSettingSnoozeMinutesMaximum = dataTypesSettingsCgm .SnoozeDurationMinutesMaximum
37+ AlertSettingSnoozeMinutesMinimum = dataTypesSettingsCgm .SnoozeDurationMinutesMinimum
38+
3539 AlertSettingUnitMinutes = "minutes"
3640 AlertSettingUnitMgdL = "mg/dL"
3741 AlertSettingUnitMgdLMinute = "mg/dL/min"
42+
43+ AlertSettingValueFallMgdLMinuteMaximum = dataTypesSettingsCgm .FallAlertRateMgdLMinuteMaximum
44+ AlertSettingValueFallMgdLMinuteMinimum = dataTypesSettingsCgm .FallAlertRateMgdLMinuteMinimum
45+ AlertSettingValueHighMgdLMaximum = dataTypesSettingsCgm .HighAlertLevelMgdLMaximum
46+ AlertSettingValueHighMgdLMinimum = dataTypesSettingsCgm .HighAlertLevelMgdLMinimum
47+ AlertSettingValueLowMgdLMaximum = dataTypesSettingsCgm .LowAlertLevelMgdLMaximum
48+ AlertSettingValueLowMgdLMinimum = dataTypesSettingsCgm .LowAlertLevelMgdLMinimum
49+ AlertSettingValueNoReadingsMgdLMaximum = dataTypesSettingsCgm .NoDataAlertDurationMinutesMaximum
50+ AlertSettingValueNoReadingsMgdLMinimum = dataTypesSettingsCgm .NoDataAlertDurationMinutesMinimum
51+ AlertSettingValueOutOfRangeMgdLMaximum = dataTypesSettingsCgm .OutOfRangeAlertDurationMinutesMaximum
52+ AlertSettingValueOutOfRangeMgdLMinimum = dataTypesSettingsCgm .OutOfRangeAlertDurationMinutesMinimum
53+ AlertSettingValueRiseMgdLMinuteMaximum = dataTypesSettingsCgm .RiseAlertRateMgdLMinuteMaximum
54+ AlertSettingValueRiseMgdLMinuteMinimum = dataTypesSettingsCgm .RiseAlertRateMgdLMinuteMinimum
55+ AlertSettingValueUrgentLowMgdLMaximum = dataTypesSettingsCgm .UrgentLowAlertLevelMgdLMaximum
56+ AlertSettingValueUrgentLowMgdLMinimum = dataTypesSettingsCgm .UrgentLowAlertLevelMgdLMinimum
57+ AlertSettingValueUrgentLowSoonMgdLMaximum = dataTypesSettingsCgm .UrgentLowAlertLevelMgdLMaximum
58+ AlertSettingValueUrgentLowSoonMgdLMinimum = dataTypesSettingsCgm .UrgentLowAlertLevelMgdLMinimum
3859)
3960
4061func AlertScheduleSettingsDays () []string {
@@ -87,108 +108,34 @@ func AlertSettingUnitFalls() []string {
87108 return []string {AlertSettingUnitMgdLMinute }
88109}
89110
90- func AlertSettingValueFallMgdLMinutes () []float64 {
91- return []float64 {2 , 3 }
92- }
93-
94- func AlertSettingSnoozeFalls () []int {
95- return []int {0 , 30 }
96- }
97-
98111func AlertSettingUnitHighs () []string {
99112 return []string {AlertSettingUnitMgdL }
100113}
101114
102- func AlertSettingValueHighMgdLs () []float64 {
103- return alertSettingValueHighMgdLs
104- }
105-
106- var alertSettingValueHighMgdLs = generateFloatRange (120 , 400 , 10 )
107-
108- func AlertSettingSnoozeHighs () []int {
109- return alertSettingSnoozeHighs
110- }
111-
112- var alertSettingSnoozeHighs = append (append ([]int {0 }, generateIntegerRange (15 , 240 , 5 )... ), generateIntegerRange (255 , 300 , 15 )... )
113-
114115func AlertSettingUnitLows () []string {
115116 return []string {AlertSettingUnitMgdL }
116117}
117118
118- func AlertSettingValueLowMgdLs () []float64 {
119- return alertSettingValueLowMgdLs
120- }
121-
122- var alertSettingValueLowMgdLs = generateFloatRange (60 , 100 , 5 )
123-
124- func AlertSettingSnoozeLows () []int {
125- return alertSettingSnoozeLows
126- }
127-
128- var alertSettingSnoozeLows = append (append ([]int {0 }, generateIntegerRange (15 , 240 , 5 )... ), generateIntegerRange (255 , 300 , 15 )... )
129-
130119func AlertSettingUnitNoReadings () []string {
131120 return []string {AlertSettingUnitMinutes }
132121}
133122
134- func AlertSettingValueNoReadingsMinutes () []float64 {
135- return []float64 {0 , 20 }
136- }
137-
138- func AlertSettingSnoozeNoReadings () []int {
139- return []int {0 , 20 , 25 , 30 }
140- }
141-
142123func AlertSettingUnitOutOfRanges () []string {
143124 return []string {AlertSettingUnitMinutes }
144125}
145126
146- func AlertSettingValueOutOfRangeMinutes () []float64 {
147- return alertSettingValueOutOfRangeMinutes
148- }
149-
150- var alertSettingValueOutOfRangeMinutes = generateFloatRange (20 , 240 , 5 )
151-
152- func AlertSettingSnoozeOutOfRanges () []int {
153- return []int {0 , 20 , 25 , 30 }
154- }
155-
156127func AlertSettingUnitRises () []string {
157128 return []string {AlertSettingUnitMgdLMinute }
158129}
159130
160- func AlertSettingValueRiseMgdLMinutes () []float64 {
161- return []float64 {2 , 3 }
162- }
163-
164- func AlertSettingSnoozeRises () []int {
165- return []int {0 , 30 }
166- }
167-
168131func AlertSettingUnitUrgentLows () []string {
169132 return []string {AlertSettingUnitMgdL }
170133}
171134
172- func AlertSettingValueUrgentLowMgdLs () []float64 {
173- return []float64 {55 }
174- }
175-
176- func AlertSettingSnoozeUrgentLows () []int {
177- return []int {0 , 30 }
178- }
179-
180135func AlertSettingUnitUrgentLowSoons () []string {
181136 return []string {AlertSettingUnitMgdL }
182137}
183138
184- func AlertSettingValueUrgentLowSoonMgdLs () []float64 {
185- return []float64 {55 }
186- }
187-
188- func AlertSettingSnoozeUrgentLowSoons () []int {
189- return []int {0 , 30 }
190- }
191-
192139type AlertSchedules []* AlertSchedule
193140
194141func ParseAlertSchedules (parser structure.ArrayParser ) * AlertSchedules {
@@ -583,10 +530,10 @@ func (a *AlertSetting) validateFall(validator structure.Validator) {
583530 if a .Unit != nil {
584531 switch * a .Unit {
585532 case AlertSettingUnitMgdLMinute :
586- validator .Float64 ("value" , a .Value ).Exists ().OneOf ( AlertSettingValueFallMgdLMinutes () ... )
533+ validator .Float64 ("value" , a .Value ).Exists ().InRange ( AlertSettingValueFallMgdLMinuteMinimum , AlertSettingValueFallMgdLMinuteMaximum )
587534 }
588535 }
589- validator .Int ("snooze" , a .Snooze ).OneOf ( AlertSettingSnoozeFalls () ... )
536+ validator .Int ("snooze" , a .Snooze ).InRange ( AlertSettingSnoozeMinutesMinimum , AlertSettingSnoozeMinutesMaximum )
590537 validator .Bool ("enabled" , a .Enabled ).Exists ()
591538}
592539
@@ -595,10 +542,10 @@ func (a *AlertSetting) validateHigh(validator structure.Validator) {
595542 if a .Unit != nil {
596543 switch * a .Unit {
597544 case AlertSettingUnitMgdL :
598- validator .Float64 ("value" , a .Value ).Exists ().OneOf ( AlertSettingValueHighMgdLs () ... )
545+ validator .Float64 ("value" , a .Value ).Exists ().InRange ( AlertSettingValueHighMgdLMinimum , AlertSettingValueHighMgdLMaximum )
599546 }
600547 }
601- validator .Int ("snooze" , a .Snooze ).Exists ().OneOf ( AlertSettingSnoozeHighs () ... )
548+ validator .Int ("snooze" , a .Snooze ).Exists ().InRange ( AlertSettingSnoozeMinutesMinimum , AlertSettingSnoozeMinutesMaximum )
602549 validator .Bool ("enabled" , a .Enabled ).Exists ()
603550}
604551
@@ -607,10 +554,10 @@ func (a *AlertSetting) validateLow(validator structure.Validator) {
607554 if a .Unit != nil {
608555 switch * a .Unit {
609556 case AlertSettingUnitMgdL :
610- validator .Float64 ("value" , a .Value ).Exists ().OneOf ( AlertSettingValueLowMgdLs () ... )
557+ validator .Float64 ("value" , a .Value ).Exists ().InRange ( AlertSettingValueLowMgdLMinimum , AlertSettingValueLowMgdLMaximum )
611558 }
612559 }
613- validator .Int ("snooze" , a .Snooze ).Exists ().OneOf ( AlertSettingSnoozeLows () ... )
560+ validator .Int ("snooze" , a .Snooze ).Exists ().InRange ( AlertSettingSnoozeMinutesMinimum , AlertSettingSnoozeMinutesMaximum )
614561 validator .Bool ("enabled" , a .Enabled ).Exists ()
615562}
616563
@@ -619,10 +566,10 @@ func (a *AlertSetting) validateNoReadings(validator structure.Validator) {
619566 if a .Unit != nil {
620567 switch * a .Unit {
621568 case AlertSettingUnitMinutes :
622- validator .Float64 ("value" , a .Value ).Exists ().OneOf ( AlertSettingValueNoReadingsMinutes () ... )
569+ validator .Float64 ("value" , a .Value ).Exists ().InRange ( AlertSettingValueNoReadingsMgdLMinimum , AlertSettingValueNoReadingsMgdLMaximum )
623570 }
624571 }
625- validator .Int ("snooze" , a .Snooze ).OneOf ( AlertSettingSnoozeNoReadings () ... )
572+ validator .Int ("snooze" , a .Snooze ).InRange ( AlertSettingSnoozeMinutesMinimum , AlertSettingSnoozeMinutesMaximum )
626573 validator .Bool ("enabled" , a .Enabled ).Exists ()
627574}
628575
@@ -631,10 +578,10 @@ func (a *AlertSetting) validateOutOfRange(validator structure.Validator) {
631578 if a .Unit != nil {
632579 switch * a .Unit {
633580 case AlertSettingUnitMinutes :
634- validator .Float64 ("value" , a .Value ).Exists ().OneOf ( AlertSettingValueOutOfRangeMinutes () ... )
581+ validator .Float64 ("value" , a .Value ).Exists ().InRange ( AlertSettingValueOutOfRangeMgdLMinimum , AlertSettingValueOutOfRangeMgdLMaximum )
635582 }
636583 }
637- validator .Int ("snooze" , a .Snooze ).OneOf ( AlertSettingSnoozeOutOfRanges () ... )
584+ validator .Int ("snooze" , a .Snooze ).InRange ( AlertSettingSnoozeMinutesMinimum , AlertSettingSnoozeMinutesMaximum )
638585 validator .Bool ("enabled" , a .Enabled ).Exists ()
639586}
640587
@@ -643,10 +590,10 @@ func (a *AlertSetting) validateRise(validator structure.Validator) {
643590 if a .Unit != nil {
644591 switch * a .Unit {
645592 case AlertSettingUnitMgdLMinute :
646- validator .Float64 ("value" , a .Value ).Exists ().OneOf ( AlertSettingValueRiseMgdLMinutes () ... )
593+ validator .Float64 ("value" , a .Value ).Exists ().InRange ( AlertSettingValueRiseMgdLMinuteMinimum , AlertSettingValueRiseMgdLMinuteMaximum )
647594 }
648595 }
649- validator .Int ("snooze" , a .Snooze ).OneOf ( AlertSettingSnoozeRises () ... )
596+ validator .Int ("snooze" , a .Snooze ).InRange ( AlertSettingSnoozeMinutesMinimum , AlertSettingSnoozeMinutesMaximum )
650597 validator .Bool ("enabled" , a .Enabled ).Exists ()
651598}
652599
@@ -660,10 +607,10 @@ func (a *AlertSetting) validateUrgentLow(validator structure.Validator) {
660607 if a .Unit != nil {
661608 switch * a .Unit {
662609 case AlertSettingUnitMgdL :
663- validator .Float64 ("value" , a .Value ).Exists ().OneOf ( AlertSettingValueUrgentLowMgdLs () ... )
610+ validator .Float64 ("value" , a .Value ).Exists ().InRange ( AlertSettingValueUrgentLowMgdLMinimum , AlertSettingValueUrgentLowMgdLMaximum )
664611 }
665612 }
666- validator .Int ("snooze" , a .Snooze ).Exists ().OneOf ( AlertSettingSnoozeUrgentLows () ... )
613+ validator .Int ("snooze" , a .Snooze ).Exists ().InRange ( AlertSettingSnoozeMinutesMinimum , AlertSettingSnoozeMinutesMaximum )
667614 validator .Bool ("enabled" , a .Enabled ).Exists ().True ()
668615}
669616
@@ -672,10 +619,10 @@ func (a *AlertSetting) validateUrgentLowSoon(validator structure.Validator) {
672619 if a .Unit != nil {
673620 switch * a .Unit {
674621 case AlertSettingUnitMgdL :
675- validator .Float64 ("value" , a .Value ).Exists ().OneOf ( AlertSettingValueUrgentLowSoonMgdLs () ... )
622+ validator .Float64 ("value" , a .Value ).Exists ().InRange ( AlertSettingValueUrgentLowSoonMgdLMinimum , AlertSettingValueUrgentLowSoonMgdLMaximum )
676623 }
677624 }
678- validator .Int ("snooze" , a .Snooze ).Exists ().OneOf ( AlertSettingSnoozeUrgentLowSoons () ... )
625+ validator .Int ("snooze" , a .Snooze ).Exists ().InRange ( AlertSettingSnoozeMinutesMinimum , AlertSettingSnoozeMinutesMaximum )
679626 validator .Bool ("enabled" , a .Enabled ).Exists ()
680627}
681628
0 commit comments