using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using Wellan.Common;
using Wellan.Data;
///
/// wmBpsn 的摘要描述
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class wmBpsn : System.Web.Services.WebService
{
public wmBpsn()
{
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("zh-TW");
ci.DateTimeFormat.Calendar = new System.Globalization.TaiwanCalendar();
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
}
private WQuery GetQuery()
{
string ConnectionConfigName = WConfig.GetConnectionConfigName();
WConnectionString.ConnectionConfigFile = WConfig.GetConnectionConfig();
string ConnectionString = WConnectionString.GetConnectionString(ConnectionConfigName);
string ConnectionType = WConnectionString.GetConnectionType(ConnectionConfigName);
return new WQuery(ConnectionType, ConnectionString);
}
private GetDataResponse CheckInput(RPSBItem prev, RPSBSaveItem saveRecord)
{
var result = 0;
var message = "";
if (!saveRecord.IsValid)
{
result = -1;
message = saveRecord.Message;
}
else if (prev != null)
{
if (saveRecord.RPDAT_DATE < prev.RPDAT)
{
result = -1;
message = "異動日期不可小於前一筆的異動日期";
}
else if (prev.OnBoard && saveRecord.OnBoard)
{
result = -1;
message = "異動類別不合理(連續兩個在職)";
}
else if (prev.OffBoard && !prev.Quit && saveRecord.OffBoard && !saveRecord.Quit)
{
result = -1;
message = "異動類別不合理(連續兩個留職停薪)";
}
else if (prev.Quit && saveRecord.Quit)
{
result = -1;
message = "異動類別不合理(連續兩個離職)";
}
else if (prev.Quit && saveRecord.OffBoard && !saveRecord.Quit)
{
result = -1;
message = "異動類別不合理(離職後留職停薪)";
}
else if (prev.OffBoard && saveRecord.DeptChange)
{
result = -1;
message = "異動類別不合理(不在職時部門調動)";
}
}
if (result == 0)
{
return null;
}
else
{
return new GetDataResponse()
{
Result = -1,
Data = null,
Message = message
};
}
}
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
public GetDataResponse GetRPSBList(string rpeno)
{
var query = GetQuery();
var dao = new RpsbDAC(query);
var d = dao.Select(rpeno);
return new GetDataResponse()
{
Result = 0,
Data = Newtonsoft.Json.JsonConvert.SerializeObject(d)
};
}
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public GetDataResponse AddRPSB(string record)
{
var saveRecord = Newtonsoft.Json.JsonConvert.DeserializeObject(record);
if (!saveRecord.IsValid)
{
return new GetDataResponse()
{
Result = -1,
Data = null,
Message = saveRecord.Message
};
}
var query = GetQuery();
var dao = new RpsbDAC(query);
var rpitm = dao.NextRPITM(saveRecord.RPENO);
var prev = dao.SelectLast(saveRecord.RPENO, 0);
var checkResult = CheckInput(prev, saveRecord);
if (checkResult != null)
{
return checkResult;
}
var newRecord = new RPSBItem()
{
RPENO = saveRecord.RPENO,
RPITM = rpitm,
RPCLS = saveRecord.RPCLS,
RPDAT = saveRecord.RPDAT_DATE,
RPODT = saveRecord.DeptChange ? dao.PrevRPDPT(saveRecord.RPENO, rpitm) : "",
RPDPT = saveRecord.RPDPT,
RPDOC = saveRecord.RPDOC
};
var d = dao.InsertOne(newRecord);
return new GetDataResponse()
{
Result = d ? 0 : -1,
Data = d.ToString()
};
}
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public GetDataResponse UpdateRPSB(string record)
{
var saveRecord = Newtonsoft.Json.JsonConvert.DeserializeObject(record);
var query = GetQuery();
var dao = new RpsbDAC(query);
var prev = dao.SelectLast(saveRecord.RPENO, saveRecord.RPITM);
var checkResult = CheckInput(prev, saveRecord);
if (checkResult != null)
{
return checkResult;
}
var updateRecord = new RPSBItem()
{
RPENO = saveRecord.RPENO,
RPITM = saveRecord.RPITM,
RPCLS = saveRecord.RPCLS,
RPDAT = saveRecord.RPDAT_DATE,
RPODT = saveRecord.DeptChange ? dao.PrevRPDPT(saveRecord.RPENO, saveRecord.RPITM) : "",
RPDPT = saveRecord.RPDPT,
RPDOC = saveRecord.RPDOC
};
var d = dao.UpdateOne(updateRecord);
return new GetDataResponse()
{
Result = d ? 0 : -1,
Data = d.ToString()
};
}
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public GetDataResponse DeleteRPSB(string rpeno, int rpitm)
{
var query = GetQuery();
var dao = new RpsbDAC(query);
var d = dao.DeleteOne(rpeno, rpitm);
return new GetDataResponse()
{
Result = d ? 0 : -1,
Data = d.ToString()
};
}
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
public GetDataResponse GetRASNList(string bpeno)
{
var query = GetQuery();
var dao = new RasnDAC(query);
var d = dao.SelectHistoryByEmployee(bpeno);
return new GetDataResponse()
{
Result = 0,
Data = Newtonsoft.Json.JsonConvert.SerializeObject(d)
};
}
}