/// <summary>
        /// Получение строки для сохранения в зависимости от того, кто
        /// владеет параметром. Сам юнит или это параметр агрегата.
        /// </summary>
        /// <param name="prefix">Отступ</param>
        /// <returns></returns>
        private string GetNumberParameterStringForSave(string prefix)
        {
            BaseTechObject baseTechObject     = null;
            Mode           mainMode           = null;
            var            modes              = new List <Mode>();
            string         mainObjDisplayName = "";

            if (Owner is BaseTechObject aggregateBaseTechObject)
            {
                baseTechObject = aggregateBaseTechObject;
                modes          = baseTechObject.Owner.ModesManager.Modes;

                var baseOperation = Parent as BaseOperation;
                mainMode = baseOperation.Owner;
            }
            else if (Owner is BaseOperation baseOperation)
            {
                baseTechObject = baseOperation.Owner.Owner.Owner.BaseTechObject;
                mainMode       = baseOperation.Owner;
                modes          = mainMode.Owner.Modes;
            }

            mainObjDisplayName = $"{baseTechObject.Owner.DisplayText[0]}";

            Mode modeInParameter = modes
                                   .Where(x => x.GetModeNumber().ToString() == Value)
                                   .FirstOrDefault();
            var res = string.Empty;

            if (modeInParameter != null)
            {
                if (modeInParameter.BaseOperation.Name != string.Empty)
                {
                    string operationLuaName = modeInParameter.BaseOperation
                                              .LuaName.ToUpper();
                    TechObject obj        = baseTechObject.Owner;
                    string     objVarName =
                        $"prg.{obj.NameEplanForFile.ToLower()}" +
                        $"{obj.TechNumber}";
                    res = $"{prefix}{LuaName} = " +
                          $"{objVarName}.operations.{operationLuaName}";
                }
                else
                {
                    string message = $"Ошибка обработки параметра " +
                                     $"\"{Name}\"." +
                                     $" Не задана базовая операция в операции" +
                                     $" \"{modeInParameter.DisplayText[0]}\", объекта " +
                                     $"\"{mainObjDisplayName}\".\n";
                    Logs.AddMessage(message);
                }
            }
            else
            {
                string message = $"Ошибка обработки параметра " +
                                 $"\"{Name}\"." +
                                 $" Указан несуществующий номер операции в операции " +
                                 $"\"{mainMode.DisplayText[0]}\" объекта " +
                                 $"\"{mainObjDisplayName}\".\n";
                Logs.AddMessage(message);
            }

            return(res);
        }
Esempio n. 2
0
        /// <summary>
        /// Получение строки для сохранения в зависимости от того, кто
        /// владеет параметром. Сам юнит или это параметр агрегата.
        /// </summary>
        /// <param name="parameter">Параметр для обработки</param>
        /// <param name="prefix">Отступ</param>
        /// <param name="mainObjMode">Проверяемая операция главного объекта
        /// </param>
        /// <returns></returns>
        public string GetNumberParameterStringForSave(string prefix,
                                                      BaseParameter parameter, Mode mainObjMode)
        {
            BaseTechObject baseTechObject = null;
            List <Mode>    modes          = new List <Mode>();
            string         mainObjName    = "";

            if (parameter.Owner is BaseTechObject)
            {
                baseTechObject = parameter.Owner as BaseTechObject;
                mainObjName    = $"{baseTechObject.Owner.DisplayText[0]}";
                modes          = baseTechObject.Owner.ModesManager.Modes;
            }

            if (parameter.Owner is BaseOperation)
            {
                var operation = parameter.Owner as BaseOperation;
                baseTechObject = operation.Owner.Owner.Owner.BaseTechObject;
                mainObjName    = $"{baseTechObject.Owner.DisplayText[0]}";
                modes          = operation.Owner.Owner.Modes;
            }

            string parameterValue = parameter.Value;
            var    mode           = modes
                                    .Where(x => x.GetModeNumber().ToString() == parameterValue)
                                    .FirstOrDefault();
            var res = "";

            if (mode != null)
            {
                if (mode.BaseOperation.Name != "")
                {
                    parameterValue = mode.BaseOperation.LuaName.ToUpper();
                    TechObject obj     = baseTechObject.Owner;
                    string     objName = "prg." + obj.NameEplanForFile.ToLower() +
                                         obj.TechNumber.ToString();
                    res = $"{prefix}{parameter.LuaName} = " +
                          $"{objName}.operations." + parameterValue + ",\n";
                }
                else
                {
                    string message = $"Ошибка обработки параметра " +
                                     $"\"{parameter.Name}\"." +
                                     $" Не задана базовая операция в операции" +
                                     $" \"{mode.DisplayText[0]}\", объекта " +
                                     $"\"{mainObjName}\".\n";
                    Logs.AddMessage(message);
                }
            }
            else
            {
                string message = $"Ошибка обработки параметра " +
                                 $"\"{parameter.Name}\"." +
                                 $" Указан несуществующий номер операции в операции " +
                                 $"\"{mainObjMode.DisplayText[0]}\" объекта " +
                                 $"\"{mainObjName}\".\n";
                Logs.AddMessage(message);
            }


            return(res);
        }