示例#1
0
        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));
        }
示例#2
0
        /// <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);
        }