diff --git a/插件库/Lskj.Main/Control/MainPanelControlEx.cs b/插件库/Lskj.Main/Control/MainPanelControlEx.cs
index e6da7ac..56e8e14 100644
--- a/插件库/Lskj.Main/Control/MainPanelControlEx.cs
+++ b/插件库/Lskj.Main/Control/MainPanelControlEx.cs
@@ -247,13 +247,13 @@ namespace Lskj.Main.Control
ContextMenuStrip headMenuStrip = new ContextMenuStrip();
headMenuStrip.Opening += HeadMenuStripOpening;
ToolStripMenuItem removeOtherItem = new ToolStripMenuItem();
- removeOtherItem.Text = "关闭其他";
+ removeOtherItem.Text = LanguageTranslation.Translatable ? LanguageTranslation.GetTranslatedText("关闭其他") : "关闭其他";
removeOtherItem.Click += new EventHandler(RemoveItemClick);
ToolStripMenuItem removeLeftItem = new ToolStripMenuItem();
- removeLeftItem.Text = "关闭左侧";
+ removeLeftItem.Text = LanguageTranslation.Translatable ? LanguageTranslation.GetTranslatedText("关闭左侧") : "关闭左侧";
removeLeftItem.Click += new EventHandler(RemoveItemClick);
ToolStripMenuItem removeRightItem = new ToolStripMenuItem();
- removeRightItem.Text = "关闭右侧";
+ removeRightItem.Text = LanguageTranslation.Translatable ? LanguageTranslation.GetTranslatedText("关闭右侧") : "关闭右侧";
removeRightItem.Click += new EventHandler(RemoveItemClick);
headMenuStrip.Items.Add(removeOtherItem);
headMenuStrip.Items.Add(removeLeftItem);
@@ -292,7 +292,7 @@ namespace Lskj.Main.Control
this.pl_top_left.Visible = false;
this.menuMain.Visible = false;
this.lblSubTitle.Visible = false;
- this.toolStripLabel1.Text = "版本号:" + SystemInfo.Instance.Version;
+ this.toolStripLabel1.Text = LanguageTranslation.Translatable ? LanguageTranslation.GetTranslatedText("版本号") + ":" + SystemInfo.Instance.Version : "版本号:" + SystemInfo.Instance.Version;
this.SetDesktop();
this.SetFormObject();
this.SetAccounts();//设置账套
@@ -455,11 +455,12 @@ namespace Lskj.Main.Control
private void SetFormObject()
{
this.lbUserName.Text = ERPInfo.Instance.UserName;
- this.tsmi_userName.Text = "用户名:" + ERPInfo.Instance.UserName;
- this.tsmi_account_book.Text = "账套:" + ERPInfo.Instance.AccountBook;
+
+ this.tsmi_userName.Text = LanguageTranslation.Translatable ? LanguageTranslation.GetTranslatedText("用户名") + ":" + ERPInfo.Instance.UserName : "用户名:" + ERPInfo.Instance.UserName;
+ this.tsmi_account_book.Text = LanguageTranslation.Translatable ? LanguageTranslation.GetTranslatedText("账套") + ":" + ERPInfo.Instance.AccountBook : "账套:" + ERPInfo.Instance.AccountBook;
this.tsmi_version.Text = string.Format("Version:{0}", Assembly.GetExecutingAssembly().GetName().Version + "");
string updateTime = IniHelper.Read("ApplicationUpdateTime");
- this.tsmi_upTime.Text = string.Format("更新时间:{0}", updateTime);
+ this.tsmi_upTime.Text = LanguageTranslation.Translatable ? LanguageTranslation.GetTranslatedText("更新时间") + ":" + updateTime : "更新时间:" + updateTime;
//this.lblSubTitle.Text = !string.IsNullOrEmpty(ERPInfo.Instance.SubSysName) ? SystemInfo.Instance.ClientName + "-" + ERPInfo.Instance.SubSysName : SystemInfo.Instance.ClientName;
this.lblSubTitle.Text = (!string.IsNullOrEmpty(ERPInfo.Instance.SubSysName) && SystemInfo.Instance.ShowSubSysName) ? SystemInfo.Instance.ClientName + "-" + ERPInfo.Instance.SubSysName : SystemInfo.Instance.ClientName;
@@ -470,6 +471,16 @@ namespace Lskj.Main.Control
this.menuMain.Visible = true;
this.lblSubTitle.Visible = SystemInfo.Instance.HideSubtitle ? false : true;
this.ResetPanelWidth();
+
+ if (LanguageTranslation.Translatable)
+ {
+ foreach (XtraTabPage page in tabMain.TabPages)
+ {
+ string text = page.Text;
+ text = LanguageTranslation.GetTranslatedText(text.Trim());
+ if (!text.Equals(page.Text.Trim())) page.Text = text;
+ }
+ }
}
///
/// 说明:子系统快捷窗口
@@ -889,7 +900,7 @@ namespace Lskj.Main.Control
string menuCaption = item["menucaption"] + "";
string menuid = item["menuid"] + "";
string menuposition = item.Table.Columns.Contains("menuposition") ? item["menuposition"] + "" : "0";
- if (menuCaption.Equals(SystemInfo.Instance.SplitBar)) continue;
+ if (!string.IsNullOrWhiteSpace(SystemInfo.Instance.SplitBar) && menuCaption.StartsWith(SystemInfo.Instance.SplitBar)) continue;
// 加载左侧菜单
if (menuStruct.Length == 2)
{
@@ -937,8 +948,8 @@ namespace Lskj.Main.Control
#region 添加右侧菜单模块
if (this._allMenus.Columns.Contains("menuposition") && (SystemInfo.Instance.IsOpenWork || SystemInfo.Instance.ShowGallerysFromMenu) && !SystemInfo.Instance.HideGallerys)
{
- List layoutTopDataRows = rows.Where(n => (n["menuposition"] + "").Equals("1") && (n["menustruct"] + "").Length == 4 && (n["menustruct"] + "").Substring(0, 2).Equals(menuStruct) && !(n["menucaption"] + "").Equals(SystemInfo.Instance.SplitBar)).ToList();
- List layoutBotDataRows = rows.Where(n => (n["menuposition"] + "").Equals("2") && (n["menustruct"] + "").Length == 4 && (n["menustruct"] + "").Substring(0, 2).Equals(menuStruct) && !(n["menucaption"] + "").Equals(SystemInfo.Instance.SplitBar)).ToList();
+ List layoutTopDataRows = rows.Where(n => (n["menuposition"] + "").Equals("1") && (n["menustruct"] + "").Length == 4 && (n["menustruct"] + "").Substring(0, 2).Equals(menuStruct) && !(!string.IsNullOrWhiteSpace(SystemInfo.Instance.SplitBar) && (n["menucaption"] + "").StartsWith(SystemInfo.Instance.SplitBar))).ToList();
+ List layoutBotDataRows = rows.Where(n => (n["menuposition"] + "").Equals("2") && (n["menustruct"] + "").Length == 4 && (n["menustruct"] + "").Substring(0, 2).Equals(menuStruct) && !(!string.IsNullOrWhiteSpace(SystemInfo.Instance.SplitBar) && (n["menucaption"] + "").StartsWith(SystemInfo.Instance.SplitBar))).ToList();
TableLayoutPanel topLayoutPanel = new TableLayoutPanel();
topLayoutPanel.Dock = DockStyle.Fill;
topLayoutPanel.RowCount = layoutTopDataRows.Count() + 1;
@@ -1034,11 +1045,11 @@ namespace Lskj.Main.Control
List groupDataRows = new List();
if (this._allMenus.Columns.Contains("menuposition"))
{
- groupDataRows = rows.Where(n => (n["menuposition"] + "").Equals("0") && (n["menustruct"] + "").Length == 4 && (n["menustruct"] + "").Substring(0, 2).Equals(menuStruct) && !(n["menucaption"] + "").Equals(SystemInfo.Instance.SplitBar)).ToList();
+ groupDataRows = rows.Where(n => (n["menuposition"] + "").Equals("0") && (n["menustruct"] + "").Length == 4 && (n["menustruct"] + "").Substring(0, 2).Equals(menuStruct) && !(!string.IsNullOrEmpty(SystemInfo.Instance.SplitBar) && (n["menucaption"] + "").StartsWith(SystemInfo.Instance.SplitBar))).ToList();
}
else
{
- groupDataRows = rows.Where(n => (n["menustruct"] + "").Length == 4 && (n["menustruct"] + "").Substring(0, 2).Equals(menuStruct) && !(n["menucaption"] + "").Equals(SystemInfo.Instance.SplitBar)).ToList();
+ groupDataRows = rows.Where(n => (n["menustruct"] + "").Length == 4 && (n["menustruct"] + "").Substring(0, 2).Equals(menuStruct) && !(!string.IsNullOrEmpty(SystemInfo.Instance.SplitBar) && (n["menucaption"] + "").StartsWith(SystemInfo.Instance.SplitBar))).ToList();
}
foreach (DataRow dataRow in groupDataRows)
{
@@ -1697,7 +1708,7 @@ namespace Lskj.Main.Control
string menuCaption = row["MenuCaption"] + "";
ToolStripMenuItem subItem = new ToolStripMenuItem(menuCaption);
subItem.Font = new Font("微软雅黑", 10);
- if (menuCaption.Equals(SystemInfo.Instance.SplitBar)) subItem.Enabled = false;
+ if (!string.IsNullOrEmpty(SystemInfo.Instance.SplitBar) && menuCaption.StartsWith(SystemInfo.Instance.SplitBar)) subItem.Enabled = false;
// 功能模块
try
{
@@ -1718,7 +1729,7 @@ namespace Lskj.Main.Control
childItem.Text = child["MenuCaption"] + "";
childItem.Font = new Font("微软雅黑", 10);
childItem.Tag = new string[] { child["DllFileName"] + "", child["PurviewId"] + "", child["MenuId"] + "", child["UrlParams"] + "", subSysId + "", child["MenuCaption"] + "" };
- if (!childItem.Text.Equals(SystemInfo.Instance.SplitBar))
+ if (!(!string.IsNullOrEmpty(SystemInfo.Instance.SplitBar) && childItem.Text.StartsWith(SystemInfo.Instance.SplitBar)))
{
childItem.Click += OnItemClick; ;
}
@@ -3525,7 +3536,7 @@ namespace Lskj.Main.Control
{
string menuId = lueUserName.EditValue;
- if (lueUserName._popup.GridViewObj.GetFocusedDataRow()==null)
+ if (lueUserName._popup.GridViewObj.GetFocusedDataRow() == null)
{
menuId = "";
}
diff --git a/插件库/Lskj.Main/FrmConfigLocal.cs b/插件库/Lskj.Main/FrmConfigLocal.cs
index 9f86b2a..e9849ee 100644
--- a/插件库/Lskj.Main/FrmConfigLocal.cs
+++ b/插件库/Lskj.Main/FrmConfigLocal.cs
@@ -233,6 +233,11 @@ namespace Lskj.Main
DBConfig.Instance.Connection = Connection;
if (DBConfig.Instance.CreateConnection(Connection))
{
+ if (DelphiHelper.Delphi_Init(new StringBuilder(DBConfig.Instance.GetDelphiConnection(DBConfig.Instance.dephiConnection))) == 0)
+ {
+ MessageUtil.Show(ResourceKeys.UnConnectServer + "[By Delphi]");
+ return;
+ }
if (isSave)
{
if (!string.IsNullOrEmpty(this.txtZTName.Text))
@@ -246,34 +251,4 @@ namespace Lskj.Main
DBConfig.Instance.WriteConfig("LocalLastIP", this.txtIP.Text);
DBConfig.Instance.WriteConfig("LocalLastPort", this.txtPort.Text);
DBConfig.Instance.WriteConfig("LocalLastPortName", this.txtZTName.Text);
- this.DialogResult = DialogResult.OK;
- this.Close();
- }
- else
- {
- MessageUtil.Show("请设置账套名!");
- }
- }
- else
- {
- MessageUtil.Show(ResourceKeys.ConnectSuccess);
- }
- }
- else
- {
- MessageUtil.Show(ResourceKeys.ConnectFault);
- }
- }
- else
- {
- MessageUtil.Show(ResourceKeys.ConnectFault);
- }
- //IniHelper.Write("SystemResources.ini", "FrmConfigFlag", "1");
- }
- catch (Exception)
- {
- MessageUtil.Show(ResourceKeys.ConnectFault);
- }
- }
- }
-}
+ t
\ No newline at end of file
diff --git a/插件库/Lskj.Main/FrmConfigSet.cs b/插件库/Lskj.Main/FrmConfigSet.cs
index 834d053..f7ff5e3 100644
--- a/插件库/Lskj.Main/FrmConfigSet.cs
+++ b/插件库/Lskj.Main/FrmConfigSet.cs
@@ -71,6 +71,13 @@ namespace Lskj.Main
if (DBConfig.Instance.CreateConnection(Connection))
{
DBConfig.Instance.Connection = Connection;
+
+ if (DelphiHelper.Delphi_Init(new StringBuilder(DBConfig.Instance.GetDelphiConnection(DBConfig.Instance.dephiConnection))) == 0)
+ {
+ MessageUtil.Show(ResourceKeys.UnConnectServer + "[By Delphi]");
+ return;
+ }
+
this.DialogResult = DialogResult.OK;
IniHelper.Write("SystemResources.ini", "FrmConfigFlag", "1");
this.Close();
diff --git a/插件库/Lskj.Main/FrmLogin.cs b/插件库/Lskj.Main/FrmLogin.cs
index 6871870..034e188 100644
--- a/插件库/Lskj.Main/FrmLogin.cs
+++ b/插件库/Lskj.Main/FrmLogin.cs
@@ -444,6 +444,7 @@ namespace Lskj.Main
string userName = lueUserName.Text.Trim();
string password = txtPassword.Text.Trim();
string LoginAccount = string.Empty;
+ string ErrorLogText= string.Empty;//日志记录信息
// 设置登录用户信息
bool isConstraint = chkLogin.Checked;
if (string.IsNullOrWhiteSpace(userName))
@@ -677,7 +678,8 @@ namespace Lskj.Main
ERPInfo.Instance.LanguageName = this.language.Text;
LanguageTranslation.GetLanguageComparisonTable();//获取翻译表数据
- Localizer.Active = new XtraLocalizer();
+ if (!string.IsNullOrWhiteSpace(ERPInfo.Instance.LanguageName)&& !ERPInfo.Instance.LanguageName.Equals("中文"))Localizer.Active = new XtraLocalizer();
+
this.SetDelphiDllParams(); // 设置调用delphi参数
@@ -725,6 +727,8 @@ namespace Lskj.Main
}
break;
case 1: // 密码不正确
+ ErrorLogText = string.Format("登录用户Id:{0}\r\n登录用户名称:{1}\r\n输入密码:{2}", userId, userName, password);
+ LogUtil.WriteDebug("", "登录失败", ErrorLogText, "");
MessageUtil.Show(ResourceKeys.NameOrPasswordError);
break;
case 2: // 已有此用户登录
@@ -735,6 +739,8 @@ namespace Lskj.Main
break;
case -1: // 登录失败
default:
+ ErrorLogText = string.Format("登录用户Id:{0}\r\n登录用户名称:{1}\r\n输入密码:{2}", userId, userName, password);
+ LogUtil.WriteDebug("", "登录失败", ErrorLogText, "");
MessageUtil.Show(ResourceKeys.LoginFault);
break;
}
@@ -1070,6 +1076,10 @@ namespace Lskj.Main
this.chkUpdate.Checked = DBConfig.Instance.UpdateSet;
this.chkClient.Checked = DBConfig.Instance.SmallClient;
this.chkNotice.Checked = DBConfig.Instance.NoticeClient;
+ if (SystemInfo.Instance.AllowForgetPwd)
+ {
+ this.forgetPwd.Visible = true;//允许修改密码
+ }
if (SystemInfo.Instance.AutomaticUpdates)
{
this.chkUpdate.Checked = true;
@@ -1090,7 +1100,7 @@ namespace Lskj.Main
this.chkRemPwd.Enabled = false;//记住密码禁止修改
}
- if (SystemInfo.Instance.HiddenIntelligentClient|| SystemInfo.Instance.HiddenNotification || SystemInfo.Instance.HiddenServerSetting)
+ if (SystemInfo.Instance.HiddenIntelligentClient || SystemInfo.Instance.HiddenNotification || SystemInfo.Instance.HiddenServerSetting)
{
List controls = new List();
//隐藏 智能客户端
@@ -1117,15 +1127,15 @@ namespace Lskj.Main
controls.Add(this.pictureBox1);
foreach (System.Windows.Forms.Control item in controls)
{
- if (item.Visible)
+ if (item.Visible)
{
item.Location = new Point(X, item.Location.Y);
- X= item.Location.X + item.Width + 10;
+ X = item.Location.X + item.Width + 10;
if (item is PictureBox) this.btnSetConfig.Location = new Point(item.Location.X + item.Width, this.btnSetConfig.Location.Y);
}
}
}
-
+
this.BackgroundImage = BitMapHelper.getBitmap(BitMapEnum.loginbg);
this.lblCopyright.Text = string.IsNullOrEmpty(SystemInfo.Instance.CopyRight) ? this.lblCopyright.Text : SystemInfo.Instance.CopyRight;
@@ -1659,7 +1669,7 @@ namespace Lskj.Main
if (chkRemPwd.Checked)
{
this.txtPassword.Text = PwdState[1];
- if(PwdState.Count() > 2) this.txtPassword.Text=string.Join("^", PwdState.Skip(1));
+ if (PwdState.Count() > 2) this.txtPassword.Text = string.Join("^", PwdState.Skip(1));
isClear = false;
this.lueUserName.Text = UserName;
this.txtPassword.Focus();
@@ -1821,29 +1831,4 @@ namespace Lskj.Main
///
/// 忘记密码点击时
///
- ///
- ///
- private void OnForgetPwdClick(object sender, EventArgs e)
- {
- using (BaseForm baseForm = new BaseForm())
- {
- FrmWebBrowser frmWebBrowser = new FrmWebBrowser();
- frmWebBrowser.Dock = DockStyle.Fill;
- baseForm.Controls.Add(frmWebBrowser);
- baseForm.Text = "忘记密码";
- baseForm.Size = new Size(1000, 600);
- string forgetPwdUrl = "";
- if (SystemInfo.Instance.OAUrl.EndsWith("/"))
- {
- forgetPwdUrl = $"{SystemInfo.Instance.OAUrl}lserp_v8/index.html?verify=1";
- }
- else
- {
- forgetPwdUrl = $"{SystemInfo.Instance.OAUrl}/lserp_v8/index.html?verify=1";
- }
- frmWebBrowser.FrmLoad(forgetPwdUrl, 1, false);
- baseForm.ShowDialog();
- }
- }
- }
-}
\ No newline at end of file
+ ///
- /// 说明:取消修改
- /// 创建人:龚宇超
- /// 创建日期:2017-08-12
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private void btnExit_Click(object sender, EventArgs e)
- {
- this.Close();
- }
- }
-}
+ else
+ {
+ int result = MainImpl.ForceUpdatePassword(UserId, pass_after);
+ switch (result)
+ {
+ case 0: // 用户不存在
+ MessageUtil.Show(ResourceKeys.UserNotFound);
+ break;
+ case 1:
+ MessageUtil.Show(ResourceKeys.PasswordUpdateSuccess);
+ ERPInfo.Instance.Password = SHAHelper.EncryptPassword(pass_after);
+ ERPInfo.Instance.InPassWord = pass_after;
+ MainImpl.RecordPassword(pass_after);
+ this.
\ No newline at end of file
diff --git a/插件库/Lskj.Main/FrmUpdatePassword.cs b/插件库/Lskj.Main/FrmUpdatePassword.cs
index f5e7ea4..17d0d15 100644
--- a/插件库/Lskj.Main/FrmUpdatePassword.cs
+++ b/插件库/Lskj.Main/FrmUpdatePassword.cs
@@ -86,54 +86,46 @@ namespace Lskj.Main
return;
}
- int result = MainImpl.UpdatePassword(ERPInfo.Instance.UserId, beforePass, afterPass);
- switch (result)
+ if (BaseImpl.HasExistsStoredProcedure("pr_sytemchangepsw"))
{
- case 0: // 用户不存在
- MessageUtil.Show(ResourceKeys.UserNotFound);
- break;
- case 1: // 修改成功
- MessageUtil.Show(ResourceKeys.PasswordUpdateSuccess);
- if (SystemInfo.Instance.UpdPwdAllSystem)
- {
- if (MainImpl.UpdatePasswordAllSubsystem(ERPInfo.Instance.UserId, afterPass))
- {
- MessageUtil.Show("用户对应账套密码修改成功");
- }
- else
- {
- MessageUtil.Show("用户对应账套密码修改失败");
- }
- }
- Manager.StartForm();
- break;
- case 2: // 旧密码不正确.
- MessageUtil.Show(ResourceKeys.OldPasswordFault);
- break;
+ string tipMsg = string.Empty;
+ int result = MainImpl.ChangePassword(ERPInfo.Instance.UserId, afterPass, out tipMsg);
+ switch (result)
+ {
+ case 1: // 修改成功
+ MessageUtil.Show(ResourceKeys.PasswordUpdateSuccess);
+ MainImpl.RecordPassword(afterPass);
+ Manager.ReLogin();
+ break;
+ default:
+ MessageUtil.Show("修改失败:"+ tipMsg);
+ break;
+ }
}
- }
- catch (Exception ex)
- {
- string Message = ErrorMessage.PromptErrorMessage(ex);
- MessageUtil.Show("修改密码出错!" + Message);
- }
-
- }
-
- ///
- /// 说明:退出修改
- /// 创建人:龚宇超
- /// 创建日期:2017-08-15
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private void btnExit_Click(object sender, EventArgs e)
- {
- this.Close();
- }
- }
-}
+ else
+ {
+ int result = MainImpl.UpdatePassword(ERPInfo.Instance.UserId, beforePass, afterPass);
+ switch (result)
+ {
+ case 0: // 用户不存在
+ MessageUtil.Show(ResourceKeys.UserNotFound);
+ break;
+ case 1: // 修改成功
+ MessageUtil.Show(ResourceKeys.PasswordUpdateSuccess);
+ if (SystemInfo.Instance.UpdPwdAllSystem)
+ {
+ if (MainImpl.UpdatePasswordAllSubsystem(ERPInfo.Instance.UserId, afterPass))
+ {
+ MessageUtil.Show("用户对应账套密码修改成功");
+ }
+ else
+ {
+ MessageUtil.Show("用户对应账套密码修改失败");
+ }
+ }
+ MainImpl.RecordPassword(afterPass);
+ Manager.ReLogin();
+ //Manager.ReStartMain(true);
+ break;
+ case 2: // 旧密码不正确.
+ Messag
\ No newline at end of file
diff --git a/插件库/Lskj.Main/Model/Manager.cs b/插件库/Lskj.Main/Model/Manager.cs
index c58a754..84b0931 100644
--- a/插件库/Lskj.Main/Model/Manager.cs
+++ b/插件库/Lskj.Main/Model/Manager.cs
@@ -1014,7 +1014,7 @@ namespace Lskj.Main.Model
bool hasEn = false;
if (urlParams.Length > 1)
{
- string[] queryParams = urlParams[1].Split('&');
+ string[] queryParams = string.Join("?", urlParams.Skip(1)).Split('&');
List qpLS = new List();
Hashtable pms = new Hashtable();
hasEn = queryParams.Any(str => str.Trim().StartsWith(enKey, StringComparison.OrdinalIgnoreCase));
@@ -1025,9 +1025,24 @@ namespace Lskj.Main.Model
{
if (hasEn && eqParams[0].ToLower() == enKey)
{
- enVal = eqParams[1];
+ enVal = string.Join("=", eqParams.Skip(1));
continue;
}
if (hasEn || eqParams[0].ToLower() == "username" || eqParams[0].ToLower() == "password")
{
- pms.Add(eqParams[0
\ No newline at end of file
+ pms.Add(eqParams[0], string.Join("=", eqParams.Skip(1)));
+ }
+ else
+ {
+ qpLS.Add(string.Format("{0}={1}", eqParams[0], HttpUtility.UrlEncode(HttpUtility.UrlDecode(string.Join("=", eqParams.Skip(1)))).Replace("%5c", "/").Replace("%2f", "/").Replace("//", "/")));
+ }
+ }
+ else
+ {
+ }
+ }
+ if (pms.Count > 0)
+ {
+ DateTime dateTime = DateTime.Now.AddDays(1);
+ DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+
\ No newline at end of file