Exemplo n.º 1
0
        /// <summary>
        /// Получить данные пользователя приложения
        /// </summary>
        /// <remarks>Для веб-приложения данные пользователя сохраняются в сессии</remarks>
        public static UserData GetUserData()
        {
            HttpSessionState session = HttpContext.Current == null ? null : HttpContext.Current.Session;
            UserData userData = session == null ? null : session["UserData"] as UserData;

            if (userData == null)
            {
                AppData.InitAppData();
                userData = new UserData();

                if (session != null)
                    session.Add("UserData", userData);

                // загрузка настроек представлений
                string errMsg;
                if (!userData.ViewSettings.LoadFromFile(AppData.ConfigDir + ViewSettings.DefFileName, out errMsg))
                    AppData.Log.WriteAction(errMsg, Log.ActTypes.Exception);
            }

            return userData;
        }
Exemplo n.º 2
0
 protected void Session_Start(object sender, EventArgs e)
 {
     // добавление информации о пользователе
     AppData.GetAppData().UserMonitor.AddUser(UserData.GetUserData());
 }
Exemplo n.º 3
0
        protected string viewFileNameArrStr; // строковая запись массива имён файлов представлений

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

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

            // проверка входа в систему
            userData.CheckLoggedOn(Context);

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

            // определение индекса выбранного при входе набора представлений
            int viewSetInd;

            int.TryParse(Request.Params["viewSet"], out viewSetInd);
            viewSetIndStr = viewSetInd.ToString();

            // получение выбранного набора представлений, если на него есть права
            ViewSettings.ViewSet viewSet = null;
            int viewCnt = 0;

            if (userData.GetViewSetRight(viewSetInd).ViewRight)
            {
                List <ViewSettings.ViewSet> viewSetList = userData.ViewSettings.ViewSetList;

                if (0 <= viewSetInd && viewSetInd < viewSetList.Count)
                {
                    viewSet = viewSetList[viewSetInd];
                    viewCnt = viewSet.Count;

                    // вывод заголовка страницы
                    Title = "SCADA - " + viewSet.Name;

                    // заполнение списка представлений
                    bool first = true;
                    for (int i = 0; i < viewCnt; i++)
                    {
                        if (userData.GetViewRight(viewSetInd, i).ViewRight)
                        {
                            ListItem item = new ListItem(viewSet[i].Title, i.ToString());
                            item.Selected = first;
                            ddlView.Items.Add(item);
                            first = false;
                        }
                    }
                }
            }

            // заполнение списков дней, месяцев и годов, выбор текущей даты
            DateTime today  = DateTime.Today;
            int      curDay = today.Day;

            for (int day = 1; day <= 31; day++)
            {
                string   dayStr = day.ToString();
                ListItem item   = new ListItem(day < 10 ? "0" + dayStr : dayStr, dayStr);
                item.Selected = day == curDay;
                ddlDay.Items.Add(item);
            }

            int curMonth = today.Month;

            string[] monthNames = Localization.Culture.DateTimeFormat.MonthNames;

            for (int month = 1; month <= 12; month++)
            {
                ListItem item = new ListItem(monthNames[month - 1], month.ToString());
                item.Selected = month == curMonth;
                ddlMonth.Items.Add(item);
            }

            for (int i = 0, year = today.Year; i < 10; i++, year--)
            {
                string   yearStr = year.ToString();
                ListItem item    = new ListItem(yearStr, yearStr);
                item.Selected = i == 0;
                ddlYear.Items.Add(item);
            }

            // добавление скрипта перемещения выпадающего списка дней после списка месяцев, если необходимо
            if (Localization.DayAfterMonth)
            {
                ClientScript.RegisterStartupScript(this.GetType(), "Startup", "PlaceDayAfterMonth();", true);
            }

            // привязка событий
            ddlView.Attributes["onchange"]    = "ShowData()";
            ddlDay.Attributes["onchange"]     = "ShowData()";
            ddlMonth.Attributes["onchange"]   = "ShowData()";
            ddlYear.Attributes["onchange"]    = "ShowData()";
            rbStage1.Attributes["onclick"]    = "ShowView()";
            rbStage2.Attributes["onclick"]    = "ShowView()";
            rbStageFull.Attributes["onclick"] = "ShowView()";

            // настройка отображения событий и фрейма для проверка входа в систему
            pnlEvents.Visible         = AppData.WebSettings.EventCnt > 0;
            frameLoginChecker.Visible = !pnlEvents.Visible;

            // формирование массивов, описывающих представления
            if (viewCnt > 0)
            {
                string[] viewTypeArr     = new string[viewCnt];
                string[] viewFileNameArr = new string[viewCnt];

                for (int i = 0; i < viewCnt; i++)
                {
                    ViewSettings.ViewInfo viewInfo = viewSet[i];
                    viewTypeArr[i]     = "\"" + viewInfo.Type + "\"";
                    viewFileNameArr[i] = "\"" + viewInfo.FileName + "\"";
                }

                viewTypeArrStr     = "[" + string.Join(", ", viewTypeArr) + "]";
                viewFileNameArrStr = "[" + string.Join(", ", viewFileNameArr) + "]";
            }
            else
            {
                viewTypeArrStr     = "\"\"";
                viewFileNameArrStr = "\"\"";
            }
        }
