Exemple #1
0
        /// <summary>
        /// Возвращает коллекцию ключей и значений вида : "дата","норма сотрудника на дату"
        /// </summary>
        /// <param name="con"></param>
        /// <param name="dtStart">Дата начала периода</param>
        /// <param name="dtEnd">Дата окончания периода</param>
        /// <param name="dtEnd">Идентификатор сотрудника</param>
        private Dictionary <DateTime, int> GetDayRates(XStorageConnection con, DateTime dtStart, DateTime dtEnd, Guid uidUserId)
        {
            if (dtStart > dtEnd)
            {
                throw new ArgumentException("Дата начала периода должна быть меньше даты окончания периода");
            }

            XDbCommand cmd = con.CreateCommand(
                "SELECT CalendarDate, Rate FROM  dbo.GetEmployeeCalendar(@dtStart,@dtEnd,@EmpID) as empCal");

            cmd.Parameters.Add("dtStart", DbType.Date, ParameterDirection.Input, false, dtStart);
            cmd.Parameters.Add("dtEnd", DbType.Date, ParameterDirection.Input, false, dtEnd);
            cmd.Parameters.Add("EmpID", DbType.Guid, ParameterDirection.Input, false, uidUserId);
            Dictionary <DateTime, int> dictDateRates = new Dictionary <DateTime, int>();

            using (IXDataReader reader = cmd.ExecuteXReader())
            {
                while (reader.Read())
                {
                    DateTime dt        = reader.GetDateTime(reader.GetOrdinal("CalendarDate"));
                    int      nDateRate = reader.GetInt16(reader.GetOrdinal("Rate"));
                    dictDateRates.Add(dt, nDateRate);
                }
            }
            return(dictDateRates);
        }
Exemple #2
0
        /// <summary>
        /// Загружает поля State, BlockDate в случае, если они еще не загружены и если они обновлялись.
        /// </summary>
        /// <param name="xobj"></param>
        /// <param name="bUpdatedState">Признак обновления поля State</param>
        /// <param name="bUpdatedBlockDate">Признак обновления поля BlockDate</param>
        /// <param name="context"></param>
        private void preloadProps(DomainObjectData xobj, bool bUpdatedState, bool bUpdateIsLocked, IXExecutionContext context)
        {
            bool bLoadState    = bUpdatedState && !xobj.HasLoadedProp("State");
            bool bLoadIsLocked = bUpdateIsLocked && !xobj.HasLoadedProp("IsLocked");

            // если надо зачитать хотя бы одно свойство
            if (bLoadState || bLoadIsLocked)
            {
                XDbCommand    cmd            = context.Connection.CreateCommand();
                StringBuilder cmdTextBuilder = new StringBuilder();
                cmdTextBuilder.Append("SELECT ");
                if (bLoadState)
                {
                    cmdTextBuilder.Append("[State]");
                }
                if (bLoadIsLocked)
                {
                    if (bLoadState)
                    {
                        cmdTextBuilder.Append(", ");
                    }
                    cmdTextBuilder.Append("[IsLocked]");
                }
                cmdTextBuilder.Append(" FROM ");
                cmdTextBuilder.Append(context.Connection.GetTableQName(xobj.TypeInfo));
                cmdTextBuilder.Append(" WHERE ObjectID = @ObjectID");
                cmd.CommandText = cmdTextBuilder.ToString();
                cmd.Parameters.Add("ObjectID", DbType.Guid, ParameterDirection.Input, false, xobj.ObjectID);
                using (IXDataReader reader = cmd.ExecuteXReader())
                {
                    if (reader.Read())
                    {
                        if (bLoadState)
                        {
                            xobj.SetLoadedPropValue("State", reader.GetInt16(reader.GetOrdinal("State")));
                        }
                        if (bLoadIsLocked)
                        {
                            xobj.SetLoadedPropValue("IsLocked", reader.GetBoolean(reader.GetOrdinal("IsLocked")));
                        }
                    }
                }
            }
        }
Exemple #3
0
        private void readUserManagedOrganizations(ITUser user, XStorageConnection con)
        {
            XDbCommand cmd = con.CreateCommand();

            cmd.CommandText = @"
				SELECT o.ObjectID
				FROM Organization o WITH (nolock)
					JOIN Organization o_p WITH (nolock) ON o_p.LIndex <= o.LIndex AND o_p.RIndex >= o.RIndex and o_p.Director = @EmployeeID		
			"            ;
            cmd.Parameters.Add("EmployeeID", DbType.Guid, ParameterDirection.Input, false, user.EmployeeID);
            using (IXDataReader reader = cmd.ExecuteXReader())
            {
                ArrayList aOrgIDs = new ArrayList();
                while (reader.Read())
                {
                    aOrgIDs.Add(reader.GetGuid(0));
                }
                user.ManagedOrganizations = new Guid[aOrgIDs.Count];
                aOrgIDs.CopyTo(user.ManagedOrganizations);
            }
        }
