Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        private bool NeedDeleteRubricPosition(RubricPosition rubricPosition, RubricData rubricData)
        {
            if (rubricPosition.RubricId != rubricData.Id ||
                rubricPosition.RubricVersion != rubricData.Version)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        private bool NeedCreateRubricPosition(IEnumerable <RubricPosition> rubricPositions, RubricData rubricData)
        {
            if (rubricPositions.Any(
                    rp =>
                    rp.RubricId == rubricData.Id &&
                    rp.RubricVersion == rubricData.Version))
            {
                return(false);
            }

            return(true);
        }