using framework_library; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace framework_business { public class xCalendar { /// /// Listy of users based on calendar configuration and search prefix /// /// /// /// public static List SearchCalendar(string prefix, int calendarId) { List users = new List(); DataTable dt = new DataTable(); try { oSetup _setup = handler.ReturnSetup(false); foreach (oCalendarEventModule mod in xData.GetTypedByCriteriaSpecific("recId", typeof(oCalendarEventModule), "calendarId", calendarId.ToString())) { pNums.Module module = (pNums.Module)Enum.ToObject(typeof(pNums.Module), mod.moduleId); switch (module) { case pNums.Module.Users: string query = "SELECT recId, name + ' ' + surname AS [user] FROM pal_User "; query += "WHERE customerCode = '" + _setup.code + "' AND ((surname LIKE '%" + prefix + "%') OR (name LIKE '%" + prefix + "%') OR (email LIKE '%" + prefix + "%') OR (tel LIKE '%" + prefix + "%')) "; dt = xData.GetCustomTypedTable(query, true); foreach (DataRow row in dt.Rows) { users.Add(string.Format("{0}-{1}", row["user"].ToString(), row["recId"].ToString())); } break; case pNums.Module.Surface://search for calendar users in a surface app List mapParams = new List(); //surface Id oDynamicParam param1 = new oDynamicParam(); param1.paramDisplayName = "SurfaceID"; param1.paramObject = mod.entityId; mapParams.Add(param1); //Name Field oDynamicParam param2 = new oDynamicParam(); param2.paramDisplayName = "NameField"; param2.paramObject = mod.entityNameField; mapParams.Add(param2); //Surname Field oDynamicParam param3 = new oDynamicParam(); param3.paramDisplayName = "SurnameField"; param3.paramObject = mod.entitySurnameField; mapParams.Add(param3); //Email Field oDynamicParam param4 = new oDynamicParam(); param4.paramDisplayName = "EmailField"; param4.paramObject = mod.entityEmailField; mapParams.Add(param4); //Mobile Field oDynamicParam param5 = new oDynamicParam(); param5.paramDisplayName = "MobileField"; param5.paramObject = mod.entityMobileField; mapParams.Add(param5); //Prefix Field oDynamicParam param6 = new oDynamicParam(); param6.paramDisplayName = "Prefix"; param6.paramObject = prefix; mapParams.Add(param6); dt = xData.GetTypedTableByProc("recId", typeof(oSurfaceItem), "sp_GetSurfaceCalendarUsersBySearch", mapParams); foreach (DataRow row in dt.Rows) { users.Add(string.Format("{0}-{1}", row[3].ToString() + " " + row[4].ToString(), row[0].ToString())); } break; } } } catch (Exception ex) { exception.HandleException("xCalendar:", MethodBase.GetCurrentMethod().Name, ex, 0); } return users; } /// /// Returns an ArrayList of oUser /// The source of each user is determined on how the calednar is setup /// /// /// /// public static ArrayList GetUsersForCalendar(int calendarId, string userIds) { ArrayList result = new ArrayList(); DataTable dt = new DataTable(); try { oSetup _setup = handler.ReturnSetup(false); foreach (oCalendarEventModule mod in xData.GetTypedByCriteriaSpecific("recId", typeof(oCalendarEventModule), "calendarId", calendarId.ToString())) { pNums.Module module = (pNums.Module)Enum.ToObject(typeof(pNums.Module), mod.moduleId); switch (module) { case pNums.Module.Users: result = xData.GetTypedByCriteriaSpecific("recId", typeof(oUser), "recId", userIds, "surname", "pal_", true); break; case pNums.Module.Surface://search for calendar users in a surface app List mapParams = new List(); //surface Id oDynamicParam param1 = new oDynamicParam(); param1.paramDisplayName = "SurfaceID"; param1.paramObject = mod.entityId; mapParams.Add(param1); //Name Field oDynamicParam param2 = new oDynamicParam(); param2.paramDisplayName = "NameField"; param2.paramObject = mod.entityNameField; mapParams.Add(param2); //Surname Field oDynamicParam param3 = new oDynamicParam(); param3.paramDisplayName = "SurnameField"; param3.paramObject = mod.entitySurnameField; mapParams.Add(param3); //Email Field oDynamicParam param4 = new oDynamicParam(); param4.paramDisplayName = "EmailField"; param4.paramObject = mod.entityEmailField; mapParams.Add(param4); //Mobile Field oDynamicParam param5 = new oDynamicParam(); param5.paramDisplayName = "MobileField"; param5.paramObject = mod.entityMobileField; mapParams.Add(param5); //Prefix Field oDynamicParam param6 = new oDynamicParam(); param6.paramDisplayName = "ItemIDs"; param6.paramObject = userIds; mapParams.Add(param6); //CVH 2017-11-15 Don't execute proc if no user Ids, otherwise exception if (userIds.Length > 0) dt = xData.GetTypedTableByProc("recId", typeof(oSurfaceItem), "sp_GetSurfaceCalendarUsersByIDs", mapParams); foreach (DataRow row in dt.Rows) { oUser usr = new oUser(); usr.customerCode = _setup.code; usr.recId = int.Parse(row[0].ToString()); usr.name = row[3].ToString(); usr.surname = row[4].ToString(); usr.email = row[5].ToString(); usr.tel = row[6].ToString(); result.Add(usr); } break; } } } catch (Exception ex) { exception.HandleException("xCalendar:", MethodBase.GetCurrentMethod().Name, ex, 0); } return result; } } }