public void DeletePositionIm(PositionIm positionIm, DbTransaction dbTran) { if (positionIm == null) { return; } _stringProcessor.DeleteFullString(positionIm.OrderPositionId, dbTran); _moduleProcessor.DeleteModule(positionIm.OrderPositionId, dbTran); _moduleMaketProcessor.DeleteModuleGraphics(positionIm.OrderPositionId); _repository.SetPositionIm(positionIm, newTaskFile: false, newMaketFile: false, isActual: false, dbTran); _context.Entry(positionIm).Reload(); var orderIm = _orderImProcessor.GetOrderIm(positionIm.OrderId, positionIm.PositionImType.OrderImTypeId); if (_orderImProcessor.NeedDeleteOrderIm(orderIm)) { _orderImProcessor.DeleteOrderIm(orderIm, dbTran); } else { _orderImProcessor.UpdateOrderIm(orderIm, dbTran); } }
private Order CreateClientOrder(Order basketOrder, IEnumerable <OrderPosition> orderPositions, DbTransaction dbTran) { // Создаём клиентский заказ var order = _orderProcessor.CreateClientOrder(basketOrder, orderPositions, dbTran); // Привязываем к новому заказу позиции из корзины var orderPositionsWithChildren = orderPositions .Union( orderPositions.SelectMany(op => op.ChildOrderPositions)); foreach (var orderPosition in orderPositionsWithChildren) { _orderPositionProcessor.UpdateOrderPosition(orderPosition, order.Id, dbTran); } // Привязываем к новому заказу позиции ИМ-ов var positionIms = orderPositionsWithChildren .Where(op => op.PositionIm != null) .Select(op => op.PositionIm); foreach (var positionIm in positionIms) { // Меняем заказ и статус позиции ИМ-а на "Вёрстка" _positionImProcessor.UpdatePositionIm(positionIm, order.Id, maketStatusId: 3, dbTran); } var orderImTypeIds = positionIms .GroupBy(pims => pims.PositionImType.OrderImType.Id) .Select(g => g.Key) .ToList(); foreach (var orderImTypeId in orderImTypeIds) { // Создаём ИМ нового заказа var orderIm = _orderImProcessor.CreateOrderIm(order.Id, orderImTypeId, _orderImProcessor.ProcessOrderImStatus, dbTran); // Если ИМ заказа корзины больше не нужен - удаляем его var basketOrderIm = _orderImProcessor.GetOrderIm(basketOrder.Id, orderImTypeId); if (_orderImProcessor.NeedDeleteOrderIm(basketOrderIm)) { _orderImProcessor.DeleteOrderIm(basketOrderIm, dbTran); } } // Обновляем заказ-корзину _orderProcessor.UpdateOrder(basketOrder.Id, dbTran); return(order); }