using System; using System.Collections.Generic; using System.Data; using System.Text; using System.IO; namespace GroundZero.KeyCodes { class MsgGen { /* * * - Trial greeting message Lite and Full separate [FirstName] - requesters first name, need to auto capitalize first letter - Key message [LicenseExpiryDate] (Now plus 7 days) [LicenseDescription] (textual description of info for body of message see code) [LicenseKey] (actual key) New key message Lite Full Add on key message Lite Full Licensed trial key message Lite Full */ public static string TrialGreetingMessage(bool bLite, string sName) { if (!string.IsNullOrEmpty(sName)) { // convert to char array of the string char[] letters = sName.ToCharArray(); // upper case the first char letters[0] = char.ToUpper(letters[0]); // return the array made of the new char array sName = new string(letters); } if (!bLite) { return File.ReadAllText(FileName(MessageType.TrialGreetingFull)).Replace("[FirstName]", sName); } else { return File.ReadAllText(FileName(MessageType.TrialGreetingLite)).Replace("[FirstName]", sName); } } public static string TrialKeyMessage(bool bLite, string sRegTo, bool XMLFormat) { KeyGen kg = new KeyGen(); kg.Lite = bLite; //case 2094 moved to plugins //kg.FeatureMBIInterface = !bLite; //kg.FeatureWebInterface = !bLite; kg.Expires = DateTime.Now.AddDays(31); kg.Plugins = new DataTable(); kg.Plugins.Columns.Add("Plugin"); //kg.Plugins.Columns.Add("Version"); kg.Plugins.Columns.Add("SubscriptionExpires"); #region Add trial plugins DataRow dr = kg.Plugins.NewRow(); dr["Plugin"] = "QBI - QuickBooks interface"; //dr["Version"] = "7"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); dr = kg.Plugins.NewRow(); dr["Plugin"] = "QBOI - QuickBooks Online interface"; //dr["Version"] = "7"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); dr = kg.Plugins.NewRow(); dr["Plugin"] = "PTI - US Sage 50/Peachtree interface"; //dr["Version"] = "7"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); if (!kg.Lite) { dr = kg.Plugins.NewRow(); dr["Plugin"] = "QuickNotification"; //dr["Version"] = "Licensed"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); } dr = kg.Plugins.NewRow(); dr["Plugin"] = "ExportToXls"; //dr["Version"] = "Licensed"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); dr = kg.Plugins.NewRow(); dr["Plugin"] = "OutlookSchedule"; //dr["Version"] = "Licensed"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); dr = kg.Plugins.NewRow(); dr["Plugin"] = "AyaNovaOLI"; //dr["Version"] = "Licensed"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); dr = kg.Plugins.NewRow(); dr["Plugin"] = "ImportExportCSVDuplicate"; //dr["Version"] = "Licensed"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); if (!kg.Lite) { dr = kg.Plugins.NewRow(); dr["Plugin"] = "WBI - Web browser interface"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); dr = kg.Plugins.NewRow(); dr["Plugin"] = "MBI - Minimal browser interface"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); dr = kg.Plugins.NewRow(); dr["Plugin"] = "RI - Responsive Interface"; dr["SubscriptionExpires"] = kg.Expires.ToString(); kg.Plugins.Rows.Add(dr); } #endregion kg.RegisteredTo = sRegTo; kg.RequestedTrial = true; if (kg.Lite) kg.ScheduleableUsers = 1; else kg.ScheduleableUsers = 5; kg.SelectedLicenseType = "Web requested trial"; kg.WillExpire = true; return FormatMessage(kg, XMLFormat); } public static string FormatMessage(KeyGen kg, bool XMLFormat) { string sMessage = ""; if (kg.SelectedLicenseType == "New") { if (kg.Lite) { sMessage = File.ReadAllText(FileName(MessageType.KeyNewLite)); } else { sMessage = File.ReadAllText(FileName(MessageType.KeyNewFull)); } } else if (kg.SelectedLicenseType == "Add on") { if (kg.Lite) { sMessage = File.ReadAllText(FileName(MessageType.KeyAddOnLite)); } else { sMessage = File.ReadAllText(FileName(MessageType.KeyAddOnFull)); } } else//licensed trial { if (kg.Lite) { sMessage = File.ReadAllText(FileName(MessageType.KeyTrialLite)); } else { sMessage = File.ReadAllText(FileName(MessageType.KeyTrialFull)); } } //token substitutions sMessage = sMessage.Replace("[LicenseExpiryDate]", kg.InstallableUntil.ToLongDateString()); sMessage = sMessage.Replace("[LicenseDescription]", LicenseInfo(kg)); sMessage = sMessage.Replace("[LicenseKey]", kg.Generate(XMLFormat)); return sMessage; } /// /// Extra info to display about key at top of key message /// /// /// public static string LicenseInfo(KeyGen kg) { StringBuilder sb = new StringBuilder(); sb.Append("LICENSE DETAILS\r\n"); sb.Append("This key must be installed before: "); sb.Append(kg.InstallableUntil.ToLongDateString()); sb.Append("\r\n"); //if (kg.SelectedLicenseType == "Web requested trial") //{ // sb.Append("*** This temporary license key has been provided for limited evaluation purposes only *** \r\n"); // sb.Append("This license will expire and AyaNova usage will be restricted after: " + kg.Expires.ToLongDateString() + "\r\n\r\n"); //} if (kg.LockOut) { sb.Append("*** This temporary license key is provided for evaluation use only pending payment ***\r\n"); sb.Append("This license will expire and AyaNova usage will be restricted after: " + kg.Expires.ToLongDateString() + "\r\n"); sb.Append("\r\n"); sb.Append("A permanent license key will be sent to you when payment \r\n" + "has been received and processed. There will be no extensions or \r\n" + "exceptions. Please send in payment early enough to allow for \r\n" + "mail and processing time to ensure uninterrupted use of AyaNova" + (kg.Lite ? " Lite" : "") + ". \r\n\r\n"); } sb.Append("Registered to: "); sb.Append(kg.RegisteredTo); sb.Append("\r\n"); sb.Append("Scheduleable resources: "); switch (kg.ScheduleableUsers) { case 1: sb.AppendLine("1"); break; case 5: sb.AppendLine("Up to 5"); break; case 10: sb.AppendLine("Up to 10"); break; case 20: sb.AppendLine("Up to 20"); break; case 50: sb.AppendLine("Up to 50"); break; case 999: sb.AppendLine("Up to 999"); break; } sb.AppendLine("Support and updates until: " + kg.Expires.ToLongDateString() + "\r\n"); if (kg.Plugins.Rows.Count > 0) { sb.Append("\r\n"); sb.Append("Plugins:\r\n"); foreach (DataRow dr in kg.Plugins.Rows) { sb.Append("\t"); sb.Append(dr["Plugin"].ToString()); sb.Append(" support and updates until: "); DateTime dtx = DateTime.Parse(dr["SubscriptionExpires"].ToString()); sb.Append(dtx.ToLongDateString()); sb.Append("\r\n"); } } return sb.ToString(); } #region MessageType enum static string FileName(MessageType mtype) { switch (mtype) { case MessageType.TrialGreetingFull: return "TrialGreetingFull.txt"; case MessageType.TrialGreetingLite: return "TrialGreetingLite.txt"; case MessageType.KeyNewFull: return "KeyNewFull.txt"; case MessageType.KeyNewLite: return "KeyNewLite.txt"; case MessageType.KeyAddOnFull: return "KeyAddOnFull.txt"; case MessageType.KeyAddOnLite: return "KeyAddOnLite.txt"; case MessageType.KeyTrialFull: return "KeyTrialFull.txt"; case MessageType.KeyTrialLite: return "KeyTrialLite.txt"; } return ""; } #endregion MessageTypeEnum }//end of class public enum MessageType { None, TrialGreetingLite, TrialGreetingFull, KeyNewFull, KeyNewLite, KeyAddOnFull, KeyAddOnLite, KeyTrialFull, KeyTrialLite } }//end of namespace