From e758c048e76912f6850f273d46771ea1d7e34763 Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Tue, 27 Apr 2021 19:31:36 +0300 Subject: [PATCH] Implement passTimings function in engine/filters.go --- engine/filters.go | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/engine/filters.go b/engine/filters.go index c13f40283..90d3504b4 100644 --- a/engine/filters.go +++ b/engine/filters.go @@ -475,7 +475,42 @@ func (fltr *FilterRule) passStringSuffix(dDP utils.DataProvider) (bool, error) { // ToDo when Timings will be available in DataDb func (fltr *FilterRule) passTimings(dDP utils.DataProvider) (bool, error) { - return false, utils.ErrNotImplemented + tmVal, err := fltr.rsrElement.ParseDataProviderWithInterfaces(dDP) + if err != nil { + if err == utils.ErrNotFound { + return false, nil + } + return false, err + } + + tmTime, err := utils.IfaceAsTime(tmVal, utils.EmptyString) + if err != nil { + return false, err + } + + for _, valTmIDVal := range fltr.rsrValues { + valTmID, err := valTmIDVal.ParseDataProvider(dDP) + if err != nil { + return false, err + } + var tm utils.TPTiming + if err = connMgr.Call(config.CgrConfig().FilterSCfg().ApierSConns, nil, utils.APIerSv1GetTiming, &utils.ArgsGetTimingID{ID: valTmID}, &tm); err != nil { + continue + } + ritm := &RITiming{ + ID: tm.ID, + Years: tm.Years, + Months: tm.Months, + MonthDays: tm.MonthDays, + WeekDays: tm.WeekDays, + StartTime: tm.StartTime, + EndTime: tm.EndTime, + } + if ritm.IsActiveAt(tmTime) { + return true, nil + } + } + return false, nil } func (fltr *FilterRule) passDestinations(dDP utils.DataProvider) (bool, error) {