private Response onWhereCoworker(WhereCoworkerDTO userQuery)
        {
            Console.WriteLine(userQuery.ToJson(true));

            var tp = new TimePeriodDTO()
            {
                StartTime = DateTimeOffset.Now.Date.Add(TimeSpan.Zero),
                EndTime   = DateTimeOffset.Now.Date.Add(new TimeSpan(23, 59, 59))
            };

            Console.WriteLine("Default: " + tp.StartTime.ToString() + " " + tp.EndTime.ToString());

            // if user hasn't entered any data and time -> set to current date and time
            if (userQuery.TimePeriod == null &&
                (!userQuery.Date.HasValue) &&
                userQuery.DateTimeObject == null &&
                (!userQuery.Time.HasValue))
            {
                userQuery.DateTimeObject = new DateTimeWraper(DateTimeOffset.UtcNow);
            }

            // recognize any possible time and data
            tp = RecognizeDate(userQuery.Date, oldTp: tp);
            tp = RecognizeTime(userQuery, oldTp: tp);
            tp = RecognizeDateTime(userQuery, oldTp: tp);

            // create params for Event Server request
            var whereHolderRequest = new HolderLocationPeriodDTO()
            {
                QueryType        = ((DateTime.UtcNow - tp.StartTime)?.TotalMinutes < 15) ? QueryType.Type.WhereNow : QueryType.Type.Where,
                HolderName       = userQuery.TargetName.Trim().Replace("?", ""),
                HolderMiddlename = userQuery.TargetMiddlename.Trim().Replace("?", ""),
                HolderSurname    = userQuery.TargetLastname.Trim().Replace("?", ""),
                TimePeriod       = ((DateTime.UtcNow - tp.StartTime)?.TotalMinutes < 15)
                                        ? new TimePeriodDTO()
                {
                    StartTime = DateTimeOffset.Now.Date.Add(TimeSpan.Zero), EndTime = DateTimeOffset.Now.Date.Add(new TimeSpan(23, 59, 59))
                }
                                        : tp
            };

            Console.WriteLine(whereHolderRequest.ToJson(true));

            foreach (var eventsListener in GlobalScope.CSEventsListeners)
            {
                eventsListener.PostCommand(new RequestHolderLocation(whereHolderRequest));
            }

            // send response to Dialogflow (Dialogflow automatically resend it to Slack, Telegram, Skype, etc.)
            //return new ResponseWebHookIntent() {
            //	FulfillmentText = $"*Буду искать:* '{whereHolderRequest.HolderName} {whereHolderRequest.HolderMiddlename} {whereHolderRequest.HolderSurname}'\n" +
            //				      $"*c :* {whereHolderRequest.TimePeriod.StartTime.ToString()}\n" +
            //					  $"*по:* {whereHolderRequest.TimePeriod.EndTime.ToString()}"
            //}.ToJson();
            return(200);
        }
        private Response onWhenCoworker(WhenCoworkerDTO userQuery)
        {
            //Console.WriteLine(userQuery.ToJson(true));

            var tp = new TimePeriodDTO()
            {
                StartTime = DateTimeOffset.UtcNow.Date.Add(TimeSpan.Zero),
                EndTime   = DateTimeOffset.UtcNow.Date.Add(new TimeSpan(23, 59, 59))
            };

            // if user hasn't entered any data and time -> set to current date and time
            if (!userQuery.Date.HasValue)
            {
                userQuery.Date = DateTimeOffset.UtcNow;
            }

            // recognize any possible time and data
            tp = RecognizeDate(date: userQuery.Date, oldTp: tp);

            // create params for Event Server request
            var holderRequest = new HolderLocationPeriodDTO()
            {
                QueryType        = QueryType.GetType(userQuery.QueryType),
                HolderName       = userQuery.TargetName.Trim().Replace("?", ""),
                HolderMiddlename = userQuery.TargetMiddlename.Trim().Replace("?", ""),
                HolderSurname    = userQuery.TargetLastname.Trim().Replace("?", ""),
                TimePeriod       = tp,
                IsHolderIn       = userQuery.InOrOut == null ? new bool?() :
                                   userQuery.InOrOut.Trim().Equals("пришла", StringComparison.OrdinalIgnoreCase) ? true : false
            };

            Console.WriteLine(holderRequest.ToJson(true));

            foreach (var eventsListener in GlobalScope.CSEventsListeners)
            {
                eventsListener.PostCommand(new RequestHolderLocation(holderRequest));
            }

            return(200);
        }