217 lines
9.5 KiB
C#
217 lines
9.5 KiB
C#
///////////////////////////////////////////////////////////
|
|
// 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<Guid, string> list=null;
|
|
|
|
|
|
#region Constructor
|
|
|
|
protected DashBoardScheduledUserListRI()
|
|
{
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Static methods
|
|
|
|
public static Dictionary<Guid, string> 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<Guid, string>(crit.MaxRecords);
|
|
while (dr.Read())
|
|
{
|
|
if (crit.Count)
|
|
{
|
|
object o=dr.GetValue(0);
|
|
_Count = long.Parse(o.ToString());
|
|
}
|
|
else
|
|
{
|
|
|
|
//*******************************************
|
|
list.Add(dr.GetGuid("AWORKORDERITEMSCHEDULEDUSERID"),
|
|
//"<mark>" + DBUtil.ToLocal(dr.GetSmartDate("ASTARTDATE")).ToString() + "</mark> " +
|
|
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
|
|
/// <summary>
|
|
/// Criteria for list
|
|
/// </summary>
|
|
[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
|
|
|