Exemplo n.º 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));
            }
        }
Exemplo n.º 2
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.ItfObjName) + 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));
            }
        }