This commit is contained in:
339
source/bizobjects/AyaLib/GZTW.AyaNova.BLL/NotifyEventUIHelper.cs
Normal file
339
source/bizobjects/AyaLib/GZTW.AyaNova.BLL/NotifyEventUIHelper.cs
Normal file
@@ -0,0 +1,339 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Collections;
|
||||
using CSLA.Data;
|
||||
using CSLA;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace GZTW.AyaNova.BLL
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// User interface helper methods and properties
|
||||
/// for managing subscriptions to notification events
|
||||
///
|
||||
/// Provides lists and data tables for managing notification through
|
||||
/// the user interface
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class NotifyEventUIHelper
|
||||
{
|
||||
|
||||
#region DataTable for building selections
|
||||
/// <summary>
|
||||
/// Utility list of events that can be subscribed to
|
||||
/// </summary>
|
||||
/// <param name="ns">NotifySubscriber - used to flag already subscribed events</param>
|
||||
/// <returns>DataTable containing events that can be subscribed to and already subscribed events flagged as subscribed</returns>
|
||||
public static DataTable GetEventsTable(NotifySubscriber ns)
|
||||
{
|
||||
|
||||
DataTable dt = new DataTable( );
|
||||
//Columns...
|
||||
dt.Columns.Add( "ID",typeof(Guid));
|
||||
dt.Columns.Add( "Selected",typeof(bool));
|
||||
dt.Columns.Add( "RootObjectType",typeof(RootObjectTypes));
|
||||
dt.Columns.Add( "EventType",typeof(int));
|
||||
dt.Columns.Add( "LTKEY",typeof(string));
|
||||
|
||||
//Data...
|
||||
|
||||
//MEMO
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.Memo,(int)MemoEvent.Created));
|
||||
|
||||
//SCHEDULEMARKER
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.ScheduleMarker,(int)ScheduleMarkerEvent.Created));
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.ScheduleMarker,(int)ScheduleMarkerEvent.PendingAlert));
|
||||
|
||||
//WorkorderItemScheduledUser
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.WorkorderItemScheduledUser,(int)WorkorderItemScheduledUserEvent.CreatedUpdated));
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.WorkorderItemScheduledUser,(int)WorkorderItemScheduledUserEvent.PendingAlert));
|
||||
|
||||
//WorkorderItem
|
||||
//dt.Rows.Add(AddRow(RootObjectTypes.WorkorderItem,(int)WorkorderItemEvent.NotServiced));
|
||||
|
||||
//Workorder
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.Workorder,(int)WorkorderEvent.Status));
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.Workorder,(int)WorkorderEvent.CloseByDatePassed));
|
||||
|
||||
//Quote - case 1555
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.Workorder, (int)WorkorderEvent.QuoteUpdated));
|
||||
|
||||
//WorkorderItemOutsideService
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.WorkorderItemOutsideService,(int)WorkorderItemOutsideServiceEvent.UnitBackFromService));
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.WorkorderItemOutsideService,(int)WorkorderItemOutsideServiceEvent.UnitNotBackFromServiceByETA));
|
||||
|
||||
//WorkorderItemPartRequest
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.WorkorderItemPartRequest,(int)WorkorderItemPartRequestEvent.PartsReceived));
|
||||
|
||||
//Client
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.Client,(int)ClientEvent.ContractExpire));
|
||||
|
||||
//ClientServiceRequest
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.ClientServiceRequest,(int)ClientServiceRequestEvent.Created));
|
||||
|
||||
//ServiceBank
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.ServiceBank,(int)ServiceBankEvent.CurrencyBalanceZero));
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.ServiceBank,(int)ServiceBankEvent.HoursBalanceZero));
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.ServiceBank,(int)ServiceBankEvent.IncidentsBalanceZero));
|
||||
|
||||
//User
|
||||
//case 812
|
||||
//if(!string.IsNullOrEmpty(AyaBizUtils.PluginLicensedVersion("QuickNotification")))
|
||||
//case 2094
|
||||
if (AyaBizUtils.PluginSubscriptionExists("QuickNotification") )
|
||||
dt.Rows.Add(AddRow(RootObjectTypes.User, (int)UserEvent.QuickNotification));
|
||||
|
||||
//case 1382 - general smtp connection failure rootobjecttype=nothing, event=0
|
||||
//case 1561 this should never have been here, removal was forgotten when completing 1382
|
||||
//dt.Rows.Add(AddRow(RootObjectTypes.Nothing, 0));
|
||||
|
||||
foreach(DataRow dr in dt.Rows)
|
||||
{
|
||||
//skip over workorderevent.status because there can be more than one
|
||||
if((RootObjectTypes)dr["RootObjectType"]==RootObjectTypes.Workorder && (int)dr["EventType"]==(int)WorkorderEvent.Status)
|
||||
continue;
|
||||
if(ns.Subscriptions.Contains((RootObjectTypes)dr["RootObjectType"],(int)dr["EventType"]))
|
||||
dr["Selected"]=true;
|
||||
}
|
||||
return dt;
|
||||
|
||||
}
|
||||
private static object[] AddRow(RootObjectTypes RootObject, int EventType)
|
||||
{
|
||||
return new object[]{Guid.NewGuid(),false,RootObject,EventType,GetEventLocalizedTextKey(RootObject,EventType)};
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Localized text key retriever for event
|
||||
|
||||
internal static string GetEventLocalizedTextKey(RootObjectTypes RootObject, int EventType)
|
||||
{
|
||||
switch (RootObject)
|
||||
{
|
||||
case RootObjectTypes.Memo:
|
||||
{
|
||||
switch(EventType)
|
||||
{
|
||||
case (int)MemoEvent.Created:
|
||||
return "Memo.Label.Event.Created";
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case RootObjectTypes.ScheduleMarker:
|
||||
{
|
||||
switch(EventType)
|
||||
{
|
||||
case (int)ScheduleMarkerEvent.Created:
|
||||
return "ScheduleMarker.Label.Event.Created";
|
||||
|
||||
case (int)ScheduleMarkerEvent.PendingAlert:
|
||||
return "ScheduleMarker.Label.Event.PendingAlert";
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case RootObjectTypes.WorkorderItemScheduledUser:
|
||||
{
|
||||
switch(EventType)
|
||||
{
|
||||
case (int)WorkorderItemScheduledUserEvent.CreatedUpdated:
|
||||
return "WorkorderItemScheduledUser.Label.Event.CreatedUpdated";
|
||||
case (int)WorkorderItemScheduledUserEvent.PendingAlert:
|
||||
return "WorkorderItemScheduledUser.Label.Event.PendingAlert";
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//case 812
|
||||
case RootObjectTypes.User:
|
||||
{
|
||||
switch (EventType)
|
||||
{
|
||||
case (int)UserEvent.QuickNotification:
|
||||
return "User.Label.Event.QuickNotification";
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
// case RootObjectTypes.WorkorderItem:
|
||||
// {
|
||||
// switch(EventType)
|
||||
// {
|
||||
// case (int)WorkorderItemEvent.NotServiced:
|
||||
// return "WorkorderItem.Label.Event.NotServiced";
|
||||
//
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
|
||||
|
||||
case RootObjectTypes.Workorder:
|
||||
{
|
||||
switch(EventType)
|
||||
{
|
||||
case (int)WorkorderEvent.Status:
|
||||
return "Workorder.Label.Event.Status";
|
||||
|
||||
case (int)WorkorderEvent.CloseByDatePassed:
|
||||
return "Workorder.Label.Event.CloseByDatePassed";
|
||||
|
||||
//case 1555
|
||||
case (int)WorkorderEvent.QuoteUpdated:
|
||||
return "Workorder.Label.Event.QuoteUpdated";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case RootObjectTypes.WorkorderItemOutsideService:
|
||||
{
|
||||
switch(EventType)
|
||||
{
|
||||
case (int)WorkorderItemOutsideServiceEvent.UnitBackFromService:
|
||||
return "WorkorderItemOutsideService.Label.Event.UnitBackFromService";
|
||||
|
||||
case (int)WorkorderItemOutsideServiceEvent.UnitNotBackFromServiceByETA:
|
||||
return "WorkorderItemOutsideService.Label.Event.UnitNotBackFromServiceByETA";
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case RootObjectTypes.WorkorderItemPartRequest:
|
||||
{
|
||||
switch(EventType)
|
||||
{
|
||||
case (int)WorkorderItemPartRequestEvent.PartsReceived:
|
||||
return "WorkorderItemPartRequest.Label.Event.PartsReceived";
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case RootObjectTypes.Client:
|
||||
{
|
||||
switch(EventType)
|
||||
{
|
||||
case (int)ClientEvent.ContractExpire:
|
||||
return "Client.Label.Event.ContractExpire";
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case RootObjectTypes.ClientServiceRequest:
|
||||
{
|
||||
switch (EventType)
|
||||
{
|
||||
case (int)ClientServiceRequestEvent.Created:
|
||||
return "ClientServiceRequest.Label.Event.Created";
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case RootObjectTypes.ServiceBank:
|
||||
{
|
||||
switch(EventType)
|
||||
{
|
||||
case (int)ServiceBankEvent.CurrencyBalanceZero:
|
||||
return "ServiceBank.Label.Event.CurrencyBalanceZero";
|
||||
|
||||
case (int)ServiceBankEvent.HoursBalanceZero:
|
||||
return "ServiceBank.Label.Event.HoursBalanceZero";
|
||||
|
||||
case (int)ServiceBankEvent.IncidentsBalanceZero:
|
||||
return "ServiceBank.Label.Event.IncidentsBalanceZero";
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//case 1382
|
||||
case RootObjectTypes.Nothing:
|
||||
{
|
||||
return "SMTP connection failure";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
return "NotifyEventUIHelper.GetEventLocalizedTextKey() missing event for " + RootObject.ToString() + " Event:" + EventType.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Notification Message Formatter
|
||||
internal static NotifyMessage GetNotificationMessage(NotifyMessageRequestData d)
|
||||
{
|
||||
switch (d.RootObject)
|
||||
{
|
||||
case RootObjectTypes.Memo:
|
||||
{
|
||||
return Memo.GetNotificationMessage(d);
|
||||
}
|
||||
|
||||
case RootObjectTypes.ScheduleMarker:
|
||||
{
|
||||
return ScheduleMarker.GetNotificationMessage(d);
|
||||
}
|
||||
|
||||
case RootObjectTypes.WorkorderItemScheduledUser:
|
||||
{
|
||||
return WorkorderItemScheduledUser.GetNotificationMessage(d);
|
||||
}
|
||||
|
||||
case RootObjectTypes.Workorder:
|
||||
{
|
||||
return Workorder.GetNotificationMessage(d);
|
||||
}
|
||||
|
||||
case RootObjectTypes.WorkorderItemOutsideService:
|
||||
{
|
||||
return WorkorderItemOutsideService.GetNotificationMessage(d);
|
||||
|
||||
}
|
||||
|
||||
case RootObjectTypes.WorkorderItemPartRequest:
|
||||
{
|
||||
return WorkorderItemPartRequest.GetNotificationMessage(d);
|
||||
}
|
||||
|
||||
case RootObjectTypes.Client:
|
||||
{
|
||||
return Client.GetNotificationMessage(d);
|
||||
}
|
||||
|
||||
case RootObjectTypes.ClientServiceRequest:
|
||||
{
|
||||
return ClientServiceRequest.GetNotificationMessage(d);
|
||||
}
|
||||
|
||||
case RootObjectTypes.ServiceBank:
|
||||
{
|
||||
return ServiceBank.GetNotificationMessage(d);
|
||||
|
||||
}
|
||||
|
||||
case RootObjectTypes.User:
|
||||
{
|
||||
return User.GetNotificationMessage(d);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return new NotifyMessage("","Error: Unable to retrieve notification message");
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user