public static string GetMessage (IntPtr Display, IntPtr ResourceID, IntPtr Serial, byte ErrorCode, XRequest RequestCode, byte MinorCode) { StringBuilder sb; string x_error_text; string error; string hwnd_text; string control_text; Hwnd hwnd; Control c; sb = new StringBuilder(160); Xlib.XGetErrorText (Display, ErrorCode, sb, sb.Capacity); x_error_text = sb.ToString(); hwnd = Hwnd.ObjectFromHandle(ResourceID); if (hwnd != null) { hwnd_text = hwnd.ToString(); c = Control.FromHandle(hwnd.Handle); if (c != null) { control_text = c.ToString(); } else { control_text = String.Format("<handle {0:X} non-existant>", hwnd.Handle); } } else { hwnd_text = "<null>"; control_text = "<null>"; } error = String.Format("\n Error: {0}\n Request: {1:D} ({2})\n Resource ID: 0x{3:X}\n Serial: {4}\n Hwnd: {5}\n Control: {6}", x_error_text, RequestCode, RequestCode, ResourceID.ToInt32(), Serial, hwnd_text, control_text); return error; }
public XResponse Execute(XRequest request, IXExecutionContext context) { if (request is XGetTreeDataRequest) { request.Name = "XGetTreeData"; ((XGetTreeDataRequest)request).Params.Add("CurrentEmployeeID", ((ITUser)XSecurityManager.Instance.GetCurrentUser()).EmployeeID); ((XGetTreeDataRequest)request).Params.Add("CurrentSystemUserID", ((ITUser)XSecurityManager.Instance.GetCurrentUser()).SystemUserID); } else if (request is XGetTreeMenuRequest) { request.Name = "XGetTreeMenu"; ((XGetTreeMenuRequest)request).Params.Add("CurrentEmployeeID", ((ITUser)XSecurityManager.Instance.GetCurrentUser()).EmployeeID); ((XGetTreeMenuRequest)request).Params.Add("CurrentSystemUserID", ((ITUser)XSecurityManager.Instance.GetCurrentUser()).SystemUserID); } else if (request is XGetListDataRequest) { request.Name = "XGetListData"; ((XGetListDataRequest)request).Params.Add("CurrentEmployeeID", ((ITUser)XSecurityManager.Instance.GetCurrentUser()).EmployeeID); ((XGetListDataRequest)request).Params.Add("CurrentSystemUserID", ((ITUser)XSecurityManager.Instance.GetCurrentUser()).SystemUserID); } else if (request is XExecuteDataSourceRequest) { request.Name = "XExecuteDataSource"; ((XExecuteDataSourceRequest)request).Params.Add("CurrentEmployeeID", ((ITUser)XSecurityManager.Instance.GetCurrentUser()).EmployeeID); ((XExecuteDataSourceRequest)request).Params.Add("CurrentSystemUserID", ((ITUser)XSecurityManager.Instance.GetCurrentUser()).SystemUserID); } return(context.ExecCommand(request, true)); }
public Domain.Enum.UserLoginResult ValidateUser(string usernameOrEmail, string password) { var user = GetUserByUserNameOrEmail(usernameOrEmail); if (user == null) { return(UserLoginResult.UserNotExist); } if (user.IsLocked) { return(UserLoginResult.Locked); } if (!user.IsActivated) { return(UserLoginResult.NotActive); } var passwordHash = Cipher.Hash(password, user.PasswordSalt); var isValid = passwordHash.Equals(user.Password); if (!isValid) { return(UserLoginResult.WrongPassword); } //save last login date user.LastLoginDate = DateTime.Now; user.LastActiveIP = XRequest.GetIP(); user.TryCount = 0; UserService.SubmitChanges(); return(UserLoginResult.Successful); }
/// <summary> /// Метод выполнения операции, реализация IXCommand.Execute /// </summary> /// <param name="request">Объект-запрос на выполнение операции</param> /// <param name="context">Представление контекста выполнения операции</param> /// <returns> /// Экземпляр объекта-результата выполнения операции /// </returns> public override XResponse Execute(XRequest request, IXExecutionContext context) { request.ValidateRequestType(typeof(XGetObjectRequest)); // Вызывается частная, полностью типизированная реализация return(this.Execute((XGetObjectRequest)request, context)); }
public override void Process(Command cmd, object packet) { try { XRequest request = null; switch (cmd) { case Command.UpdateVideoRecordState: { //TODO break; } default: { request = new SyncRouteRequest(); break; } } if (null != request) { request.Process(packet); } } catch (Exception e) { } }
/// <summary> /// ћетод запуска операции на выполнение, <входна¤> точка операции /// ѕ≈–≈√–”∆≈ЌЌџ…, —“–ќ√ќ “»ѕ»«»–ќ¬јЌЌџ… ћ≈“ќƒ /// ¬џ«џ¬ј≈“—я яƒ–ќћ ј¬“ќћј“»„≈— » /// </summary> /// <param name="request">«апрос на выполнение операции</param> /// <param name="context"> онтекст выполнени¤ операции</param> /// <returns>–езультат выполнени¤</returns> public override XResponse Execute(XRequest request, IXExecutionContext context) { ITUser user = (ITUser)XSecurityManager.Instance.GetCurrentUser(); XmlElement xmlCurrentEmployee = context.Connection.Load("Employee", user.EmployeeID); context.Connection.LoadProperty(xmlCurrentEmployee, "SystemUser"); return(new XGetObjectResponse(xmlCurrentEmployee)); }
public override XResponse Execute(XRequest request, IXExecutionContext context) { XDataSource ds = context.Connection.GetDataSource(DATASOURCE_NAME); ds.ExecuteScalar(); return(new XResponse()); }
/// <summary> /// Метод проверки данных запроса. /// Вызывается Ядром перед передачей объекта в прикладной код. /// </summary> /// <remarks> /// Метод проверяет, чтобы наименование описания структуры иерархии в /// метаданных было задано (явно или в результате разбора XML-запроса). /// </remarks> public override void Validate() { // Вызываем базовую реализацию - проверка свойств базового класса base.Validate(); // Наименование описания структуры иерархии в метаданных должно // быть задано (явно или в результате разбора XML-запроса): XRequest.ValidateRequiredArgument(MetaName, "MetaName"); }
public X11Exception (IntPtr Display, IntPtr ResourceID, IntPtr Serial, byte ErrorCode, XRequest RequestCode, byte MinorCode) { this.Display = Display; this.ResourceID = ResourceID; this.Serial = Serial; this.RequestCode = RequestCode; this.ErrorCode = ErrorCode; this.MinorCode = MinorCode; }
public X11Exception(IntPtr Display, IntPtr ResourceID, IntPtr Serial, byte ErrorCode, XRequest RequestCode, byte MinorCode) { this.Display = Display; this.ResourceID = ResourceID; this.Serial = Serial; this.RequestCode = RequestCode; this.ErrorCode = ErrorCode; this.MinorCode = MinorCode; }
/// <summary> /// Выполняет задание /// </summary> public void RunJob() { // увеличиваем время следующего запуска this.m_dtNextStartTime += this.Description.Period; // запускаем команду XFW XRequest request = new XRequest(); request.Name = this.Description.CommandName; XFacade.Instance.ExecCommand(request); }
public override XResponse Execute(XRequest request, IXExecutionContext context) { using (XDbCommand cmd = context.Connection.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "dbo.app_messagingCheckIncidentsDeadline"; cmd.CommandTimeout = int.MaxValue - 128; cmd.ExecuteNonQuery(); } return(new XResponse()); }
/// <summary> /// Проверяет корректность заполнения данных запроса /// </summary> public override void Validate() { // Обязательно вызываем базовую реализацию - там проверяются // свойства, определяемые базовой же реализацией XRequest.ValidateOptionalArgument(SessionID, "SessionID"); // В отличие от запроса типа GetObjectIdByExKeyRequest, здесь // наименование ds-типа должно быть задано ВСЕГДА. При этом допустимо // задание наименование источника данных наряду с указанием ds-типа - // тогда именно источник будет использоваться для определения // идентификатора ValidateRequiredArgument(TypeName, "TypeName"); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Request.Cookies["yklm_agent"] != null) { //UserNameBox.Value = Request.Cookies["yklm_agent"]["username"].ToString(); //password.Attributes["value"] = "**********"; } } if (XRequest.IsPost()) { SignIn(); } }
public override bool HasRightsToExecute(XRequest request, IXExecutionContextGuard context) { try { XSecurityManager.Instance.GetCurrentUser(); return(true); } catch (SecurityException) { return(false); } catch { throw; } }
/// <summary> /// Метод запуска операции на выполнение, <входная> точка операции /// ПЕРЕГРУЖЕННЫЙ, СТРОГО ТИПИЗИРОВАННЫЙ МЕТОД /// ВЫЗЫВАЕТСЯ ЯДРОМ АВТОМАТИЧЕСКИ /// </summary> /// <param name="request">Запрос на выполнение операции</param> /// <param name="context">Контекст выполнения операции</param> /// <returns>Результат выполнения</returns> public override XResponse Execute(XRequest request, IXExecutionContext context) { ITUser user = (ITUser)XSecurityManager.Instance.GetCurrentUser(); GetCurrentUserClientProfileResponse response = new GetCurrentUserClientProfileResponse(); /* * Закоментировано, т.к. сейчас нет необходимости в получении xml-объекта текущего сотрудника, если понадобится, то раскоментировать * XmlElement xmlCurrentEmployee = context.Connection.Load( "Employee", user.EmployeeID ); * context.Connection.LoadProperty( xmlCurrentEmployee, "SystemUser" ); * response.XmlEmployee = xmlCurrentEmployee; */ response.EmployeeID = user.EmployeeID; response.SystemUserID = user.SystemUserID; response.WorkdayDuration = user.WorkdayDuration; return(response); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (XRequest.IsPost()) { if (this.Session["CCode"] == null) { AlertAndRedirect("验证码已失效!"); return; } else if (XRequest.GetString("CCode").ToUpper() != this.Session["CCode"].ToString().ToUpper()) { AlertAndRedirect("验证码错误!"); return; } else { string userName = XRequest.GetString("UserNameBox"); string passWord = Cryptography.MD5(XRequest.GetString("pas")); Model.Manage manage = new viviapi.Model.Manage(); manage.username = userName; manage.password = passWord; manage.lastLoginTime = DateTime.Now; manage.lastLoginIp = viviLib.Web.ServerVariables.TrueIP; manage.LastLoginAddress = WebUtility.GetIPAddress(manage.lastLoginIp); manage.LastLoginRemark = WebUtility.GetIPAddressInfo(manage.lastLoginIp); string message = BLL.ManageFactory.SignIn(manage); if (manage.id > 0) { AlertAndRedirect(string.Empty, "Default.aspx"); } else { AlertAndRedirect(message); } } } }
/// <summary> /// Метод выполнения операции, типизированная реализация /// </summary> /// <param name="oRequest">Объект-запрос на выполнение операции</param> /// <param name="oContext">Представление контекста выполнения операции</param> /// <returns> /// Экземпляр объекта-результата выполнения операции /// </returns> public XResponse Execute(XDeleteObjectRequest oRequest, IXExecutionContext oContext) { // Проверка параметров запроса XRequest.ValidateRequiredArgument(oRequest.TypeName, "XDeleteObjectRequest.TypeName"); XRequest.ValidateRequiredArgument(oRequest.ObjectID, "XDeleteObjectRequest.ObjectID"); DomainObjectData objData = DomainObjectData.CreateStubLoaded(oContext.Connection, oRequest.TypeName, oRequest.ObjectID); XObjectRights rights = XSecurityManager.Instance.GetObjectRights(objData); if (!rights.AllowDelete) { throw new XSecurityException(String.Format( "Выполнение операции невозможно: нет прав на удаление объекта \"{0}\" ({1}[oid='{2}'])", objData.TypeInfo.Description, oRequest.TypeName, oRequest.ObjectID )); } // Вызываем метод подсистемы Storage (уровень Level-2); экземпляр // Storage представлен в рамках контекста выполнения опеарции return(new XDeleteObjectResponse(XStorageGateway.Delete(oContext, oRequest.TypeName, oRequest.ObjectID))); }
public void InsertUser(User user) { var passwordSalt = Cipher.GenerateSalt(); var passwordHash = Cipher.Hash(user.Password, passwordSalt); user.PasswordSalt = passwordSalt; user.Password = passwordHash; user.BindAccount = user.BindAccount ?? string.Empty; //setting default value: user.RoleID = EnumUserRole.NormalUser.ToInt(); user.Grade = 1; user.EntryDate = DateTime.Now; user.LastLoginDate = DateTime.Now; user.IsActivated = true; user.IsLocked = false; user.IsAutoAdded = false; user.LoginTimes = 1; user.LastActiveIP = XRequest.GetIP(); user.GUID = Guid.NewGuid(); UserService.Insert(user); UserService.SubmitChanges(); }
public static string GetMessage(IntPtr Display, IntPtr ResourceID, IntPtr Serial, byte ErrorCode, XRequest RequestCode, byte MinorCode) { StringBuilder sb; string x_error_text; string error; string hwnd_text; string control_text; Hwnd hwnd; Control c; sb = new StringBuilder(160); Xlib.XGetErrorText(Display, ErrorCode, sb, sb.Capacity); x_error_text = sb.ToString(); hwnd = Hwnd.ObjectFromHandle(ResourceID); if (hwnd != null) { hwnd_text = hwnd.ToString(); c = Control.FromHandle(hwnd.Handle); if (c != null) { control_text = c.ToString(); } else { control_text = String.Format("<handle {0:X} non-existant>", hwnd.Handle); } } else { hwnd_text = "<null>"; control_text = "<null>"; } error = String.Format("\n Error: {0}\n Request: {1:D} ({2})\n Resource ID: 0x{3:X}\n Serial: {4}\n Hwnd: {5}\n Control: {6}", x_error_text, RequestCode, RequestCode, ResourceID.ToInt32(), Serial, hwnd_text, control_text); return(error); }
/// <summary> /// Метод запуска операции на выполнение, «входная» точка операции /// ПЕРЕГРУЖЕННЫЙ, СТРОГО ТИПИЗИРОВАННЫЙ МЕТОД /// ВЫЗЫВАЕТСЯ ЯДРОМ АВТОМАТИЧЕСКИ /// </summary> /// <param name="request">Запрос на выполнение операции</param> /// <param name="context">Контекст выполнения операции</param> /// <returns>Результат выполнения</returns> public override XResponse Execute(XRequest request, IXExecutionContext context) { return(Execute((UpdateActivityStateRequest)request, context)); }
/// <summary> /// ћетод запуска операции на выполнение, <входна¤> точка операции /// ѕ≈–≈√–”∆≈ЌЌџ…, —“–ќ√ќ “»ѕ»«»–ќ¬јЌЌџ… ћ≈“ќƒ /// ¬џ«џ¬ј≈“—я яƒ–ќћ ј¬“ќћј“»„≈— » /// </summary> /// <param name="request">«апрос на выполнение операции</param> /// <param name="context"> онтекст выполнени¤ операции</param> /// <returns>–езультат выполнени¤</returns> public new GetExpensesDataResponse Execute(XRequest request, IXExecutionContext context) { ITUser user = (ITUser)XSecurityManager.Instance.GetCurrentUser(); Hashtable dictionaryParams = new Hashtable(); dictionaryParams.Add("EmployeeID", user.EmployeeID); // ѕолучим источник данных, подставим переданные параметры и выполним его: XDataSource dataSource = context.Connection.GetDataSource("GetEmployeeCurrentSummaryExpenses"); dataSource.SubstituteNamedParams(dictionaryParams, true); dataSource.SubstituteOrderBy(); DataTable resultDataTable = dataSource.ExecuteDataTable(); // в результирующей таблице должно быть шесть колонок, три строки: if (resultDataTable.Columns.Count != 6 && resultDataTable.Rows.Count != 3) { throw new ApplicationException("Ќекорректный результат получени¤ данных затрат сотрудника"); // TODO: ѕоправить текст сообщени¤! } // ‘ормируем результат: GetExpensesDataResponse response = new GetExpensesDataResponse(); response.EmployeeID = user.EmployeeID; for (int nRow = 0; nRow < resultDataTable.Rows.Count; nRow++) { PeriodExpensesInfo infoExpenses; switch ((int)resultDataTable.Rows[nRow]["RowCode"]) { case 1: infoExpenses = response.PreviousMonth; break; case 2: infoExpenses = response.CurrentMonth; break; case 3: (infoExpenses = response.CurrentDay).IsOneDayPeriod = true; break; default: throw new ApplicationException("Ќеожиданные данные!"); } // «ачитываем данные: // ...границы периода: infoExpenses.PeriodStartDate = (DateTime)resultDataTable.Rows[nRow]["PeriodStartDate"]; if (!infoExpenses.IsOneDayPeriod) { infoExpenses.PerionEndDate = (DateTime)resultDataTable.Rows[nRow]["PeriodEndDate"]; } // ...данные о продолжительности рабочего дн¤ (дл¤ корректного рассчета кол-ва дней в периоде) infoExpenses.ExpectedExpense.WorkDayDuration = (int)resultDataTable.Rows[nRow]["WorkDayDuration"]; infoExpenses.RealExpense.WorkDayDuration = infoExpenses.ExpectedExpense.WorkDayDuration; infoExpenses.RemainsExpense.WorkDayDuration = infoExpenses.ExpectedExpense.WorkDayDuration; // ...собственно данные о затратах: infoExpenses.ExpectedExpense.Duration = (int)resultDataTable.Rows[nRow]["ExpectedExpense"]; infoExpenses.RealExpense.Duration = (int)resultDataTable.Rows[nRow]["RealExpense"]; // ...остаток списаний имеет смысл только если реальные затраты меньше ожидаемых // (в остальных случа¤х остаток считаем равным нулю): if (infoExpenses.ExpectedExpense.Duration > infoExpenses.RealExpense.Duration) { infoExpenses.RemainsExpense.Duration = infoExpenses.ExpectedExpense.Duration - infoExpenses.RealExpense.Duration; } // ¬ычисл¤емые значени¤: // ...наименование периода: if (infoExpenses.IsOneDayPeriod) { infoExpenses.PeriodName = "—егодн¤"; } else { infoExpenses.PeriodName = getMonthName(infoExpenses.PeriodStartDate); } // ..."цвет" периода: дл¤ периода продолжительностью в мес¤ц // и однодневных периодов вычисл¤етс¤ по разному: if (infoExpenses.IsOneDayPeriod) { // "«еленый", если реальные затраты больше или равны ожидаемым: if (infoExpenses.RealExpense.Duration >= infoExpenses.ExpectedExpense.Duration) { infoExpenses.Completeness = ExpensesCompleteness.GreenZone; } // "—иний", если реальные затраты меньше ожидаемых менее чем на час (60 минут): else if (infoExpenses.ExpectedExpense.Duration - infoExpenses.RealExpense.Duration <= 60) { infoExpenses.Completeness = ExpensesCompleteness.BlueZone; } // " расна¤" зона - во всех остальных случа¤х: else { infoExpenses.Completeness = ExpensesCompleteness.RedZone; } } else { // "«еленый", если реальные затраты больше или равны ожидаемым: if (infoExpenses.RealExpense.Duration >= infoExpenses.ExpectedExpense.Duration) { infoExpenses.Completeness = ExpensesCompleteness.GreenZone; } // "—иний", если реальные затраты меньше ожидаемых менее чем на –јЅќ„»… ƒ≈Ќ№ (60 минут): else if (infoExpenses.ExpectedExpense.Duration - infoExpenses.RealExpense.Duration <= infoExpenses.RealExpense.WorkDayDuration) { infoExpenses.Completeness = ExpensesCompleteness.BlueZone; } // " расна¤" зона - во всех остальных случа¤х: else { infoExpenses.Completeness = ExpensesCompleteness.RedZone; } } } return(response); }
/// <summary> /// Выполнение команды /// </summary> /// <param name="request">Запрос команды, должен иметь тип XGetPropertyRequest</param> /// <param name="context">Контекст выполнения команды</param> /// <returns>XGetPropertyResponse</returns> public override XResponse Execute(XRequest request, IXExecutionContext context) { request.ValidateRequestType(typeof(XGetPropertyRequest)); return(this.Execute((XGetPropertyRequest)request, context)); }
private void SignIn() { string message = ""; string userName = XRequest.GetString("username"); string passWord = XRequest.GetString("password"); string code = XRequest.GetString("CCode"); string RememberMe = WebBase.GetFormString("RememberMe", ""); if (string.IsNullOrEmpty(code)) { message = ("请输入验证码!"); } else if (string.IsNullOrEmpty(userName)) { message = ("请输入代理账号!"); } else if (string.IsNullOrEmpty(passWord)) { message = ("请输入代理密码!"); } else { message = WebUtility.CheckValiDateCode(code); } if (string.IsNullOrEmpty(message)) { string lastLoginIp = ServerVariables.TrueIP; string lastLoginAddress = WebUtility.GetIPAddress(lastLoginIp); message = viviapi.BLL.User.Login.SignIn(0, 1, userName, Cryptography.MD5(passWord), lastLoginIp, lastLoginAddress); if (message == "success") { if (viviapi.BLL.User.Login.CurrentMember.UserType == UserTypeEnum.代理) { if (RememberMe != null) { HttpCookie hc = new HttpCookie("yklm_agent"); DateTime dt = DateTime.Now; TimeSpan ts = new TimeSpan(90, 0, 0, 0, 0); //过期时间为1分钟 hc.Expires = dt.Add(ts); //设置过期时间 hc.Values.Add("username", userName); Response.AppendCookie(hc); } else { HttpCookie hc = new HttpCookie("yklm_agent"); hc.Expires = DateTime.Now.AddMonths(-24); Response.Cookies.Add(hc); } } else { message = ("非代理权限,无法登录!"); } } } if (message == "success") { Response.Redirect("main.aspx"); } else { ShowMessageBox(message); } }
/// <summary> /// Выполнение команды /// </summary> public override XResponse Execute(XRequest request, IXExecutionContext context) { Trace.WriteLine("SendNotificationMailAsyncCommand::Enter"); try { if (!context.AsyncExecutionMode) { throw new ApplicationException("Эта команда должна выполняться строго в асинхронном режиме"); } // Читаем файл конфигурации string sSMTPHost = context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:smtp-host"); int nSMTPPort = 25; if (!string.IsNullOrEmpty(context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:smtp-port"))) { nSMTPPort = int.Parse(context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:smtp-port")); } int nSMTPTimeout = 300; if (!string.IsNullOrEmpty(context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:smtp-timeout"))) { nSMTPTimeout = int.Parse(context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:smtp-timeout")); } string sMailFrom = context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:mail-from"); string sAppInternalUri = context.Config.SelectNodeTextValue("it:app-data/it:system-location/it:internal-base-uri"); string sAppExternalUri = context.Config.SelectNodeTextValue("it:app-data/it:system-location/it:external-base-uri"); string sXslFileName = context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:stylesheet"); sXslFileName = Path.Combine(context.Config.BaseConfigPath, sXslFileName); int nDigestInterval = XmlConvert.ToInt32(context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:digest-interval")); int nMaxMessagesPerDigest = XmlConvert.ToInt32(context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:max-messages-per-digest")); int nMaxMessagesPerOnce = XmlConvert.ToInt32(context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:max-messages-per-once")); int nIdleTime = XmlConvert.ToInt32(context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:idle-time")); string sTestEmail = context.Config.SelectNodeTextValue("it:app-data/it:messaging/it:test-email"); Croc.IncidentTracker.Messaging.MessageGenerator gen = new MessageGenerator( new ApplicationInstallation[] { new ApplicationInstallation("Internal", sAppInternalUri), new ApplicationInstallation("External", sAppExternalUri) }, sXslFileName, nDigestInterval, nMaxMessagesPerDigest, nMaxMessagesPerOnce, context.Connection.Connection as SqlConnection, new MessageMailer( sSMTPHost, nSMTPPort, nSMTPTimeout, sMailFrom, sTestEmail ) ); try { // Такая команда может выполняться только одна! if (Interlocked.Increment(ref runningInstanceCount) > 1) { throw new ApplicationException("Команда рассылки сообщений может быть запущена только в одном экземпляре"); } Trace.WriteLine("SendNotificationMailAsyncCommand::Start"); // Синий цикл for (;;) { int nSentMessages = 0; try { nSentMessages = gen.Run(); } catch (Exception e) { if (e is ThreadAbortException) { break; } else { if (mySwitch.Enabled) { Trace.WriteLine(DateTime.Now + " - ошибка при рассылке сообщений " + Environment.NewLine + e); } } } try { // context.Suspend(new XResponse(), new TimeSpan(0,0, nSentMessages>0?0:nIdleTime,1,0)); } catch {}; } } finally { Interlocked.Decrement(ref runningInstanceCount); } } catch (Exception ex) { Trace.WriteLine(ex.ToString()); throw; } return(new XResponse()); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Request.Cookies["yklm_admin"] != null) { //UserNameBox.Value = Request.Cookies["yklm_admin"]["username"].ToString(); //password.Attributes["value"] = "**********"; } } if (XRequest.IsPost()) { string code = XRequest.GetString("CCode").ToUpper(); string secode = this.Session["CCode"].ToString().ToUpper(); if (this.Session["CCode"] == null) { AlertAndRedirect("验证码已失效!"); return; } else if (XRequest.GetString("CCode").ToUpper() != this.Session["CCode"].ToString().ToUpper()) { AlertAndRedirect("验证码错误!"); return; } else { string userName = XRequest.GetString("UserNameBox"); string passWord = Cryptography.MD5(XRequest.GetString("pas")); string RememberMe = WebBase.GetFormString("RememberMe", ""); Model.Manage manage = new viviapi.Model.Manage(); manage.username = userName; manage.password = passWord; manage.lastLoginTime = DateTime.Now; manage.lastLoginIp = viviLib.Web.ServerVariables.TrueIP; manage.LastLoginAddress = WebUtility.GetIPAddress(manage.lastLoginIp); manage.LastLoginRemark = WebUtility.GetIPAddressInfo(manage.lastLoginIp); string message = BLL.ManageFactory.SignIn(manage); if (manage.id > 0) { if (RememberMe != null) { HttpCookie hc = new HttpCookie("yklm_admin"); DateTime dt = DateTime.Now; TimeSpan ts = new TimeSpan(90, 0, 0, 0, 0); //过期时间为1分钟 hc.Expires = dt.Add(ts); //设置过期时间 hc.Values.Add("username", userName); Response.AppendCookie(hc); } else { HttpCookie hc = new HttpCookie("yklm_admin"); hc.Expires = DateTime.Now.AddMonths(-24); Response.Cookies.Add(hc); } AlertAndRedirect(string.Empty, "main.aspx"); } else { AlertAndRedirect(message); } } } }
/// <summary> /// Выполнение команды /// </summary> public override XResponse Execute(XRequest request, IXExecutionContext context) { return(new XResponse()); }
/// <summary> /// Метод запуска операции на выполнение, «входная» точка операции /// </summary> /// <param name="request">Запрос на выполнение операции</param> /// <param name="context">Контекст выполнения операции</param> /// <returns>Результат выполнения</returns> public override XResponse Execute(XRequest request, IXExecutionContext context) { new JobsLoop().Run(); return(new XResponse()); }
/// <summary> /// Запускает планировщик /// </summary> public static void Run() { XRequest request = new XRequest("JobsScheduler"); XFacade.Instance.ExecCommandAsync(request); }
/// <summary> /// ћетод запуска операции на выполнение, <входна¤> точка операции /// ѕ≈–≈√–”∆≈ЌЌџ…, —“–ќ√ќ “»ѕ»«»–ќ¬јЌЌџ… ћ≈“ќƒ /// ¬џ«џ¬ј≈“—я яƒ–ќћ ј¬“ќћј“»„≈— » /// </summary> /// <param name="request">«апрос на выполнение операции</param> /// <param name="context"> онтекст выполнени¤ операции</param> /// <returns>–езультат выполнени¤</returns> public GetCurrentUserNavInfoResponse Execute(XRequest request, IXExecutionContext context) { // –езультат: GetCurrentUserNavInfoResponse response = new GetCurrentUserNavInfoResponse(); // —разу зададим значени¤ по умолчанию: response.NavigationInfo.ShowExpensesPanel = true; response.NavigationInfo.ExpensesPanelAutoUpdateDelay = 0; response.NavigationInfo.UseOwnStartPage = false; // ќписание пользловател¤: ITUser user = (ITUser)XSecurityManager.Instance.GetCurrentUser(); // ... если пользователь Ќ≈ аутентифицирован или если это —»—“≈ћЌџ… // —≈–¬»—, то возвращаем "пустые" данные; Web-сторона анализирует // это отдельно: if (!user.IsAuthenticated || user.IsServiceAccount) { return(response); } // #1: Ќј—“–ќ… » ѕ–ќ‘»Ћя ѕќЋ№«ќ¬ј“≈Ћя // -- если пользователь аутентифицирован // -- если это не системный сервис DomainObjectData dodUserProfile = getUserProfile(user.SystemUserID, context.Connection); if (null != dodUserProfile) { // «ачитаем значени¤ свойств объекта профил¤ и перепишем значени¤ // в объект-опсатель, но только если они отличны от NULL (иначе // будут действовать значени¤ по умолчанию, заданые выше): object oValue = dodUserProfile.GetLoadedPropValue("ShowExpensesPanel"); if (DBNull.Value != oValue) { response.NavigationInfo.ShowExpensesPanel = (bool)oValue; } oValue = dodUserProfile.GetLoadedPropValue("ExpensesPanelAutoUpdateDelay"); if (DBNull.Value != oValue) { response.NavigationInfo.ExpensesPanelAutoUpdateDelay = (int)oValue; } oValue = dodUserProfile.GetLoadedPropValue("StartPage"); if (DBNull.Value != oValue) { response.NavigationInfo.UseOwnStartPage = true; response.NavigationInfo.OwnStartPage = (StartPages)oValue; } } else { // ƒанные по "своей" странице не заданы - по умолчанию // идем на страницу "мои инциденты" response.NavigationInfo.UseOwnStartPage = true; response.NavigationInfo.OwnStartPage = StartPages.CurrentTaskList; } // #2: јЌјЋ»« ѕ–»¬»Ћ≈√»… ѕќЋ№«ќ¬ј“≈Ћя - формирование доступных элементов навигационной панели: // -- если пользователь аутентифицирован // -- если это не системный сервис // ƒобавл¤ем идентификаторы доступных элементов навигационной панели: // ...домашн¤¤ станица - доступна всегда response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_HomePage, String.Empty); // ...иерархи¤ " лиенты-проекты" - доступна всегда response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_CustomerActivityTree, String.Empty); // ...список проектов - доступен всегда response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_ActivityList, String.Empty); // ...список "мои инциденты" - доступен всегда response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_CurrentTasks, String.Empty); // ...список "поиск инцидентов" - доступен всегда response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_IncidentList, String.Empty); // ...список "списани¤" - доступен всегда, но дл¤ разных привилегий открывает разные URL: if (user.HasPrivilege(SystemPrivilegesItem.ManageTimeLoss.Name) || user.IsUnrestricted) { response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_TimeLossSearchingList, "x-list.aspx?OT=TimeLoss&METANAME=TimeLossSearchingListAdm"); } else { response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_TimeLossSearchingList, "x-list.aspx?OT=TimeLoss&METANAME=TimeLossSearchingList"); } // ...отчеты - доступны всем: response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_Reports, String.Empty); // ...иерархи¤ "структура компаний" - доступна всем: response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_OrgStructure, String.Empty); // ...функци¤ "поиск инцидента" - доступна всем: response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_FindIncident, String.Empty); // навигационные элементы —”“а доступны только если есть привилеги¤ "доступ в —”“" if (user.HasPrivilege(SystemPrivilegesItem.AccessIntoTMS.Name) || user.IsUnrestricted) { // ...домашн¤¤ страница —”“ response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.TMS_HomePage, String.Empty); // ...список тендеров response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.TMS_TenderList, String.Empty); } // ...административный интерфейс доступен только "неограниченному" пользователю if (user.HasPrivilege(SystemPrivilegesItem.ManageRefObjects.Name) || user.IsUnrestricted) { response.NavigationInfo.UsedNavigationItems.Add(NavigationItemIDs.IT_Administation, String.Empty); } // #3: орреци¤ стартовой страницы: если заданна¤ страница недоступна, // то сбросим указание "собственной" старотовой страницы (пользователь // попадет на "домашнюю": if (response.NavigationInfo.UseOwnStartPage) { string sOwnStartPageID = UserNavigationInfo.StartPage2NavItemID(response.NavigationInfo.OwnStartPage); if (null != sOwnStartPageID) { if (null == response.NavigationInfo.UsedNavigationItems.GetValues(sOwnStartPageID)) { sOwnStartPageID = null; } } if (null == sOwnStartPageID) { response.NavigationInfo.UseOwnStartPage = false; } } return(response); }
/// <summary> /// Метод запуска операции на выполнение, <входная> точка операции /// ПЕРЕГРУЖЕННЫЙ, СТРОГО ТИПИЗИРОВАННЫЙ МЕТОД /// ВЫЗЫВАЕТСЯ ЯДРОМ АВТОМАТИЧЕСКИ /// </summary> /// <param name="request">Запрос на выполнение операции</param> /// <param name="context">Контекст выполнения операции</param> /// <returns>Результат выполнения</returns> public XGetObjectResponse Execute(XRequest request, IXExecutionContext context) { // #1: Определяем идентификатор текущего пользователя // Используем внутренние механизмы аутентификации ITUser user = (ITUser)XSecurityManager.Instance.GetCurrentUser(); XParamsCollection datasourceParams = new XParamsCollection(); datasourceParams.Add("UserID", user.SystemUserID); // #2: Найдем идентификатор объекта - профиля, связанного с текущим // пользователем: испоьзуем для этого тривиальный запрос, заданный // в "источнике данных" XDataSource dataSource = context.Connection.GetDataSource(DEF_DATASOURCE_NAME); dataSource.SubstituteNamedParams(datasourceParams, true); dataSource.SubstituteOrderBy(); object oResult = dataSource.ExecuteScalar(); // Ожидается, что в результате мы получаем GUID: Guid uidResult = Guid.Empty; if (null != oResult && DBNull.Value != oResult) { uidResult = context.Connection.Behavior.CastGuidValueFromDB(oResult); } // #3: Загрузка данных профиля и всех сопутствующих объектов: DomainObjectDataSet dataSet = new DomainObjectDataSet(context.Connection.MetadataManager.XModel); DomainObjectData xobj; if (Guid.Empty != uidResult) { // Объект профиля уже есть; загружаем существующий xobj = dataSet.Load(context.Connection, "UserProfile", uidResult); } else { xobj = dataSet.CreateNew("UserProfile", false); // В новом объекте описания профиля сразу проставляем заглушку на текущего пользователя xobj.SetUpdatedPropValue("SystemUser", user.SystemUserID); // Задаем "собственную" стартовую страницу по умолчанию - список текущих инцидентов xobj.SetUpdatedPropValue("StartPage", StartPages.CurrentTaskList); } // Догружаем данные пользователя (SystemUser) и сотрудника (Employee) dataSet.PreloadProperty(context.Connection, xobj, "SystemUser.Employee"); // Сериализуем датасет с загруженными объектами в формат для Web-клиента DomainObjectDataXmlFormatter formatter = new DomainObjectDataXmlFormatter(context.Connection.MetadataManager); // ... при этом учитываем, что в сериализованные данные должны так же попасть // данные с описанием пользователя и сотрудника: XmlElement xmlObject = formatter.SerializeObject(xobj, new string[] { "SystemUser.Employee" }); if (Guid.Empty != uidResult) { // ..обработаем объект и все вложенные объекты в прогруженных свойства, расставим атрибуты ограничения доступа XmlObjectRightsProcessor.ProcessObject(xobj, xmlObject); } return(new XGetObjectResponse(xmlObject)); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { setPower(); if (!this.IsPostBack) { try { loginip = currentManage.lastLoginIp; logintime = viviLib.TimeControl.FormatConvertor.DateTimeToTimeString(currentManage.lastLoginTime.Value); username = currentManage.username; //paysouid.InnerText = "欢迎使用第三方支付平台"; //未审核商户数量 List <int> list = viviapi.BLL.User.Factory.GetUsers(" status=1"); uncheckeduserCount = list.Count; DataSet ds = viviapi.BLL.Order.OrderIncome.Instance.TodayIncomeStat(-1); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { DataRow row = ds.Tables[0].Rows[0]; int bankcount = 0; int cardcount = 0; if (row["bankcount"] != DBNull.Value) { bankcount = Convert.ToInt32(row["bankcount"].ToString()); } if (row["cardcount"] != DBNull.Value) { cardcount = Convert.ToInt32(row["cardcount"].ToString()); } orderCount = bankcount + cardcount; } WebInfo webInfo = WebInfoFactory.GetWebInfoByDomain(XRequest.GetHost()); if (webInfo != null) { webdomain = webInfo.Domain; paydomain = webInfo.PayUrl; } //DataSet ds = viviapi.BLL.Order.OrderIncome.Instance. //if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) //{ // DataRow row = ds.Tables[0].Rows[0]; // int bankcount = 0; // int cardcount = 0; // if (row["bankcount"] != DBNull.Value) // { // //ordercount.InnerText = row["bankcount"].ToString(); // bankcount = Convert.ToInt32(row["bankcount"]); // } // if (row["bankamt"] != DBNull.Value) // //totalmoney.InnerText = string.Format("{0:f2}", row["bankamt"]); // if (row["cardcount"] != DBNull.Value) // { // //succordercount.InnerText = row["cardcount"].ToString(); // cardcount = Convert.ToInt32(row["cardcount"]); // } // if (row["cardamt"] != DBNull.Value) // //succtotalmoney.InnerText = string.Format("{0:f2}", row["cardamt"]); // Span1.InnerText = (bankcount + cardcount).ToString(); //} } catch { } } }
public static string GetMessage (IntPtr Display, IntPtr ResourceID, IntPtr Serial, byte ErrorCode, XRequest RequestCode, byte MinorCode) { StringBuilder sb; string x_error_text; string error; sb = new StringBuilder (160); XGetErrorText (Display, ErrorCode, sb, sb.Capacity); x_error_text = sb.ToString (); error = String.Format ("\n Error: {0}\n Request: {1:D} ({2})\n Resource ID: 0x{3:x}\n Serial: {4}", x_error_text, RequestCode, RequestCode, ResourceID.ToInt32 (), Serial); return error; }