示例#1
0
        public static ReportConfig ReadReportConfig(string configPath)
        {
            string       configData;
            ReportConfig ReportConfig = new ReportConfig();

            try
            {
                StreamReader file = new StreamReader(configPath);
                configData = file.ReadToEnd();

                JavaScriptSerializer js      = new JavaScriptSerializer();
                ReportConfig         confPar = js.Deserialize <ReportConfig>(configData);

                ReportConfig = confPar;

                return(ReportConfig);
            }
            catch (Exception)
            {
                ReportConfig.Error = "Ошибка конфигурации файла " + configPath;
                Console.WriteLine("Ошибка конфигурации файла " + configPath);
                return(ReportConfig);
            }
        }
示例#2
0
        public static void Reports(string logsPath, ReportConfig ReportConfig, EmailConfig EmailConfig, string date)
        {
            List <JuridicalLimErr> JuridicalLimit = new List <JuridicalLimErr>(), JuridicalError = new List <JuridicalLimErr>();

            string jurIDEmailError, jurIDError, jurIDEmailLimit, jurIDLimit, email;
            int    index, sendSuccess = 0;

            for (int pl = 0; pl < ReportConfig.ProgrammLoyalty.Length; pl++)
            {
                for (int rp = 0; rp < ReportConfig.ProgrammLoyalty[pl].Reports.Length; rp++)
                {
                    for (int pr = 0; pr < ReportConfig.ProgrammLoyalty[pl].Reports[rp].Periods.Length; pr++)
                    {
                        switch (ReportConfig.ProgrammLoyalty[pl].Reports[rp].DivideBy)
                        {
                        case Variables.divideByJuridical:

                            JuridicalError.Clear();
                            JuridicalLimit.Clear();
                            jurIDEmailError = string.Empty;
                            jurIDError      = string.Empty;
                            jurIDEmailLimit = string.Empty;
                            jurIDLimit      = string.Empty;

                            List <JuridicalData> JuridicalData = AdditionalFunc.GetJuridicalDataDB(ReportConfig.ProgrammLoyalty[pl].DataSource);

                            for (int i = 0; i < JuridicalData.Count; i++)
                            {
                                index = ReportConfig.ProgrammLoyalty[pl].Reports[rp].LegacyCliId.IndexOf(JuridicalData[i].jurID);

                                if (ReportConfig.ProgrammLoyalty[pl].Reports[rp].LegacyCliId.Count == 0 | index >= 0)
                                {
                                    GenerateReportResult GenerateReport = Report(logsPath,
                                                                                 ReportConfig.ProgrammLoyalty[pl].DirectoryName,
                                                                                 ReportConfig.ProgrammLoyalty[pl].DataSource,
                                                                                 ReportConfig.ProgrammLoyalty[pl].Reports[rp].ReportPath,
                                                                                 ReportConfig.ExportPath,
                                                                                 ReportConfig.ProgrammLoyalty[pl].Reports[rp].ReportName,
                                                                                 ReportConfig.ProgrammLoyalty[pl].Reports[rp].Periods[pr].ToLower(),
                                                                                 ReportConfig.ProgrammLoyalty[pl].Reports[rp].TimeFrom,
                                                                                 ReportConfig.ProgrammLoyalty[pl].Reports[rp].TimeTo,
                                                                                 ReportConfig.ProgrammLoyalty[pl].Reports[rp].ExportFormat,
                                                                                 ReportConfig.ProgrammLoyalty[pl].Reports[rp].ByProg,
                                                                                 JuridicalData[i],
                                                                                 date);

                                    if (GenerateReport.generateResult == 0)
                                    {
                                        if (EmailConfig.Send.Value)
                                        {
                                            email = JuridicalData[i].email;

                                            if (!string.IsNullOrEmpty(email))
                                            {
                                                AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileEmailRouting, "Найдена почта " + email + " по ЮЛ " + JuridicalData[i].jurInnAndTitle + ".", false);

                                                if (EmailConfig.SendLimit > sendSuccess)
                                                {
                                                    if (DispatchReport(logsPath, GenerateReport.ExportFiles, EmailConfig, JuridicalData[i].jurInnAndTitle, email) == 0)
                                                    {
                                                        sendSuccess++;
                                                    }
                                                    else
                                                    {
                                                        JuridicalError.Add(new JuridicalLimErr {
                                                            jurID = JuridicalData[i].jurID, email = email
                                                        });
                                                    }

                                                    //таймаут при следующей отправке
                                                    Thread.Sleep((int)EmailConfig.SendTimeout * 1000);
                                                }
                                                else
                                                {
                                                    AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileEmailRouting, "Превышен лимит на отправку сообщений.", false);

                                                    JuridicalLimit.Add(new JuridicalLimErr {
                                                        jurID = JuridicalData[i].jurID, email = email
                                                    });
                                                }
                                            }
                                            else
                                            {
                                                AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileEmailRouting, "Не найдена почта по ЮЛ " + JuridicalData[i].jurInnAndTitle + ".", false);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        JuridicalError.Add(new JuridicalLimErr {
                                            jurID = JuridicalData[i].jurID, email = string.Empty
                                        });
                                    }
                                }
                            }

                            if (JuridicalError.Count != 0)
                            {
                                for (int i = 0; i < JuridicalError.Count; i++)
                                {
                                    jurIDEmailError = jurIDEmailError + JuridicalError[i].jurID + " - " + JuridicalError[i].email + "\n";

                                    if (string.IsNullOrEmpty(jurIDError))
                                    {
                                        jurIDError = JuridicalError[i].jurID.ToString();
                                    }
                                    else
                                    {
                                        jurIDError = jurIDError + "," + JuridicalError[i].jurID;
                                    }
                                }

                                AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileIDEmailError, jurIDEmailError, false);
                                AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileIDError, jurIDError, false);
                            }

                            if (JuridicalLimit.Count != 0)
                            {
                                for (int i = 0; i < JuridicalLimit.Count; i++)
                                {
                                    jurIDEmailLimit = jurIDEmailLimit + JuridicalLimit[i].jurID + " - " + JuridicalLimit[i].email + "\n";

                                    if (string.IsNullOrEmpty(jurIDLimit))
                                    {
                                        jurIDLimit = JuridicalLimit[i].jurID.ToString();
                                    }
                                    else
                                    {
                                        jurIDLimit = jurIDLimit + "," + JuridicalLimit[i].jurID;
                                    }
                                }

                                AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileIDEmailLimit, jurIDEmailLimit, false);
                                AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileIDLimit, jurIDLimit, false);
                            }
                            break;

                        case Variables.divideByClub:
                            List <BonusClub> BonusClub = AdditionalFunc.GetBonusClubDataDB(ReportConfig.ProgrammLoyalty[pl].DataSource);

                            for (int i = 0; i < BonusClub.Count; i++)
                            {
                                Report(logsPath,
                                       ReportConfig.ProgrammLoyalty[pl].DirectoryName,
                                       ReportConfig.ProgrammLoyalty[pl].DataSource,
                                       ReportConfig.ProgrammLoyalty[pl].Reports[rp].ReportPath,
                                       ReportConfig.ExportPath,
                                       ReportConfig.ProgrammLoyalty[pl].Reports[rp].ReportName,
                                       ReportConfig.ProgrammLoyalty[pl].Reports[rp].Periods[pr].ToLower(),
                                       ReportConfig.ProgrammLoyalty[pl].Reports[rp].TimeFrom,
                                       ReportConfig.ProgrammLoyalty[pl].Reports[rp].TimeTo,
                                       ReportConfig.ProgrammLoyalty[pl].Reports[rp].ExportFormat,
                                       ReportConfig.ProgrammLoyalty[pl].Reports[rp].ByProg,
                                       BonusClub[i],
                                       date);
                            }
                            break;

                        default:
                            Report(logsPath,
                                   ReportConfig.ProgrammLoyalty[pl].DirectoryName,
                                   ReportConfig.ProgrammLoyalty[pl].DataSource,
                                   ReportConfig.ProgrammLoyalty[pl].Reports[rp].ReportPath,
                                   ReportConfig.ExportPath,
                                   ReportConfig.ProgrammLoyalty[pl].Reports[rp].ReportName,
                                   ReportConfig.ProgrammLoyalty[pl].Reports[rp].Periods[pr].ToLower(),
                                   ReportConfig.ProgrammLoyalty[pl].Reports[rp].TimeFrom,
                                   ReportConfig.ProgrammLoyalty[pl].Reports[rp].TimeTo,
                                   ReportConfig.ProgrammLoyalty[pl].Reports[rp].ExportFormat,
                                   ReportConfig.ProgrammLoyalty[pl].Reports[rp].ByProg.ToLower(),
                                   date);
                            break;
                        }
                    }
                }
            }
        }
