/// <summary> /// Sends an email notification /// with the card number to all users. /// </summary> /// <param name="smtpHostname"></param> /// <param name="senderAddress"></param> /// <param name="targetIdField"></param> public void SendEmailsToAllUsers(string smtpHostname, string senderAddress, int targetIdField) { try { if (!string.IsNullOrEmpty(smtpHostname) && !string.IsNullOrEmpty(senderAddress)) { string resolvedIdField = PaperCutProxyWrapper.ResolveCardField(targetIdField); string[] usernames = PaperCutProxyWrapper.GetUserAccounts(_serverProxy); List <string> emails = null; List <string> idNumbers = null; for (int i = 0; i < usernames.Length; i++) { string[] retrievedProperties = _serverProxy.GetUserProperties(usernames[i], new string[] { Common.Constants.PaperCut.Properties.Email, resolvedIdField }); emails.Add(retrievedProperties[0]); idNumbers.Add(retrievedProperties[1]); } SmtpClient smtpClient = new SmtpClient(); smtpClient.Host = smtpHostname; smtpClient.Port = 25; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; for (int i = 0; i < usernames.Length; i++) { SendEmail(smtpClient, senderAddress, emails[i], idNumbers[i]); } } } catch { Console.WriteLine(Common.Constants.Smtp.Email.UnableToSend); } }
/// <summary> /// Updates the card numbers for all users. /// </summary> /// <param name="updateOnlyIfBlank"></param> /// <param name="targetIdField"></param> /// <param name="numberOfChars"></param> public void UpdateAllCardNumbers(bool updateOnlyIfBlank, int targetIdField, int numberOfChars) { try { if (numberOfChars >= Common.Constants.PaperCut.Constants.MinimumNumberOfCharacters && numberOfChars <= Common.Constants.PaperCut.Constants.MaximumNumberOfCharacters) { string[] existingUsers = PaperCutProxyWrapper.GetUserAccounts(_serverProxy); string[] newCardNumbers = new string[existingUsers.Length]; newCardNumbers = SecurityStringHelper.GenerateIdentifiers(numberOfChars, newCardNumbers.Length).ToArray(); if (updateOnlyIfBlank) { int updatedCount = 0; int skippedCount = 0; string[] existingCardNumbers; existingCardNumbers = PaperCutProxyWrapper.GetCardNumbers(_serverProxy, existingUsers, targetIdField); Console.WriteLine(Common.Constants.PaperCut.Messages.UpdatingOnlyUsersWithBlankCardNumbers); Console.WriteLine(Common.Constants.ConsoleSpacing.HashesWithNewLine); for (int i = 0; i < existingUsers.Length; i++) { if (string.IsNullOrEmpty(existingCardNumbers[i])) { PaperCutProxyWrapper.SetCardNumber(_serverProxy, existingUsers[i], newCardNumbers[i], targetIdField); updatedCount++; if (updatedCount > 0 && updatedCount % 100 == 0) { Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.UpdatedNUsersSoFar, updatedCount)); } } else { skippedCount++; if (skippedCount > 0 && skippedCount % 100 == 0) { Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.SkippedNUsersSoFar, skippedCount)); } } } Console.WriteLine(); Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.UpdatedAndSkippedNUsers, updatedCount, skippedCount)); Console.WriteLine(Common.Constants.ConsoleSpacing.Hashes); } else { PaperCutProxyWrapper.SetCardNumbers(_serverProxy, existingUsers, newCardNumbers, targetIdField); Console.WriteLine(); Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.UpdatedNUsers, existingUsers.Length)); Console.WriteLine(Common.Constants.ConsoleSpacing.HashesWithNewLine); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } }