/////////////////////////////////////////////////////////// // DashBoardScheduledUserList.cs // Implementation of Class DashBoardScheduledUserList // CSLA type: Read only // Created on: 09-Sept-2014 // Object design: John // Coded: 09-Sept-2014 /////////////////////////////////////////////////////////// using System; using System.Data; using GZTW.Data; using CSLA.Data; using CSLA; using System.Collections.Generic; namespace GZTW.AyaNova.BLL { #pragma warning disable 1591 [Serializable] public class DashBoardScheduledUserListRI : ReadOnlyBase { public long _Count = 0; public Dictionary list=null; #region Constructor protected DashBoardScheduledUserListRI() { } #endregion #region Static methods public static Dictionary GetList(string List, int MaxRecords = 3) { return ((DashBoardScheduledUserListRI)DataPortal.Fetch(new Criteria(List, false, MaxRecords))).list; } public static long GetCount(string List) { return ((DashBoardScheduledUserListRI) DataPortal.Fetch(new Criteria(List, true, 0)))._Count; } #endregion #region DAL DATA ACCESS protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; SmartDate dtNow = new SmartDate(DBUtil.CurrentWorkingDateTime); Guid currentUserId = User.CurrentThreadUserID; SafeDataReader dr = null; try { DBCommandWrapper cm = null; //Base query string qFields = ""; if (crit.Count) qFields = "SELECT COUNT(*) "; else qFields = "SELECT ~MAXRECS~ AWORKORDERSERVICE.ASERVICENUMBER AS AWORKORDERNUMBER, " + " ACLIENT.ANAME AS ACLIENTNAME, " + " AWORKORDERITEM.ASUMMARY AS AWORKORDERITEMSUMMARY, " + " AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE, " + " AWORKORDERITEMSCHEDULEDUSER.AID AS AWORKORDERITEMSCHEDULEDUSERID "; string q = //*********************************************************************************************************** qFields + " FROM " + " AWORKORDER " + " LEFT OUTER JOIN AWORKORDERITEM ON (AWORKORDER.AID=AWORKORDERITEM.AWORKORDERID) " + " LEFT OUTER JOIN AWORKORDERSERVICE ON (AWORKORDER.AID=AWORKORDERSERVICE.AWORKORDERID) " + " LEFT OUTER JOIN ACLIENT ON (AWORKORDER.ACLIENTID=ACLIENT.AID) " + " LEFT OUTER JOIN AWORKORDERITEMSCHEDULEDUSER ON (AWORKORDERITEM.AID=AWORKORDERITEMSCHEDULEDUSER.AWORKORDERITEMID) " + " WHERE (AWORKORDER.AWORKORDERTYPE = 1) AND (AWORKORDER.ASERVICECOMPLETED = 0) AND (AWORKORDERITEMSCHEDULEDUSER.AID IS NOT NULL) " //*********************************************************************************************************** ; if (!crit.Count) { if (crit.MaxRecords > 0) q = q.Replace("~MAXRECS~", "TOP " + crit.MaxRecords.ToString()); else q = q.Replace("~MAXRECS~", ""); } switch (crit.List) { case "myOverdue": //current user only and before or equal to right now q = q + " AND (AWORKORDERITEMSCHEDULEDUSER.AUSERID=@USERID)"; q = q + " AND (AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE IS NOT NULL) AND (AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE <= @RIGHTNOW)"; q=DBUtil.AddRegionFilter(q); if(!crit.Count) q = q + " ORDER BY AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE ASC"; cm = DBUtil.DB.GetSqlStringCommandWrapper(q); cm.AddInParameter("@RIGHTNOW", DbType.DateTime, DBUtil.ToUTC(dtNow).DBValue); cm.AddInParameter("@USERID", DbType.Guid, currentUserId); break; case "myScheduled": //current user only and after right now q = q + " AND (AWORKORDERITEMSCHEDULEDUSER.AUSERID=@USERID)"; q = q + " AND (AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE IS NOT NULL) AND (AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE > @RIGHTNOW)"; q=DBUtil.AddRegionFilter(q); if (!crit.Count) q = q + " ORDER BY AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE ASC"; cm = DBUtil.DB.GetSqlStringCommandWrapper(q); cm.AddInParameter("@RIGHTNOW", DbType.DateTime, DBUtil.ToUTC(dtNow).DBValue); cm.AddInParameter("@USERID", DbType.Guid, currentUserId); break; case "compNotAssigned": //empty user q = q + " AND (AWORKORDERITEMSCHEDULEDUSER.AUSERID IS NULL)"; q=DBUtil.AddRegionFilter(q); if (!crit.Count) q = q + " ORDER BY AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE DESC"; cm = DBUtil.DB.GetSqlStringCommandWrapper(q); //cm.AddInParameter("@USERID", DbType.Guid, Guid.Empty); break; case "compOverdue": //Any user and before or equal to right now q = q + " AND (AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE IS NOT NULL) AND (AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE <= @RIGHTNOW)"; q = DBUtil.AddRegionFilter(q); if (!crit.Count) q = q + " ORDER BY AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE ASC"; cm = DBUtil.DB.GetSqlStringCommandWrapper(q); cm.AddInParameter("@RIGHTNOW", DbType.DateTime, DBUtil.ToUTC(dtNow).DBValue); break; case "compScheduled": //current user only and after right now q = q + " AND (AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE IS NOT NULL) AND (AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE > @RIGHTNOW)"; q = DBUtil.AddRegionFilter(q); if (!crit.Count) q = q + " ORDER BY AWORKORDERITEMSCHEDULEDUSER.ASTARTDATE ASC"; cm = DBUtil.DB.GetSqlStringCommandWrapper(q); cm.AddInParameter("@RIGHTNOW", DbType.DateTime, DBUtil.ToUTC(dtNow).DBValue); break; default: throw new System.ArgumentOutOfRangeException("The list type of: \"" + crit.List + "\" was not recognized"); } dr = new SafeDataReader(DBUtil.DB.ExecuteReader(cm)); if(!crit.Count) list = new Dictionary(crit.MaxRecords); while (dr.Read()) { if (crit.Count) { object o=dr.GetValue(0); _Count = long.Parse(o.ToString()); } else { //******************************************* list.Add(dr.GetGuid("AWORKORDERITEMSCHEDULEDUSERID"), //"" + DBUtil.ToLocal(dr.GetSmartDate("ASTARTDATE")).ToString() + " " + DBUtil.ToLocal(dr.GetSmartDate("ASTARTDATE")).ToString() + " " + dr.GetInt32("AWORKORDERNUMBER").ToString() + " " + dr.GetString("ACLIENTNAME") + " " + dr.GetString("AWORKORDERITEMSUMMARY").Replace('\r', ' ').Replace("\n", "")); _Count++; //******************************************* } } } finally { if (dr != null) dr.Close(); } } #endregion #region criteria /// /// Criteria for list /// [Serializable] private class Criteria { public bool Count; public string List; public int MaxRecords; public Criteria(string list, bool count, int maxRecords) { MaxRecords = maxRecords; Count = count; List = list; } } #endregion }//end DashBoardScheduledUserList #pragma warning restore 1591 }//end namespace GZTW.AyaNova.BLL