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; }
private bool HasFailureComment(CommentCardAction comment) { return comment.Data.Text.Contains("[mite failed: "); }