Exemplo n.º 4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // отключение кэширования страницы
            ScadaUtils.DisablePageCache(Response);

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

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

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

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

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

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

            MainData.Right right;
            userData.GetView(null, viewSetIndex, viewIndex, out view, out right);

            // вывод сообщения о загрузке
            if (view == null && right.ViewRight)
            {
                lblLoading.Visible = true;
                tblEv.Visible      = false;
                hidEvStamp.Value   = "-1";
                return;
            }

            // определение фильтра событий
            bool showAllEvents = Request["filter"] == "all";

            // проверка загрузки представления и прав на просмотр информации
            if (view == null)
            {
                throw new Exception(WebPhrases.UnableLoadView);
            }
            else if (!right.ViewRight || showAllEvents && 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);
            }

            // получение обновлённых данных событий
            EventTableLight eventTable;

            AppData.MainData.RefreshEvents(reqDate, out eventTable);
            hidEvStamp.Value = eventTable.FileModTime.Ticks.ToString();

            List <int> cnlList = showAllEvents ? null : view.CnlList;
            List <MainData.EventView> events = AppData.MainData.ConvertEvents(
                AppData.MainData.GetLastEvents(eventTable, cnlList, AppData.WebSettings.EventCnt));

            if (events.Count > 0)
            {
                for (int eventInd = events.Count - 1; eventInd >= 0; eventInd--)
                {
                    MainData.EventView eventView = events[eventInd];
                    TableRow           row       = new TableRow();
                    WFrmTableView.NewCell(row, eventView.Num, "c");
                    WFrmTableView.NewCell(row, eventView.Date, "c");
                    WFrmTableView.NewCell(row, eventView.Time, "c");
                    WFrmTableView.NewCell(row, eventView.Obj);
                    WFrmTableView.NewCell(row, eventView.KP);
                    WFrmTableView.NewCell(row, eventView.Cnl);
                    WFrmTableView.NewCell(row, eventView.Text);

                    // установка номера события для воспроизведения звука при загрузке страницы
                    if (eventView.Sound && string.IsNullOrEmpty(hidSndEvNum.Value))
                    {
                        hidSndEvNum.Value = eventView.Num;
                    }

                    // формирование ячейки квитирования
                    if (right.CtrlRight && !eventView.Check)
                    {
                        string chkCellText = "<a href=\"javascript:CheckEvent(" + viewSetIndex + ", " + viewIndex +
                                             ", " + year + ", " + month + ", " + day + ", " + eventView.Num +
                                             ")\" style=\"color: " + eventView.Color + "\">" + eventView.User + "</a>";
                        WFrmTableView.NewCell(row, chkCellText, "c");
                    }
                    else
                    {
                        WFrmTableView.NewCell(row, eventView.User, "c");
                    }

                    // установка свойств строки таблицы
                    WFrmTableView.SetCssClass(row, eventInd % 3 == 2, eventInd == 0);
                    string color = eventView.Color;
                    if (!(color == "" || color.ToLower() == "black"))
                    {
                        row.ForeColor = Color.FromName(color);
                    }
                    tblEv.Rows.Add(row);
                }
            }
            else
            {
                lblNoData.Visible = true;
                tblEv.Visible     = false;
            }
        }
Exemplo n.º 5
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); // вывод на форму
                }

                // вывод сообщения с дополнительной информацией в журнал приложения
                StringBuilder sbLogMsg = new StringBuilder(errMsg);
                if (ex != null)
                {
                    sbLogMsg.AppendLine().Append(ex.StackTrace);
                }

                sbLogMsg
                .AppendLine()
                .Append(Localization.UseRussian ? "Страница: " : "Page: ")
                .Append(Request.Url.AbsoluteUri);

                if (Context.Session == null)
                {
                    AppData.InitAppData();
                }
                else
                {
                    UserData userData = UserData.GetUserData();
                    if (userData != null)
                    {
                        sbLogMsg
                        .AppendLine()
                        .Append(Localization.UseRussian ? "Пользователь: " : "User: ")
                        .Append(userData.UserLogin);
                    }
                }

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