public void PossoUtilizarADataDoComentarioQuandoNaoInformadoNoComentarioDeTrabalho()
        {
            var comment = new CommentCardAction
            {
                Date = new DateTime(2015, 7, 8, 3, 0, 0),
                Data = new CommentCardAction.ActionData
                {
                    Text = "> trabalhado 1 hora"
                }
            };

            var date = _commentHelper.GetDateInComment(comment);
            Assert.AreEqual(new DateTime(2015, 7, 8), date);
        }
        public void PossoUtilizarADataComAHoraEMinutoAlteradosPorUmComentarioDePausaDeTrabalho()
        {
            var comment = new CommentCardAction
            {
                Date = new DateTime(2015, 7, 8, 16, 15, 0),
                Data = new CommentCardAction.ActionData
                {
                    Text = "> pausa em 13:30"
                }
            };

            var date = _commentHelper.GetDateInComment(comment);
            Assert.AreEqual(new DateTime(2015, 7, 8, 13, 30, 00), date);
        }
        public void PossoReconhecerUmaDataNumComentarioDeTrabalho()
        {
            var comment = new CommentCardAction
            {
                Data = new CommentCardAction.ActionData
                {
                    Text = "> trabalhado 1 hora em 07/07/2015\r\n\r\n- testando isto aqui"
                }
            };

            var date = _commentHelper.GetDateInComment(comment);

            Assert.AreEqual(new DateTime(2015, 7, 7, 0, 0, 0), date);
        }
        public DateTime GetDateInComment(CommentCardAction comment)
        {
            //TODO: não deve ter trabalhado, pausa ou início simultâneos no mesmo comentário
            const string strDatePattern = @"[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]";

            var strPatternWorked = $@">(.)*{strDatePattern}";
            var patternWorked = new Regex(strPatternWorked, RegexOptions.IgnoreCase);
            var matchWorked = patternWorked.Match(comment.Data.Text);

            if (matchWorked.Success)
            {
                var dateFormat = new CultureInfo("pt-BR", false).DateTimeFormat;
                var datePattern = new Regex(strDatePattern, RegexOptions.IgnoreCase);
                var dateMatch = datePattern.Match(matchWorked.Value);

                var dateInComment = Convert.ToDateTime(dateMatch.Value, dateFormat);
                return dateInComment;
            }

            return GetDateTimeChangedWhenTimeInformedInWork(comment) ?? comment.Date.ConvertUtcToFortalezaTimeZone();
        }
        private static DateTime? GetDateTimeChangedWhenTimeInformedInWork(CommentCardAction comment)
        {
            DateTime? dateChanged = null;
            const string strWorkPattern = @">(\s)*(pausa|para|inicia)";
            const string strHourPattern = @"[0-2]?[0-9]:[0-5]?[0-9]";

            var strStopedWork = $@"{strWorkPattern}(.)*{strHourPattern}";
            var stopWorkPattern = new Regex(strStopedWork);
            var matchStopWork = stopWorkPattern.Match(comment.Data.Text);

            if (matchStopWork.Success)
            {
                var dateFormat = new CultureInfo("pt-BR", false).DateTimeFormat;
                var hourPattern = new Regex(strHourPattern);
                var matchHourPattern = hourPattern.Match(matchStopWork.Value);
                var hourText = matchHourPattern.Value.Split(':').Aggregate((text, next) => text.PadLeft(2, '0') + ":" + next.PadLeft(2, '0'));
                var dateTime = comment.Date.ConvertUtcToFortalezaTimeZone();
                var strDateStopWork = $"{dateTime.Year}/{dateTime.Month}/{dateTime.Day} {hourText}:00";

                dateChanged = Convert.ToDateTime(strDateStopWork, dateFormat);
            }
            return dateChanged;
        }
示例#6
0
 private bool HasFailureComment(CommentCardAction comment)
 {
     return comment.Data.Text.Contains("[mite failed: ");
 }