using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Configuration; using System.Data.Common; using System.Collections; using Wellan.Data; using Wellan.Common; using System.ComponentModel; /// /// 人員班表的資料處理類別 /// [DataObject] public class RtmeDAC : WDAC { public RtmeDAC() { } public RtmeDAC(string connectionConfig, string connectionConfigName) : this() { this._connectionConfig = connectionConfig; this._connectionConfigName = connectionConfigName; } public RtmeDAC(WQuery query) { this._query = query; } [DataObjectMethod(DataObjectMethodType.Select)] public List SelectDay(string RTENO, DateTime? RTDAT) { var cmd = Query.NewCommand(); cmd.CommandText = "SELECT * FROM RTME WHERE 1=1"; if (!string.IsNullOrEmpty(RTENO)) cmd.CommandText += " AND RTENO = @RTENO "; if (RTDAT.HasValue) cmd.CommandText += " AND RTDAT = @RTDAT "; AddParam(cmd, "RTENO", RTENO); AddParam(cmd, "RTDAT", RTDAT); return Query.Select(cmd); } [DataObjectMethod(DataObjectMethodType.Select)] public List SelectMonth(string RTENO, DateTime? RTDAT) { var cmd = Query.NewCommand(); cmd.CommandText = "SELECT * FROM RTME WHERE 1=1"; // if (!string.IsNullOrEmpty(RTENO)) cmd.CommandText += " AND RTENO = @RTENO "; if (RTDAT.HasValue) { cmd.CommandText += " AND RTDAT >= @RTDAT_1 AND RTDAT < @RTDAT_2 "; var d = RTDAT.Value.AddDays(-(RTDAT.Value.Day - 1)); AddParam(cmd, "RTDAT_1", d); AddParam(cmd, "RTDAT_2", d.AddMonths(1)); } AddParam(cmd, "RTENO", RTENO); return Query.Select(cmd); } public void SetDay(string RTENO, DateTime RTDAT, string RTTID, string TRUSR) { var item = SelectDay(RTENO, RTDAT).FirstOrDefault(); if (item == null) { InsertOne(new RtmeItem() { RTENO = RTENO, RTDAT = RTDAT, RTTID = RTTID, TRUSR = TRUSR }); } else { item.RTTID = RTTID; UpdateOne(item); } } [DataObjectMethod(DataObjectMethodType.Insert)] public void InsertOne(RtmeItem value) { var cmd = Query.NewCommand(); cmd.CommandText = @"INSERT INTO dbo.RTME (RTENO, RTDAT, RTTID, TRDAT, TRMOD, TRUSR) VALUES (@RTENO, @RTDAT, @RTTID, GETDATE(), 'INSERT', @TRUSR)"; AddParam(cmd, "RTENO", value.RTENO); AddParam(cmd, "RTDAT", value.RTDAT); AddParam(cmd, "RTTID", value.RTTID); AddParam(cmd, "TRUSR", value.TRUSR); Query.ExecuteNonQuery(cmd); } [DataObjectMethod(DataObjectMethodType.Update)] public void UpdateOne(RtmeItem value) { var cmd = Query.NewCommand(); cmd.CommandText = @"UPDATE dbo.RTME SET RTTID = @RTTID, TRDAT = GETDATE(), TRMOD = 'MODIFY', TRUSR = @TRUSR WHERE RTENO = @OLD_RTENO AND RTDAT = @OLD_RTDAT"; AddParam(cmd, "RTTID", value.RTTID); AddParam(cmd, "TRUSR", value.TRUSR); AddParam(cmd, "OLD_RTENO", value.RTENO); AddParam(cmd, "OLD_RTDAT", value.RTDAT); Query.ExecuteNonQuery(cmd); } [DataObjectMethod(DataObjectMethodType.Delete)] public void DeleteOne(RtmeItem value) { var cmd = Query.NewCommand(); cmd.CommandText = @"DELETE FROM dbo.RTME WHERE RTENO = @OLD_RTENO AND RTDAT = @OLD_RTDAT"; AddParam(cmd, "OLD_RTENO", value.RTENO); AddParam(cmd, "OLD_RTDAT", value.RTDAT); Query.ExecuteNonQuery(cmd); } /// /// 由員工與日期取班表資料 /// /// /// /// public BtmeItem SelectBtmeDay(string RTENO, DateTime RTDAT) { var rtmeItem = SelectDay(RTENO, RTDAT).FirstOrDefault(); if (rtmeItem != null && !string.IsNullOrEmpty(rtmeItem.RTTID.Trim()) && !BhrdDAC.ItemIsHoliday(rtmeItem.RTTID)) { return new BtmeDAC(Query).SelectOne(rtmeItem.RTTID).FirstOrDefault(); } else return null; } } public class RtmeItem { public string RTENO { get; set; } public DateTime RTDAT { get; set; } public string RTTID { get; set; } public DateTime TRDAT { get; set; } public string TRMOD { get; set; } public string TRUSR { get; set; } }