コード例 #1
0
        public void CheckPossibilityToRemoveManufacturer(Producer producer, Manufacturer manufacturer, User user)
        {
            // права
            CheckPermissionToPerformOperation(producer, user, Permission.Producer_Edit);

            if (producer.Organization.HasManufacturer && producer.Organization.Manufacturer == manufacturer)
            {
                throw new Exception("Связь не может быть разорвана, так как производитель является данной фабрикой-изготовителем.");
            }

            var productionOrders = producerRepository.SubQuery <ProductionOrder>().Where(x => x.Producer.Id == producer.Id).Select(x => x.Id);

            var productionOrderBatchRowsCount = producerRepository.Query <ProductionOrderBatchRow>()
                                                .Where(x => x.Manufacturer.Id == manufacturer.Id)
                                                .Restriction <ProductionOrderBatch>(x => x.Batch)
                                                .Restriction <ProductionOrder>(x => x.ProductionOrder)
                                                .PropertyIn(x => x.Id, productionOrders).CountDistinct();

            if (productionOrderBatchRowsCount > 0)
            {
                throw new Exception("Связь не может быть разорвана, так как фабрика-изготовитель участвует в заказах этого производителя.");
            }
        }