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) }; } }