public JsonResult GetTempLogin(string EmpNo) { RegalBonModelFactory ModelFactory = new RegalBonModelFactory(); JsonresultModel ResultModel = new JsonresultModel(); ResultModel.Result = "0"; try { TempLoginModel TempLogin = ModelFactory.GetTempLogin(EmpNo, true); //**計算COUNTDOWN try { DateTime EndTime = DateTime.Parse(TempLogin.EndTime); TimeSpan ts = EndTime - DateTime.Now; int CountDown = ts.Seconds; if (CountDown <= 0) { CountDown = 0; } TempLogin.CountDown = CountDown; }catch { } ResultModel.Query = TempLogin; ResultModel.Result = "1"; } catch (Exception ex) { ResultModel.ErrorMsg = ex.Message; } catch { ResultModel.ErrorMsg = "系統發生錯誤"; } return(Json(ResultModel, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 取得臨時編號 /// </summary> /// <param name="EmpNo">員工編號</param> /// <param name="Flag">是否產生旗標 true 代表臨時編號不存在則幫忙產生一組新的 ,false= 代表臨時編號不存在則不產生</param> /// <returns></returns> public TempLoginModel GetTempLogin(string EmpNo, bool Flag = true) { TempLoginModel TempLogin = new TempLoginModel(); //判定該使用者 是否已經產生過 臨時編號 DataTable dtExist = DbAccess.ExecuteDataTable("SELECT Rid,EmpNo,CONVERT(char(19), EndTime, 120) AS EndTime,CONVERT(char(19), StartTime, 120) AS StartTime FROM tbTempLogin WHERE EmpNo = @EmpNo AND EndTime >= @EndTime ", new DbParameter[] { DataAccess.CreateParameter("EmpNo", DbType.String, EmpNo), DataAccess.CreateParameter("EndTime", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), } ); if (dtExist.Rows.Count > 0) { TempLogin.EmpNo = dtExist.Rows[0]["EmpNo"].ToString(); TempLogin.Rid = dtExist.Rows[0]["Rid"].ToString(); TempLogin.EndTime = dtExist.Rows[0]["EndTime"].ToString(); TempLogin.StartTime = dtExist.Rows[0]["StartTime"].ToString(); } else { //產生新的臨時編號 if (Flag == false) { throw new Exception("查無臨時編號"); } //先找到一筆 小於今天日期以前之隨便一組Rid DataTable dt = DbAccess.ExecuteDataTable("SELECT TOP 1 Rid FROM tbTempLogin WHERE EndTime < @EndTime ORDER BY NEWID()", new DbParameter[] { DataAccess.CreateParameter("EndTime", DbType.String, DateTime.Now.ToString("yyyy-MM-dd")), } ); if (dt.Rows.Count == 0) { throw new Exception("已無法產生編號"); } TempLogin.Rid = dt.Rows[0]["Rid"].ToString(); TempLogin.EmpNo = EmpNo; TempLogin.StartTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); TempLogin.EndTime = DateTime.Now.AddSeconds(30).ToString("yyyy-MM-dd HH:mm:ss"); DbTransaction objTrans = DbAccess.CreateDbTransaction(); try { DbAccess.ExecuteNonQuery("UPDATE tbTempLogin SET EmpNo=@EmpNo,EndTime=@EndTime,StartTime=@StartTime WHERE Rid = @Rid ", objTrans, new DbParameter[] { DataAccess.CreateParameter("Rid", DbType.String, TempLogin.Rid), DataAccess.CreateParameter("EmpNo", DbType.String, TempLogin.EmpNo), DataAccess.CreateParameter("StartTime", DbType.String, TempLogin.StartTime), DataAccess.CreateParameter("EndTime", DbType.String, TempLogin.EndTime), }); objTrans.Commit(); } catch { objTrans.Rollback(); throw new Exception("產生臨時編號失敗"); } } return(TempLogin); }