Exemple #4
0
        private void readUserActivityTypes(ITUser user, XStorageConnection con)
        {
            XDbCommand cmd = con.CreateCommand();

            cmd.CommandText = @"
				SELECT at.ObjectID, at.Name, at.Code, at.AccountRelated, at.FolderType, at.StartDate, at.EndDate 
				FROM dbo.SystemUser_ActivityTypes su_at WITH (nolock)
					JOIN dbo.ActivityType at WITH (nolock) ON su_at.Value = at.ObjectID
				WHERE su_at.ObjectID = @ObjectID
				UNION
				SELECT at.ObjectID, at.Name, at.Code, at.AccountRelated, at.FolderType, at.StartDate, at.EndDate 
				FROM dbo.SystemUser_SystemRoles su_sr WITH (nolock)
					JOIN dbo.SystemRole_ActivityTypes sr_at WITH (nolock) ON su_sr.Value = sr_at.ObjectID
						JOIN dbo.ActivityType at WITH (nolock) ON sr_at.Value = at.ObjectID
				WHERE su_sr.ObjectID = @ObjectID
				"                ;
            cmd.Parameters.Add("ObjectID", DbType.Guid, ParameterDirection.Input, false, user.SystemUserID);
            using (IXDataReader reader = cmd.ExecuteXReader())
            {
                user.ActivityTypes = new Hashtable();
                while (reader.Read())
                {
                    DomainObject_ActivityType xobj = new DomainObject_ActivityType();
                    xobj.ObjectID       = reader.GetGuid(reader.GetOrdinal("ObjectID"));
                    xobj.Name           = reader.GetString(reader.GetOrdinal("Name"));
                    xobj.Code           = reader.GetString(reader.GetOrdinal("Code"));
                    xobj.AccountRelated = reader.GetBoolean(reader.GetOrdinal("AccountRelated"));
                    xobj.FolderType     = (FolderTypeFlags)reader.GetInt16(reader.GetOrdinal("FolderType"));
                    xobj.StartDate      = reader.GetDateTime(reader.GetOrdinal("StartDate"));
                    if (!reader.IsDBNull(reader.GetOrdinal("EndDate")))
                    {
                        xobj.EndDate = reader.GetDateTime(reader.GetOrdinal("EndDate"));
                    }
                    user.ActivityTypes.Add(xobj.ObjectID, xobj);
                }
            }
        }
        internal static bool fillEmployeeInfoSection(XMenuSection sec, Guid EmployeeID, XStorageConnection cn)
        {
            using (XDbCommand cmd = cn.CreateCommand(
                       "SELECT " +
                       "	emp.EMail, emp.Phone, emp.PhoneExt, p.Name AS PositionName, o.Home "+
                       "FROM Employee emp " +
                       "	LEFT JOIN Position p ON emp.Position = p.ObjectID "+
                       "	JOIN Organization o ON emp.Organization = o.ObjectID "+
                       "WHERE emp.ObjectID = @ObjectID"
                       ))
            {
                cmd.Parameters.Add("ObjectID", DbType.Guid, ParameterDirection.Input, false, EmployeeID);
                bool   bIsHome;
                string sEMail        = null;
                string sPhone        = null;
                string sPhoneExt     = null;
                string sPositionName = null;
                using (IXDataReader reader = cmd.ExecuteXReader())
                {
                    if (reader.Read())
                    {
                        bIsHome = reader.GetBoolean(reader.GetOrdinal("Home"));
                        if (!reader.IsDBNull(reader.GetOrdinal("EMail")))
                        {
                            sEMail = reader.GetString(reader.GetOrdinal("EMail"));
                        }
                        if (!reader.IsDBNull(reader.GetOrdinal("Phone")))
                        {
                            sPhone = reader.GetString(reader.GetOrdinal("Phone"));
                        }
                        if (!reader.IsDBNull(reader.GetOrdinal("PhoneExt")))
                        {
                            sPhoneExt = reader.GetString(reader.GetOrdinal("PhoneExt"));
                        }
                        if (!reader.IsDBNull(reader.GetOrdinal("PositionName")))
                        {
                            sPositionName = reader.GetString(reader.GetOrdinal("PositionName"));
                        }

                        sec.Items.AddInfoItem("EMail", sEMail);
                        if (bIsHome && sPhoneExt != null)
                        {
                            sec.Items.AddInfoItem("Внутренний телефон", sPhoneExt);
                        }
                        else
                        {
                            sec.Items.AddInfoItem("Телефон",
                                                  (sPhone != null && sPhone.Length > 0 ? sPhone : "") +
                                                  (sPhoneExt != null && sPhoneExt.Length > 0 ? "(" + sPhoneExt + ")" : "")
                                                  );
                        }
                        if (sPositionName != null)
                        {
                            sec.Items.AddInfoItem("Должность", sPositionName);
                        }
                        return(true);
                    }
                }
                return(false);
            }
        }