示例#3
0
        static int Main(string[] args)
        {
            string fileReportConfig = Variables.fileReportConfig;

            string fileEmailConfig = Variables.fileEmailConfig;
            string date            = DateTime.Now.ToString("yyyy.MM.dd HH:mm");
            string logsPath        = AppDomain.CurrentDomain.BaseDirectory;

            for (int i = 0; i < args.Length; i += 2)
            {
                switch (args[i])
                {
                case Variables.flagConfig:
                    fileReportConfig = args[i + 1];
                    break;

                case Variables.flagEmailConfig:
                    fileEmailConfig = args[i + 1];
                    break;

                case Variables.flagDate:
                    date = args[i + 1];
                    break;

                case Variables.flagPath:
                    logsPath = args[i + 1];

                    if (!Directory.Exists(logsPath))
                    {
                        Directory.CreateDirectory(logsPath);
                    }

                    break;

                default:
                    Console.WriteLine("Use /config <configFile> or /emailConfig <configFile> or /date <yyyy.MM.dd> or /logsPath <logsPath> flags");
                    return(1);
                }
            }

            if (AdditionalFunc.CheckDate(date) == 1)
            {
                Console.WriteLine("Use /config <configFile> or /emailConfig <configFile> or /date <yyyy.MM.dd> or /logsPath <logsPath> flags");
                return(1);
            }

            Console.WriteLine("StimulsoftConsole v." + Assembly.GetExecutingAssembly().GetName().Version.ToString() + " "
                              + Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE").ToString() + " " + DateTime.Now + "\n");
            AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileLog, "StimulsoftConsole v." + Assembly.GetExecutingAssembly().GetName().Version.ToString() + " "
                                   + Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE").ToString() + " " + DateTime.Now + "\n", false);

            AdditionalFunc.CheckDriveSpace(logsPath);

            ReportConfig ReportConfig = Config.ReadReportConfig(fileReportConfig);
            EmailConfig  EmailConfig  = Config.ReadEmailConfig(fileEmailConfig);

            if (ReportConfig.Error != null)
            {
                AdditionalFunc.LogFile(logsPath + "\\" + Variables.fileError, ReportConfig.Error, false);
                return(1);
            }

            Reports(logsPath, ReportConfig, EmailConfig, date);

            return(0);
        }