예제 #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // отключение кэширования страницы
            ScadaUtils.DisablePageCache(Response);

            // получение данных пользователя
            UserData userData = UserData.GetUserData();

            // проверка входа в систему
            if (!userData.LoggedOn)
            {
                throw new Exception(WebPhrases.NotLoggedOn);
            }

            // определение индексов выбранного представления
            int viewSetIndex, viewIndex;

            if (!int.TryParse(Request["viewSet"], out viewSetIndex))
            {
                viewSetIndex = -1;
            }
            if (!int.TryParse(Request["view"], out viewIndex))
            {
                viewIndex = -1;
            }

            // получение представления и прав пользователя на него
            BaseView baseView;

            MainData.Right right;
            TableView      tableView = userData.GetView(null, viewSetIndex, viewIndex, out baseView, out right) ?
                                       baseView as TableView : null;

            // определение типа вывода событий
            int    eventOut;
            string eventOutStr = Request["eventOut"];

            if (eventOutStr == "all")
            {
                eventOut = 1; // все события
            }
            else if (eventOutStr == "view")
            {
                eventOut = 2; // по представлению
            }
            else
            {
                eventOut = 0; // не выводить
            }
            // проверка параметров генерации отчёта
            if (tableView == null && eventOut == 0)
            {
                throw new Exception(WebPhrases.NoReportData);
            }

            // проверка загрузки представления и прав на получение информации
            if (baseView == null)
            {
                throw new Exception(WebPhrases.UnableLoadView);
            }
            else if (!right.ViewRight || eventOut == 1 && userData.Role == ServerComm.Roles.Custom)
            {
                throw new Exception(CommonPhrases.NoRights);
            }

            // определение даты, за которую формируется отчёт
            int year, month, day;

            int.TryParse(Request["year"], out year);
            int.TryParse(Request["month"], out month);
            int.TryParse(Request["day"], out day);

            DateTime reqDate;

            try
            {
                reqDate = new DateTime(year, month, day);
            }
            catch
            {
                throw new Exception(WebPhrases.IncorrectDate);
            }

            // создание отчёта
            RepBuilder rep = new RepHrEvTable();

            try
            {
                // вывод в журнал
                AppData.Log.WriteAction(string.Format(WebPhrases.GenReport, rep.RepName, userData.UserLogin),
                                        Log.ActTypes.Action);

                // установка типа страницы и имени файла отчёта
                Response.ClearHeaders();
                Response.ContentType = "application/octet-stream";
                Response.AppendHeader("Content-Disposition", "attachment;filename=\"" +
                                      Path.GetFileNameWithoutExtension(baseView.FileName) + reqDate.ToString(" yyyy-MM-dd") + ".xml\"");

                // установка параметров отчёта
                rep.SetParams(baseView, reqDate, eventOut);

                // генерация отчёта
                rep.Make(Response.OutputStream, Request.PhysicalApplicationPath + @"templates\");
            }
            catch (Exception ex)
            {
                string errMsg = string.Format(WebPhrases.GenReportError, rep.RepName, ex.Message);
                AppData.Log.WriteAction(errMsg, Log.ActTypes.Exception);

                Response.ClearHeaders();
                Response.ContentType = "text/html";
                Response.Write(ScadaUtils.HtmlEncodeWithBreak(errMsg));
            }
        }
예제 #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                // настройка выходного потока
                Response.ClearContent();
                Response.TrySkipIisCustomErrors = true;

                // перевод веб-страницы
                Localization.TranslatePage(this, "Scada.Web.WFrmError");

                // определение сообщения об ошибке
                string    errMsg = "";
                Exception ex     = Server.GetLastError();

                if (ex == null)
                {
                    string msg = Request["msg"];
                    if (!string.IsNullOrEmpty(msg))
                    {
                        errMsg = msg;
                    }
                }
                else
                {
                    if (ex.InnerException != null)
                    {
                        ex = ex.InnerException;
                    }
                    errMsg = ex.Message;
                }

                if (errMsg == "")
                {
                    errMsg = lblMessage.Text;
                }
                else
                {
                    errMsg          = lblMessage.Text + ": " + errMsg;
                    lblMessage.Text = ScadaUtils.HtmlEncodeWithBreak(errMsg); // вывод на форму
                }

                // вывод сообщения в журнал приложения
                string logMsg = errMsg + (Localization.UseRussian ? "\nСтраница: " : "\nPage: ") +
                                Request.Url.AbsoluteUri;

                if (Context.Session == null)
                {
                    AppData.InitAppData();
                }
                else
                {
                    UserData userData = UserData.GetUserData();
                    if (userData != null)
                    {
                        logMsg += (Localization.UseRussian ? "\nПользователь: " : "\nUser: ") + userData.UserLogin;
                    }
                }

                AppData.Log.WriteAction(logMsg, Log.ActTypes.Exception);
            }
            finally
            {
                Server.ClearError();
            }
        }