Beispiel #1
0
        /// <summary>
        ///     Загрузка параметров
        /// </summary>
        private void LoadParams(StringCollection paramNames)
        {
            if (paramNames.Count < 1)
            {
                return;
            }

            var parametersStr = Convert.Collection2Str(paramNames).Replace(",", "','");

            if (string.IsNullOrWhiteSpace(parametersStr))
            {
                return;
            }

            var sqlParams = new Dictionary <string, object> {
                { "@clid", _clid }
            };
            var dt = DBManager.GetData(string.Format(SQLQueries.q_НастройкиОбщие_Получить, parametersStr),
                                       Config.DS_user, CommandType.Text, sqlParams);

            /*
             * for (int i = 0; i< dt.Rows.Count; i++)
             * {
             *  string name = dt.Rows[i]["Параметр"].ToString().Trim();
             *  string value = dt.Rows[i]["Значение"] == DBNull.Value ? string.Empty : dt.Rows[i]["Значение"].ToString();
             *  AppParamType paramType = (AppParamType)int.Parse(dt.Rows[i]["ТипПараметра"].ToString());
             *  _params.Add(new AppParameter(name, value, paramType));
             * }
             */

            foreach (DataRow r in dt.Rows)
            {
                var dbObj = r["Параметр"];
                var name  = dbObj.ToString();

                dbObj = r["Значение"];
                var value = dbObj == DBNull.Value ? string.Empty : dbObj.ToString();

                dbObj = r["ТипПараметра"];
                var paramType = dbObj == DBNull.Value
                    ? AppParamType.NotSaved
                    : (AppParamType)int.Parse(dbObj.ToString());

                //dbObj = r["КодНастройкиКлиента"];
                //int clid = dbObj == DBNull.Value ? 0 : (int)dbObj;

                //В первую очередь добавляем параметры с требуемым _clid
                //if (clid == _clid)
                //    _params.Add(new AppParameter(name, value, paramType));
                //else
                //{
                if (!_params.Exists(p => p.Name == name))
                {
                    _params.Add(new AppParameter(name, value, paramType));
                }
                //}
            }
        }
        /// <summary>
        ///     Кнопка: Сохранить
        /// </summary>
        private bool SaveData()
        {
            if (string.IsNullOrEmpty(id) || id == "0")
            {
                return(false);
            }

            var sc = new StringCollection();

            Update(sc);

            if (sc.Count > 0)
            {
                var wi = WindowsIdentity.GetCurrent();
                var wp = new WindowsPrincipal(wi);

                if (wp.IsInRole(@"EURO\Domain Admins") /*|| Page.User.IsInRole("TEST\\Programists")*/)
                {
                    if (Validation())
                    {
                        var sqlParams = new Dictionary <string, object> {
                            { "@КодСотрудника", id }
                        };
                        var sql = @"UPDATE Сотрудники SET " + Convert.Collection2Str(sc) +
                                  " WHERE КодСотрудника = @КодСотрудника";
                        DBManager.ExecuteNonQuery(sql, CommandType.Text, Config.DS_user, sqlParams);
                        return(true);
                    }

                    return(false);
                }

                if (CurrentUser.HasRole((int)Role.Кадровик) &&
                    efStatus.OriginalValue != employee.Status.ToString())
                {
                    if (sc.Count > 1)
                    {
                        ShowMessage("Вы можете менять только состояние сотрудника",
                                    Resx.GetString("errDoisserWarrning"), MessageStatus.Error);
                        return(false);
                    }

                    var sqlParams = new Dictionary <string, object>
                    {
                        { "@КодСотрудника", id },
                        { "@Состояние", efStatus.Value }
                    };

                    try
                    {
                        DBManager.ExecuteNonQuery(SQLQueries.UPDATE_СотрудникСостояние, CommandType.Text,
                                                  Config.DS_user, sqlParams);
                    }
                    catch (Exception e)
                    {
                        ShowMessage(e.Message, Resx.GetString("errDoisserWarrning"), MessageStatus.Error);
                        return(false);
                    }
                }
                else
                {
                    ShowMessage(Resx.GetString("msgNoAccess"), Resx.GetString("errDoisserWarrning"),
                                MessageStatus.Error);
                    return(false);
                }
            }

            return(true);
        }
Beispiel #3
0
 /// <summary>
 ///     Преобразование коллекции к строке с разделителем ','
 /// </summary>
 public static string Collection2Str(IEnumerable <string> col)
 {
     return(Convert.Collection2Str(col));
 }
        /// <summary>
        ///     Получение строки с ID типов документа
        /// </summary>
        /// <returns>Строка с ID типов документа</returns>
        private string GetDocTypeIDsStr()
        {
            if (DocTypeParams.Count > 0)
            {
                var typeIDs = new StringCollection();

                var selectLRSql     = "SELECT КодТипаДокумента FROM ТипыДокументов WHERE L >= @L AND R <= @R; ";
                var selectParentSql = "SELECT КодТипаДокумента FROM ТипыДокументов WHERE Parent = @Parent; ";

                DocTypeParams.ForEach(
                    type =>
                {
                    var sql = new StringBuilder();
                    switch (type.QueryType)
                    {
                    case DocTypeQueryType.Equals:
                        typeIDs.Add(type.DocTypeID);
                        break;

                    case DocTypeQueryType.WithChildren:
                        sql.Append(@"
DECLARE @L int, @R int; ");
                        sql.AppendFormat(@"
SELECT @L = L, @R = R FROM ТипыДокументов WHERE КодТипаДокумента = {0}; ", type.DocTypeID);
                        sql.Append(selectLRSql);
                        break;

                    case DocTypeQueryType.WithSynonyms:
                        sql.AppendFormat(@"
DECLARE @Parent int; 
SELECT @Parent = Parent FROM ТипыДокументов WHERE КодТипаДокумента = {0}; ", type.DocTypeID);
                        sql.Append(selectParentSql);
                        break;

                    case DocTypeQueryType.WithChildrenSynonyms:
                        sql.Append(@"
DECLARE @L int, @R int; ");
                        sql.AppendFormat(@"
SELECT @L = ISNULL(Pr.L, Ch.L), @R = ISNULL(Pr.R, Ch.R) 
FROM ТипыДокументов Ch LEFT JOIN ТипыДокументов Pr ON Pr.КодТипаДокумента = Ch.Parent WHERE Ch.КодТипаДокумента = {0}; ",
                                         type.DocTypeID);
                        sql.Append(selectLRSql);
                        break;
                    }

                    if (type.QueryType != DocTypeQueryType.Equals)
                    {
                        var dt = new DataTable();
                        try
                        {
                            dt = DBManager.GetData(sql.ToString(), Config.DS_document);
                        }
                        catch (Exception ex)
                        {
                            Logger.WriteEx(new DetailedException("Ошибка при получении типов документов в DSODoc",
                                                                 ex));
                            throw ex;
                        }

                        for (var i = 0; i < dt.Rows.Count; i++)
                        {
                            var typeID = dt.Rows[i][0].ToString();
                            if (!typeIDs.Contains(typeID))
                            {
                                typeIDs.Add(typeID);
                            }
                        }
                    }
                }
                    );
                return(Convert.Collection2Str(typeIDs));
            }

            return(string.Empty);
        }
Beispiel #5
0
 /// <summary>
 ///     Преобразование коллекции к строке с разделителем ','
 /// </summary>
 public static string Collection2Str(StringCollection col)
 {
     return(Convert.Collection2Str(col));
 }