protected override IEnumerable <RouteBlock> ReadComponents(ComponentModel model, string componentFolderPath) { var entity = PackageHandlerUtils.CreateEntity <RouteBlock>(model); var stateReq = model.Card.Requisites .FirstOrDefault(r => r.Code == StateReqName); if (stateReq != null) { entity.State = stateReq.ValueLocalizeID == Active ? ComponentState.Active : ComponentState.Closed; } var baseBlockTypeReq = model.Card.Requisites .FirstOrDefault(r => r.Code == BaseBlockTypeReqName); if (baseBlockTypeReq != null) { entity.BaseBlockType = RouteBlockUtils.GetBaseBlockType(baseBlockTypeReq.ValueLocalizeID); } else { entity.BaseBlockType = RouteBlockType.Unknown; } var blockPropertiesFile = Path.Combine(componentFolderPath, "Properties.xml"); if (File.Exists(blockPropertiesFile)) { var blockProperties = File.ReadAllText(blockPropertiesFile, Encoding.GetEncoding(1251)); var description = WorkflowDescriptionParser.Parse(blockProperties); entity.WorkflowBlock = description.Blocks.FirstOrDefault(); if (entity.WorkflowBlock != null) { ReadActions(entity.WorkflowBlock, componentFolderPath); ReadEvents(entity.WorkflowBlock, componentFolderPath); ReadProperties(entity.WorkflowBlock, componentFolderPath); } else { log.Warn($"Cannot read properties for block {entity.Name}"); } } else { log.Warn($"File not found {blockPropertiesFile}"); } yield return(entity); }
public IEnumerable <RouteBlock> Read(ComponentsModel packageModel) { foreach (var model in packageModel.RouteBlocks) { var entity = PackageHandlerUtils.CreateEntity <RouteBlock>(model); var stateReq = model.Card.Requisites .FirstOrDefault(r => r.Code == StateReqName); if (stateReq != null) { entity.State = stateReq.ValueLocalizeID == Active ? ComponentState.Active : ComponentState.Closed; } var baseBlockTypeReq = model.Card.Requisites .FirstOrDefault(r => r.Code == BaseBlockTypeReqName); if (baseBlockTypeReq != null) { entity.BaseBlockType = RouteBlockUtils.GetBaseBlockType(baseBlockTypeReq.ValueLocalizeID); } else { entity.BaseBlockType = RouteBlockType.Unknown; } var blockPropertiesReq = model.Card.Requisites .FirstOrDefault(r => r.Code == BlockPropertiesReqName); if (blockPropertiesReq != null) { var blockProperties = blockPropertiesReq.DecodedText; if (!string.IsNullOrWhiteSpace(blockProperties)) { var description = WorkflowDescriptionParser.Parse(blockProperties); entity.WorkflowBlock = description.Blocks.FirstOrDefault(); } } yield return(entity); } }