/*******************************************************************************
* Copyright(c) 2014 dongke All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:ServiceResultManager.cs
* 2.功能描述:服务返回实体共通处理
* 编辑履历:
* 作者 日期 版本 修改内容
* 陈晓野 2015/03/27 1.00 新建
*******************************************************************************/
using System.Diagnostics;
using System.Windows.Forms;
using Dongke.IBOSS.PRD.Basics.BaseControls;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.Basics.Library;
using Dongke.IBOSS.PRD.Client.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels;
namespace Dongke.IBOSS.PRD.Client.Controls
{
#region 异步处理的委托
///
/// 异步处理
///
///
public delegate T DKAsyncMethod();
#endregion
///
/// 服务返回实体共通处理
///
public static class ServiceResultManager
{
public enum ExitType
{
None,
ReLogin,
Close,
}
public static void Invoke(Form owner, ServiceResultEntity sre)
{
if (sre == null || sre.Status > Constant.ServiceResultStatus.Success)
{
return;
}
if (sre.Status == Constant.ServiceResultStatus.Success)
{
//DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_002);
return;
}
DialogResult dialogResult;
ExitType exitType = ExitType.None;
switch (sre.Status)
{
// -1:验证失败
case Constant.ServiceResultStatus.ValidationFailed:
// -2:此用户没有登录
case Constant.ServiceResultStatus.UserNotLogin:
dialogResult = DKMessageBox.ShowDialog(owner, DKMessageCode.WYN_CMN_S_002);
if (dialogResult == DialogResult.Yes)
{
exitType = ExitType.ReLogin;
}
else
{
exitType = ExitType.Close;
}
break;
// -3:此用户已在其他客户端登录
case Constant.ServiceResultStatus.UserOtherLogin:
dialogResult = DKMessageBox.ShowDialog(owner,
DKMessageCode.WYN_CMN_S_003,
LogInUserInfo.CurrentUser.CurrentUserEntity.UserCode);
if (dialogResult == DialogResult.Yes)
{
exitType = ExitType.ReLogin;
}
else
{
exitType = ExitType.Close;
}
break;
// -4系统账务日期错误
case Constant.ServiceResultStatus.AccountDateError:
DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_001);
exitType = ExitType.Close;
break;
// -100:没有查询结果
case Constant.ServiceResultStatus.NoSearchResults:
DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_001);
break;
// -101:没有更新任何数据
case Constant.ServiceResultStatus.NoModifyData:
DKMessageBox.ShowDialog(owner, DKMessageCode.I_CMN_S_001);
break;
// -102:数据已被其他用户更改
case Constant.ServiceResultStatus.DataChanged:
DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_005);
break;
// -103:有重复数据,更新失败
case Constant.ServiceResultStatus.DataDuplicated:
DKMessageBox.ShowDialog(owner, DKMessageCode.W_CMN_S_006, sre.Message);
break;
// -800:License中无此模块权限
case Constant.ServiceResultStatus.NoLicensesRight:
// todo
break;
// -801:此用户无此操作权限
case Constant.ServiceResultStatus.NoFunRight:
// todo
break;
// -999:系统异常
case Constant.ServiceResultStatus.SystemError:
//DKMessageBox.ShowDialog(owner, DKMessageCode.E_CMN_S_001);
//break;
throw new System.Exception(sre.Message);
default:
break;
}
// todo
//// 写错误日志
// OutputLog.Trace(LogPriority.Warning,
// "Authorization",
// "Authorization()",
// ex.ToString());
if (exitType == ExitType.None)
{
return;
}
System.Diagnostics.Process.GetCurrentProcess().Close();
System.Environment.Exit(0);
if (exitType == ExitType.ReLogin)
{
Process.Start(Constant.S_SYSTEM_CLIENT_NAME);
}
}
}
}