//string timeZoneId, bool isReadCalculatedValues, // DateTime dtServerStart, DateTime dtServerEnd, EnumDataSourceType? dataSourceType, public FormulaInterpreterDB(FORMULAS_EXPRESSIONS fExpr, IDBInterfaceAdapter nameInterface , InterpretatorParams interpretatorParams , IMyListConverters myListConverters, IGetNotWorkedPeriodService IGetNotWorkedPeriodService, IDateTimeExtensions dateTimeExtensions) { _fExpr = fExpr; InterpretatorParams = interpretatorParams; //this.SubFormulas = new System.Collections.Hashtable(); _recursionCallStack = new HashSet <string>(); _variablesDict = new Dictionary <string, Variable>(); //_variablesDict.Add("myVar", new Variable("myVar", 0, 1440, new TFormulaConstant() { ArchiveValues = new List<TVALUES_DB>() { new TVALUES_DB(VALUES_FLAG_DB.DataCorrect, 20010) } }, "1666")); _nameInterface = nameInterface; _dateTimeExtensions = dateTimeExtensions; _formulaArchivesPrecalculator = new FormulaArchivesPrecalculator(interpretatorParams.TimeZoneId , interpretatorParams.IsReadCalculatedValues, interpretatorParams.ServerStartDateTime, interpretatorParams.ServerEndDateTime , interpretatorParams.DataSourceType, myListConverters, IGetNotWorkedPeriodService, _dateTimeExtensions); }
public FormulaArchivesPrecalculator(string timeZoneId, bool isReadCalculatedValues, DateTime dtServerStart, DateTime dtServerEnd, EnumDataSourceType?dataSourceType, IMyListConverters myListConverters, IGetNotWorkedPeriodService IGetNotWorkedPeriodService, IDateTimeExtensions DateTimeExtensions) { _timeZoneId = timeZoneId; _isReadCalculatedValues = isReadCalculatedValues; _dataSourceType = dataSourceType; _myListConverters = myListConverters; this._getNotWorkedPeriodService = IGetNotWorkedPeriodService; _dateTimeExtensions = DateTimeExtensions; _isRequestArchives = dtServerStart != default(DateTime); if (_isRequestArchives) { _dtServerStart = RoundToHalfHour(dtServerStart, true); _dtServerEnd = RoundToHalfHour(dtServerEnd, true); _dtClientStart = _dtServerStart.ServerToClient(_timeZoneId); _dtClientEnd = _dtServerEnd.ServerToClient(_timeZoneId); } Errors = new StringBuilder(); _precalculateArchives = new List <TArchiveHierObjectPeriod>(); _precalculateWorkedPeriod = new List <IWorkedPeriodHierObject>(); }
public FormulaWorkedPeriodHierObject(int tiId, DateTime dtStart, DateTime dtEnd, enumTimeDiscreteType discreteType, string timeZoneId, IMyListConverters MyListConverters, IDateTimeExtensions dateTimeExtensions, IGetNotWorkedPeriodService _iGetNotWorkedPeriodService) { TiId = tiId; DiscreteType = discreteType; //Здесь запрашиваем и считаем количество отработанных часов var workedPeriods = _iGetNotWorkedPeriodService.GetNotWorkedPeriods(new List <int> { tiId }, dateTimeExtensions.ClientToServer(dtStart, timeZoneId), dateTimeExtensions.ClientToServer(dtEnd, timeZoneId)); HoursByHalfhourNumber = new Dictionary <DateTime, double>(); //Считаем отработанные часы if (discreteType == enumTimeDiscreteType.DBInterval) { HoursByHalfhourNumber.Add(dtStart, CalculateNumberWorkedHours(dtStart, dtEnd, workedPeriods, timeZoneId, MyListConverters)); } else { var dts = MyListConverters.GetDateTimeListForPeriod(dtStart, dtEnd, discreteType, timeZoneId.GeTimeZoneInfoById()); for (var i = 0; i < dts.Count; i++) { var dt = dts[i]; var dte = i < dts.Count - 1 ? dts[i + 1].AddMinutes(-30) : dtEnd; HoursByHalfhourNumber.Add(dt, CalculateNumberWorkedHours(dt, dte, workedPeriods, timeZoneId, MyListConverters)); } } }