protected override void Execute(NativeActivityContext context)
        {
            string workbookFullName    = FilePath.Get(context);
            string macro               = Macro.Expression.ToString();
            IEnumerable <object> param = MacroParameters.Get(context);


            try
            {
                object result       = null;
                string workbookName = string.Empty;

                if (File.Exists(workbookFullName))
                {
                    ExcelHelper.Shared.Close_OpenedFile(workbookFullName);
                    ExcelHelper.Shared.GetApp().DisplayAlerts = false;

                    workbookName = Path.GetFileName(workbookFullName);
                    dynamic  workBookObject = ExcelHelper.Shared.GetApp().Workbooks.Open(workbookFullName);
                    int      count;
                    Object[] arr = new Object[10];
                    if (param != null)
                    {
                        count = param.Count();

                        arr = param.ToArray();
                    }

                    else
                    {
                        count = 0;
                    }


                    switch (count)
                    {
                    case 0:
                        result = ExcelHelper.Shared.GetApp().Run(macro);
                        break;

                    case 1:

                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0]);
                        break;

                    case 2:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1]);
                        break;

                    case 3:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1], arr[2]);
                        break;

                    case 4:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1], arr[2], arr[3]);
                        break;

                    case 5:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1], arr[2], arr[3], arr[4]);
                        break;

                    case 6:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]);
                        break;

                    case 7:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6]);
                        break;

                    case 8:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]);
                        break;

                    case 9:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8]);
                        break;

                    case 10:
                        result = ExcelHelper.Shared.GetApp().Run(macro, arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9]);
                        break;

                    default:
                    {
                        Log.Logger.LogData("Number of Parameters exceeds limit of 10 " + " in activity Excel_Macro_Run", LogLevel.Error);
                    }
                        if (!ContinueOnError)
                        {
                            context.Abort();
                        }
                        break;
                    }

                    workBookObject.Save();
                    Result.Set(context, result);

                    if (NeedToClose == true)
                    {
                        ExcelHelper.Shared.GetWorkbookByName(workbookName, true).Close();
                        ExcelHelper.Shared.Dispose();
                    }
                    if (false == NeedToClose)
                    {
                        workBookObject.Close();
                        ExcelHelper.Shared.GetApp().Workbooks.Open(workbookFullName);
                    }
                }
                else
                {
                    Log.Logger.LogData("Excel file does not exist:" + workbookFullName + " in activity Excel_Macro_Run", LogLevel.Error);
                    if (!ContinueOnError)
                    {
                        context.Abort();
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex.HResult == -2146827284)
                {
                    Log.Logger.LogData("The macro " + macro + " may not be available in workbook " + workbookFullName + "  or all macros may be disabled in activity Excel_Macro_Run", LogLevel.Error);
                    ExcelHelper.Shared.Dispose();
                    if (!ContinueOnError)
                    {
                        context.Abort();
                    }
                }
                else
                {
                    Log.Logger.LogData(ex.Message + " in activity Excel_Macro_Run", LogLevel.Error);
                }
                if (!ContinueOnError)
                {
                    context.Abort();
                }
            }
        }
Example #2
0
        internal string ValidateInput()
        {
            string errorMessage = string.Empty;

            // Valitade Weight Input
            try
            {
                int.Parse(WeightInPounds);
            }
            catch
            {
                errorMessage = $"Please enter a valid weight.{Environment.NewLine}";
            }

            // Validate Height Selection
            if (HeightFeetIndex == -1 || HeightInchesIndex == -1)
            {
                errorMessage = $"{errorMessage}Please select your complete height.{Environment.NewLine}";
            }

            // Validate Age Input
            try
            {
                var inputAge = int.Parse(Age);
                if (int.Parse(Age) < 20 || int.Parse(Age) > 80)
                {
                    errorMessage = $"{errorMessage}Lean and Mean is designed for ages 18 to 80, please get nutritional guidance from a health professional";
                }
            }
            catch
            {
                errorMessage = $"{errorMessage}Please enter a valid age.{Environment.NewLine}";
            }

            // Validate Gender Selection
            // NOTE: THIS SEEMS REDUNDANT WITH A NON NULLABLE RADIO BUTTON GROUP
            if ((IsMale && IsFemale) || (!IsMale && !IsFemale))
            {
                errorMessage = $"{errorMessage}Please select male or female.{Environment.NewLine}";
            }

            // Validate Weight Loss Selection
            if (int.Parse(LossPerWeekIndex) < 0)
            {
                errorMessage = $"{errorMessage}Please select weight loss target.{Environment.NewLine}";
            }

            // Validate Activity Level Selection
            if (int.Parse(ActivityLevel) < 0)
            {
                errorMessage = $"{errorMessage}Please select an activity level.{Environment.NewLine}";
            }

            // Validate Macros and Set Macro Parameters
            if (int.Parse(MacroParametersIndex) < 0)
            {
                errorMessage = $"{errorMessage}Please select macros.{Environment.NewLine}";
            }
            else
            {
                switch (int.Parse(MacroParametersIndex))
                {
                case 0:     //Maintain
                    MacroParametersValue = MacroParameters.Maintain;
                    break;

                case 1:     //Bulk
                    MacroParametersValue = MacroParameters.Bulk;
                    if (int.Parse(LossPerWeekIndex) >= 0 && int.Parse(LossPerWeekIndex) != 4)
                    {
                        errorMessage = $"{errorMessage}You can not choose Bulking Macros with a Weight Loss Target.{Environment.NewLine}";
                    }
                    break;

                case 2:     //Cut
                    MacroParametersValue = MacroParameters.Cut;
                    if (int.Parse(LossPerWeekIndex) == 4)
                    {
                        errorMessage = $"{errorMessage}You can not choose Cutting Macros with a Weight Maintenance Target.{Environment.NewLine}";
                    }
                    break;
                }
            }
            return(errorMessage.TrimEnd(Environment.NewLine.ToCharArray()));
        }