public void AddRow(TRow row) { if (!Rows.Any(r => r.Equals(row))) { Rows.Add(row); } }
public TabularParameterDetails(IEnumerable <ITabularParameterColumn> columns, IEnumerable <ITabularParameterRow> rows, Exception tableException = null) { Columns = columns.ToArray(); Rows = rows.ToArray(); VerificationStatus = Rows.Any() ? Rows.Max(x => x.VerificationStatus) : ParameterVerificationStatus.NotApplicable; VerificationMessage = CollectMessages(tableException); }
public virtual void CheckPossibilityToCancelAcceptance() { ValidationUtils.Assert(!IsNew, "Накладная еще не проведена."); ValidationUtils.Assert(!IsShipped, "Накладная уже отгружена."); ValidationUtils.Assert(!Rows.Any(x => x.AreOutgoingWaybills), "Невозможно отменить проводку накладной, т.к. ее позиции участвуют в дальнейшем товародвижении."); }
public List <List <string> > InitializeColumns() { var _columns = new List <List <string> >(); if (!Rows.Any()) { return(_columns); } for (int i = 0; i < Rows.Count; i++) { for (int j = 0; j < Rows[i].Count; j++) { var column = new List <string>(); if (i != 0) { column = _columns.ElementAt(j); } column.Add(Rows[i][j]); if (i == 0) { _columns.Add(column); } } } return(_columns); }
/// <summary> /// Normalize a saw tooth like series due to overflows or resets /// </summary> /// <typeparam name="T"></typeparam> /// <param name="resetValue">let it null to take the first value after the overflow, otherwise set the value explicitly</param> /// <returns></returns> public IQuerySerie <T> NormalizeOverflows(double?resetValue = null) { if (Rows.Any()) { var newRows = new List <ISingleDataRow <T> >(Rows.Count); double offset = 0; double previousValue = Rows.First().Value.ToDouble(); foreach (var row in Rows) { double rowValue = row.Value.ToDouble(); if (previousValue > rowValue) { if (resetValue != null) { offset += previousValue - (rowValue - resetValue.Value); } else { offset += previousValue; } } newRows.Add(new SingleDataRow <T>(row.TimeUtc, (rowValue + offset).ToType <T>())); previousValue = rowValue; } return(new QuerySerie <T>(newRows, this)); } return(this); }
private void OneToGui(KomBankE komBank, string response) { if (string.IsNullOrEmpty(response)) { var lastLine = Rows.LastOrDefault(r => r.Bank == komBank.GetAbbreviation()); lastLine?.SetIfExpired(); return; } var oneLine = JsonConvert.DeserializeObject <KomBankRatesLine>(response); var newLine = Mapper.Map <KomBankRateVm>(oneLine); var last = Rows.FirstOrDefault(r => r.Id == newLine.Id); if (last == null) { newLine.State = "Fresh"; if (Rows.Any()) { Rows.Last().State = ""; } Rows.Add(newLine); } else { last.SetIfExpired(); last.LastCheck = newLine.LastCheck; } }
public ExcelRowDiff CreateRow() { var row = new ExcelRowDiff(Rows.Any() ? Rows.Keys.Last() + 1 : 0); Rows.Add(row.Index, row); return(row); }
public T?Min() { if (!Rows.Any()) { return(null); } return(Rows.Select(i => i.Value).Min()); }
/// <summary> /// Mean of all measurement points without looking to timestamps /// </summary> /// <returns></returns> public T?Mean() { if (!Rows.Any()) { return(null); } return(Rows.Select(i => i.Value.ToDouble()).Mean().ToType <T>()); }
public IQuerySerie <T> WhereValue(Func <T, bool> predicate) { if (Rows.Any()) { return(new QuerySerie <T>(Rows.Where(i => predicate(i.Value)).ToList(), this)); } return(this); }
public IQuerySerie <T> Where(Func <ISingleDataRow <T>, bool> predicate) { if (Rows.Any()) { return(new QuerySerie <T>(Rows.Where(predicate).ToList(), this)); } return(this); }
public IQuerySerie <T> IncludeLastRow() { if (Rows.Any()) { LastRow = Rows.Last(); } return(this); }
/// <summary> /// Проверка возможности отмены проводки /// </summary> public virtual void CheckPossibilityToCancelAcceptance() { ValidationUtils.Assert(IsAccepted && !IsReceipted, String.Format("Невозможно отменить проводку накладной со статусом «{0}».", State.GetDisplayName())); // Отменить проводку можно, только если ни по одной из позиций накладной не было сформировано других документов // со статусом "Проведено", "Отгружено" или "Принято". ValidationUtils.Assert(!Rows.Any(x => x.AreOutgoingWaybills), "Невозможно отменить проводку накладной, т.к. ее позиции участвуют в дальнейшем товародвижении."); }
public virtual void MergeWith(DataElement mergedElement) { int initialColumnsCount = Columns.Count; int initialRowsCount = Rows.Count; for (int rowInd = 0; rowInd < mergedElement.Rows.Count; rowInd++) { if (string.IsNullOrEmpty(mergedElement.Rows[rowInd].Header) || !Rows.Any(r => r.Header.Equals(mergedElement.Rows[rowInd].Header, StringComparison.OrdinalIgnoreCase))) { Row newRow = mergedElement.Rows[rowInd].Clone(); newRow.Data.InsertRange(0, Enumerable.Repeat <object>(null, initialColumnsCount)); Rows.Add(newRow); } } for (int colInd = 0; colInd < mergedElement.Columns.Count; colInd++) { if (string.IsNullOrEmpty(mergedElement.Columns[colInd].Header) || !Columns.Any(r => r.Header.Equals(mergedElement.Columns[colInd].Header, StringComparison.OrdinalIgnoreCase))) { Column newColumn = mergedElement.Columns[colInd].Clone(false); Columns.Add(newColumn); foreach (Row row in Rows) { row.Data.Add(null); } } } for (int rowInd = 0; rowInd < mergedElement.Rows.Count; rowInd++) { Row row = Rows.FirstOrDefault(r => !string.IsNullOrEmpty(r.Header) && r.Header.Equals(mergedElement.Rows[rowInd].Header, StringComparison.OrdinalIgnoreCase)); if (row == null) { row = Rows[initialRowsCount + rowInd]; } for (int colInd = 0; colInd < mergedElement.Columns.Count; colInd++) { if (mergedElement.Rows[rowInd].Data[colInd] != null) { int dataIndex = initialColumnsCount + colInd; Column column = Columns.FirstOrDefault(r => !string.IsNullOrEmpty(r.Header) && r.Header.Equals(mergedElement.Columns[colInd].Header, StringComparison.OrdinalIgnoreCase)); if (column != null) { dataIndex = Columns.IndexOf(column); } if (row.Data[dataIndex] == null) { row.Data[dataIndex] = mergedElement.Rows[rowInd].Data[colInd]; } } } } foreach (var item in Columns) { item.Data.Clear(); } Normalize(); }
public void Write([NotNull] ILog logger) { if (logger == null) { throw new ArgumentNullException(nameof(logger)); } // find the longest column by searching each row var columnLengths = ColumnLengths(); // create the string format with padding var format = Enumerable.Range(0, Columns.Count) .Select(i => "| {" + i + ",-" + columnLengths[i] + "} ") .Aggregate((s, a) => s + a) + " |"; // remove last pipe (|) format = format.Substring(0, format.Length - 1); // find the longest formatted line var maxRowLength = Math.Max(0, Rows.Any() ? Rows.Max(row => string.Format(format, row).Length) : 0); var columnHeaders = string.Format(format, Columns.ToArray()); // longest line is greater of formatted columnHeader and longest row var longestLine = Math.Min(Program.TerminalBufferWidth, Math.Max(maxRowLength, columnHeaders.Length)); // add each row var results = Rows.Select(row => string.Format(format, row)).ToList(); // create the divider var divider = $"{string.Join(string.Empty, Enumerable.Repeat("-", longestLine))} "; if (Header != null) { var dividerHeader = string.Join(string.Empty, Enumerable.Repeat("=", longestLine)); foreach (var line in Header.Split("\n")) { logger.Info(line); } logger.Info(dividerHeader); } logger.Info(columnHeaders); foreach (var row in results) { logger.Info(divider); logger.Info(row); } if (!Options.EnableCount) { return; } logger.Info(string.Empty); logger.Info(" Count: {0}", Rows.Count); }
public virtual void CheckPossibilityToCancelApprovement() { ValidationUtils.Assert(IsApproved, "Невозможно отменить согласование несогласованной накладной."); // Отменить окончательное согласование можно, только если ни по одной из позиций накладной не было сформировано других документов // со статусом "Отгружено" или "Принято". ValidationUtils.Assert(!Rows.Any(x => x.ShippedCount + x.FinallyMovedCount > 0), "Невозможно отменить согласование накладной, так как товар из нее используется в других документах."); }
/// <summary> /// Mean of all measurement points with taking the time into account /// </summary> /// <returns></returns> private T?MeanByTime(bool includePreviousAndNext) { var notAnyRows = !Rows.Any(); if (notAnyRows && (!includePreviousAndNext || (PreviousRow == null && NextRow == null))) { return(null); } if (notAnyRows) { return(PreviousRow?.Value ?? NextRow.Value); } double valueSum = 0; var rows = Rows; DateTime start = DateTime.MinValue; DateTime stop = rows.Last().TimeUtc; DateTime?currentTimeStamp = null; double currentValue = 0; if (PreviousRow != null && StartTime != null) { start = StartTime.Value; currentValue = PreviousRow.Value.ToDouble(); currentTimeStamp = start; } for (int i = 0; i < rows.Count; i++) { var newRow = rows[i]; if (currentTimeStamp != null) { valueSum += (newRow.TimeUtc - currentTimeStamp.Value).Ticks * currentValue; } else { start = newRow.TimeUtc; } currentValue = newRow.Value.ToDouble(); currentTimeStamp = newRow.TimeUtc; } if (NextRow != null && EndTime != null) { stop = EndTime.Value; if (currentTimeStamp != null) { valueSum += (stop - currentTimeStamp.Value).Ticks * currentValue; } } double result = valueSum / (stop - start).Ticks; return(result.ToType <T>()); }
public override string ToString() { var builder = new StringBuilder(); // find the longest column by searching each row var columnLengths = ColumnLengths(); // create the string format with padding var format = Enumerable.Range(0, Columns.Count) .Select(i => " | {" + i + ",-" + columnLengths[i] + "}") .Aggregate((s, a) => s + a) + " |"; string f(object[] obj) { return(Enumerable.Range(0, Columns.Count) .Select(i => { var floating = obj[i].ToString().Where(FloatingCharacter.Glyph.IgnoreCharacters.Contains).Count(); var k = " | {" + i + ",-" + (columnLengths[i] + floating) + "}"; return k; }) .Aggregate((s, a) => s + a) + " |"); } // find the longest formatted line var maxRowLength = Math.Max(0, Rows.Any() ? Rows.Max(row => string.Format(format, row).Length) : 0); var columnHeaders = string.Format(format, Columns.ToArray()); // longest line is greater of formatted columnHeader and longest row var longestLine = Math.Max(maxRowLength, columnHeaders.Length); // add each row //var results = Rows.Select((row, i) => string.Format(format, row)).ToList(); var results = Rows.Select((row, i) => string.Format(f(row), row)).ToList(); // create the divider var divider = " " + string.Join("", Enumerable.Repeat("-", longestLine - 1)) + " "; builder.AppendLine(divider); builder.AppendLine(columnHeaders); foreach (var row in results) { builder.AppendLine(divider); builder.AppendLine(row); } builder.AppendLine(divider); if (Options.EnableCount) { builder.AppendLine(""); builder.AppendFormat(" Count: {0}", Rows.Count); } return(builder.ToString()); }
public T?Difference() { if (!Rows.Any()) { return(null); } return ((Rows.Last().Value.ToDouble() - (PreviousRow?.Value.ToDouble() ?? Rows.First().Value.ToDouble())) .ToType <T>()); }
void calc() { if (Rows.Any()) { for (int i = 0; i < Rows.First().Count; i++) { dict[i] = Rows.Max(r => r[i].MyLength()); } } }
/// <summary> /// Добавление позиции в накладную /// </summary> public virtual void AddRow(ReturnFromClientWaybillRow row) { ValidationUtils.Assert(IsDraft, String.Format("Невозможно добавить позицию в накладную со статусом «{0}».", State.GetDisplayName())); ValidationUtils.NotNull(row.SaleWaybillRow.SaleWaybill, "Невозможно добавить позицию со ссылкой на позицию накладной реализации без указанной реализации."); ValidationUtils.Assert(row.SaleWaybillRow.SaleWaybill.Sender == Recipient, "Организация-приемщик и организация-продавец товара должны совпадать."); ValidationUtils.Assert(!Rows.Any(x => x.SaleWaybillRow.Id == row.SaleWaybillRow.Id), "Позиция накладной по данной позиции накладной реализации уже добавлена."); ValidationUtils.Assert(row.SaleWaybillRow.SaleWaybill.Team == Team, "Команда накладной возврата должна совпадать с командой накладной реализации."); rows.Add(row); row.ReturnFromClientWaybill = this; }
/// <summary> /// Добавление позиции в накладную /// </summary> public virtual void AddRow(WriteoffWaybillRow row) { ValidationUtils.Assert(IsDraft, String.Format("Невозможно добавить позицию в накладную со статусом «{0}».", State.GetDisplayName())); if (Rows.Any(x => x.ReceiptWaybillRow == row.ReceiptWaybillRow)) { throw new Exception("Позиция накладной по данной партии и товару уже добавлена."); } rows.Add(row); row.WriteoffWaybill = this; }
/// <summary> /// Есть ли возможность отменить проведение прихода /// </summary> /// <param name="checkIfCreatedFromProductionOrderBatch">true - операция запрещается, если приход создан по партии заказа</param> public virtual void CheckPossibilityToCancelAcceptance(bool checkIfCreatedFromProductionOrderBatch) { ValidationUtils.Assert(!IsReceipted, "Невозможно отменить проводку принятой накладной."); ValidationUtils.Assert(IsAccepted, "Невозможно отменить проводку непроведенной накладной."); ValidationUtils.Assert(!Rows.Any(x => x.AreOutgoingWaybills), "Невозможно отменить проводку накладной, т.к. ее позиции участвуют в дальнейшем товародвижении."); if (checkIfCreatedFromProductionOrderBatch) { ValidationUtils.Assert(!IsCreatedFromProductionOrderBatch, "Невозможно отменить проводку накладной, созданной по партии заказа, возможна только автоматическая отмена при удалении прихода из деталей партии заказа."); } }
/// <summary> /// Добавление позиции в накладную /// </summary> public virtual void AddRow(MovementWaybillRow row) { ValidationUtils.Assert(!IsAccepted, String.Format("Невозможно добавить позицию в накладную со статусом «{0}».", State.GetDisplayName())); ValidationUtils.Assert(!Rows.Any(x => x.ReceiptWaybillRow.Id == row.ReceiptWaybillRow.Id), "Позиция накладной по данной партии и товару уже добавлена."); ValidationUtils.Assert(row.ValueAddedTax.Value == 0M || Sender != Recipient, "Организации-отправитель и получатель совпадают. Невозможно установить ненулевой НДС для позиции."); rows.Add(row); row.MovementWaybill = this; }
public bool HasWon() { if (won) { return(won); } won = Rows.Any(row => row.All(c => c.HasBeenCalled)) || Columns.Any(column => column.All(c => c.HasBeenCalled)); return(won); }
public void WaitUntilRowAppear(Func <TrRow, bool> condition) { try { Wait.WaitUntil((d) => { Refresh(); return(Rows.Any(condition)); }); } catch (WebDriverTimeoutException) { } }
public override string ToString() { var builder = new StringBuilder(); // find the longest column by searching each row var columnLengths = ColumnLengths(); // set right alinment if is a number var columnAlignment = Enumerable.Range(0, Columns.Count) .Select(GetNumberAlignment) .ToList(); // create the string format with padding var format = Enumerable.Range(0, Columns.Count) .Select(i => " | {" + i + "," + columnAlignment[i] + columnLengths[i] + "}") .Aggregate((s, a) => s + a) + " |"; // find the longest formatted line var maxRowLength = Math.Max(0, Rows.Any() ? Rows.Max(row => string.Format(format, row).Length) : 0); var columnHeaders = string.Format(format, Columns.ToArray()); // longest line is greater of formatted columnHeader and longest row var longestLine = Math.Max(maxRowLength, columnHeaders.Length); // add each row var results = Rows.Select(row => string.Format(format, row)).ToList(); // create the divider var divider = " " + string.Join("", Enumerable.Repeat("-", longestLine - 1)) + " "; builder.AppendLine(divider); if (Options.ShowHeader) { builder.AppendLine(columnHeaders); } foreach (var row in results) { builder.AppendLine(divider); builder.AppendLine(row); } builder.AppendLine(divider); if (Options.EnableCount) { builder.AppendLine(""); builder.AppendFormat(" Count: {0}", Rows.Count); } return(builder.ToString()); }
public void CreateUser(string username, string passwordHash) { RFStatic.Log.Debug(this, "CreateUser {0}", username); username = username.Trim().ToLower(); if (HasUser(username)) { throw new RFSystemException(this, "User {0} already present in key vault."); } var firstUserEver = !Rows.Any(r => r.Key.KeyID == LOGIN_KEY_ID); ResetLogin(username, passwordHash); }
public virtual void CheckPossibilityToCancelReceipt() { if (!IsReceipted) { throw new Exception(String.Format("Отменить приемку можно только для накладной со статусами «{0}», «{1}» или «{2}».", MovementWaybillState.ReceiptedWithoutDivergences.GetDisplayName(), MovementWaybillState.ReceiptedWithDivergences.GetDisplayName(), MovementWaybillState.ReceiptedAfterDivergences.GetDisplayName())); } if (Rows.Any(x => x.ShippedCount + x.FinallyMovedCount > 0)) { throw new Exception("Невозможно отменить приемку, так как товар по накладной уже был отгружен."); } }
public T?Derivative(TimeSpan timeSpan) { if (!Rows.Any()) { return(null); } var firstValue = PreviousRow ?? Rows.First(); var lastValue = Rows.Last(); var diffTime = lastValue.TimeUtc - firstValue.TimeUtc; double diffValue = lastValue.Value.ToDouble() - firstValue.Value.ToDouble(); var result = diffValue * timeSpan.Ticks / diffTime.Ticks; return(result.ToType <T>()); }