public RubricPosition CreateRubricPosition(int orderPositionId, RubricData rubricData, DbTransaction dbTran) { var rubricPosition = _rubricPositionFactory.Create(orderPositionId, rubricData.Id, rubricData.Version); rubricPosition = _repository.SetRubricPosition(rubricPosition, isActual: true, dbTran); return(rubricPosition); }
private bool NeedDeleteRubricPosition(RubricPosition rubricPosition, RubricData rubricData) { if (rubricPosition.RubricId != rubricData.Id || rubricPosition.RubricVersion != rubricData.Version) { return(true); } return(false); }
public void UpdateRubricPosition(int orderPositionId, IEnumerable <RubricPosition> rubricPositions, RubricData rubricData, DbTransaction dbTran) { var rubricPositionsList = rubricPositions.ToList(); // Удаляем все позиции рубрик, у которых не совпадает RubricId и RubricVersion for (int i = rubricPositionsList.Count - 1; i >= 0; i--) { if (rubricData == null || NeedDeleteRubricPosition(rubricPositionsList[i], rubricData)) { DeleteRubricPosition(rubricPositionsList[i], dbTran); } } // Если позиция рубрики с RubricId и RubricVersion существует - выходим if (!NeedCreateRubricPosition(rubricPositions, rubricData)) { return; } // Иначе создаём новую позицию рубрики CreateRubricPosition(orderPositionId, rubricData, dbTran); }
private bool NeedCreateRubricPosition(IEnumerable <RubricPosition> rubricPositions, RubricData rubricData) { if (rubricPositions.Any( rp => rp.RubricId == rubricData.Id && rp.RubricVersion == rubricData.Version)) { return(false); } return(true); }