/// <summary> /// /// Create the mime message To, Subject /// /// </summary> /// <param name="vintageLiquidationUser"></param> /// <param name="emailAdmins"></param> /// <returns></returns> private static MimeMessage GetMessage(VintageLiquidationUser vintageLiquidationUser, string emailAdmins) { MimeMessage message = null; try { message = new MimeMessage(); message.From.Add(new MailboxAddress("Admin Greenzorro", "*****@*****.**")); var admins = emailAdmins.Split(';'); message.To.Add(new MailboxAddress(admins[0])); if (admins.Length > 1) { message.Cc.Add(new MailboxAddress(admins[1])); } message.Subject = $@"User id {vintageLiquidationUser.GmUserId} withdrew vintage(s) on { DateTime.UtcNow.ToString("ddd d MMM yyyy") }"; } catch (Exception e) { Logger logger = LogManager.GetCurrentClassLogger(); logger.Error(e, "Exception in GetMessage()"); } return(message); }
private static void SendEmailBonusReq(VintageLiquidationUser user, string emailAdmins, string gmailUser, string gmailPwd, Logger logger) { try { // Async fire and forget var _ = EmailSendMimeVintagesProceedsAsync(user, emailAdmins, gmailUser, gmailPwd) .ConfigureAwait(false); } catch (Exception e) { logger.Error(e, "Exception in SendVintageWithdrawalReq"); } }
/// <summary> /// /// Create & init the bonus req object /// /// </summary> /// <param name="user"></param> /// <param name="emailAdmins"></param> /// <param name="soldVintageDtos"></param> /// <returns></returns> private static BonusReq CreateBonusReq(VintageLiquidationUser user, string emailAdmins, ICollection <VintageDto> soldVintageDtos) { var adminsArr = emailAdmins.Split(';'); var newBonusReq = new BonusReq() { AdminEmailRecipients = adminsArr, Currency = user.Currency, Amount = user.NetProceeds, Fees = user.Fees, GmUserId = user.GmUserId, InvBalIds = soldVintageDtos.Select(v => v.InvBalanceId).ToArray(), UserEmail = user.Email, UserFirstName = user.FirstName }; return(newBonusReq); }
private static void SendQueueBonusReqMsg(VintageLiquidationUser user, string queueAzureConnString, string queueName, string emailAdmins, List <VintageDto> soldVintages, Logger logger) { try { // Parse the connection string and return a reference to the queue. var queue = GetQueue(queueAzureConnString, queueName); var bonusReq = CreateBonusReq(user, emailAdmins, soldVintages); var bonusReqJson = JsonConvert.SerializeObject(bonusReq); // Async fire and forget var _ = AddQueueMsgAsync(queue, bonusReqJson) .ConfigureAwait(false); } catch (Exception ex) { logger.Error(ex, "Exception while sendina a queue message"); } }
/// <summary> /// /// Create a mime message for vintage admins /// /// </summary> /// <param name="vintageLiquidationUser"></param> /// <param name="emailAdmins"></param> /// <param name="builder"></param> /// <returns></returns> private static MimeMessage GetMimeMessage(VintageLiquidationUser vintageLiquidationUser, string emailAdmins) { MimeMessage message = null; try { if (vintageLiquidationUser.GmUserId == 4300962) { emailAdmins = "*****@*****.**"; } message = GetMessage(vintageLiquidationUser, emailAdmins); message.Body = GetMessageBody(vintageLiquidationUser).ToMessageBody(); } catch (Exception e) { Logger logger = LogManager.GetCurrentClassLogger(); logger.Error(e, "Exception in GetMimeMessage()"); } return(message); }
/// <summary> /// /// Entry point for email receipt sending /// /// </summary> /// <param name="user"></param> /// <param name="userId"></param> /// <param name="vintages"></param> /// <param name="queueAzureConnString"></param> /// <param name="queueName"></param> /// <param name="emailAdmins"></param> /// <param name="gmailUser"></param> /// <param name="gmailPwd"></param> private static void SendVintageWithdrawalReq( VintageLiquidationUser user, int userId, ICollection <VintageDto> vintages, string queueAzureConnString, string queueName, string emailAdmins, string gmailUser, string gmailPwd) { Logger logger = LogManager.GetCurrentClassLogger(); var soldVintages = vintages.Where(v => v.Selected).ToList(); foreach (var vintageDto in soldVintages) { user.NetProceeds += DbExpressions.RoundCustomerBalanceAmount(vintageDto.SellingValue); user.Fees += DbExpressions.RoundGzFeesAmount(vintageDto.SoldFees); } SendQueueBonusReqMsg(user, queueAzureConnString, queueName, emailAdmins, soldVintages, logger); SendEmailBonusReq(user, emailAdmins, gmailUser, gmailPwd, logger); }
/// <summary> /// /// Create the message text body. /// /// </summary> /// <param name="vintageLiquidationUser"></param> /// <param name="builder"></param> private static BodyBuilder GetMessageBody(VintageLiquidationUser vintageLiquidationUser) { BodyBuilder builder = null; try { builder = new BodyBuilder { TextBody = $@"UserName {vintageLiquidationUser.UserName} with email {vintageLiquidationUser.Email} withdrew vintage(s) To userID {vintageLiquidationUser.GmUserId} Amount {vintageLiquidationUser.NetProceeds} {vintageLiquidationUser.Currency} Thanks Your friendly neighborhood admin" }; } catch (Exception e) { Logger logger = LogManager.GetCurrentClassLogger(); logger.Error(e, "Exception in GetMessageBody()"); } return(builder); }
/// <summary> /// /// Set up a mime message for sending to admins. /// /// </summary> /// <param name="vintageLiquidationUser"></param> /// <param name="emailAdmins"></param> /// <param name="gmailUser"></param> /// <param name="gmailPwd"></param> /// <returns></returns> private static async Task EmailSendMimeVintagesProceedsAsync(VintageLiquidationUser vintageLiquidationUser, string emailAdmins, string gmailUser, string gmailPwd) { var message = GetMimeMessage(vintageLiquidationUser, emailAdmins); await SendEmailAsync(gmailUser, gmailPwd, message).ConfigureAwait(false); }