Exemplo n.º 1
0
 private void SendEmailMessage(SitkaSmtpClientService smtpClient, MailMessage mailMessage)
 {
     mailMessage.IsBodyHtml = true;
     mailMessage.From       = smtpClient.GetDefaultEmailFrom();
     mailMessage.ReplyToList.Add(_rioConfiguration.LeadOrganizationEmail);
     smtpClient.Send(mailMessage);
 }
Exemplo n.º 2
0
 private void SendEmailMessage(SitkaSmtpClientService smtpClient, MailMessage mailMessage)
 {
     mailMessage.IsBodyHtml = true;
     mailMessage.From       = smtpClient.GetDefaultEmailFrom();
     SitkaSmtpClientService.AddReplyToEmail(mailMessage);
     smtpClient.Send(mailMessage);
 }
Exemplo n.º 3
0
        private static MailMessage GenerateRescindedOfferEmail(string rioUrl, OfferDto offer,
                                                               TradeDto currentTrade,
                                                               PostingDto posting, SitkaSmtpClientService smtpClient)
        {
            var offerAction = currentTrade.CreateAccount.AccountID == offer.CreateAccount.AccountID
                ? posting.PostingType.PostingTypeID == (int)PostingTypeEnum.OfferToBuy ? "sell" : "buy"
                : posting.PostingType.PostingTypeID == (int)PostingTypeEnum.OfferToBuy ? "buy" : "sell";

            var toAccount   = offer.CreateAccount.AccountID == posting.CreateAccount.AccountID ? currentTrade.CreateAccount : posting.CreateAccount;
            var fromAccount = offer.CreateAccount.AccountID == posting.CreateAccount.AccountID
                ? posting.CreateAccount
                : currentTrade.CreateAccount;

            var properPreposition = offerAction == "sell" ? "to" : "from";
            var messageBody       =
                $@"
Hello,
<br /><br />
An offer to {offerAction} water {properPreposition} Account #{fromAccount.AccountNumber} ({fromAccount.AccountName}) was rescinded by the other party. You can see details of your transactions in the Water Accounting Platform Landowner Dashboard. 
<br /><br />
<a href=""{rioUrl}/landowner-dashboard/{toAccount.AccountNumber}"">View Landowner Dashboard</a>
{smtpClient.GetDefaultEmailSignature()}";
            var mailMessage = new MailMessage
            {
                Subject = $"Trade {currentTrade.TradeNumber} Rescinded",
                Body    = messageBody
            };

            foreach (var user in toAccount.Users)
            {
                mailMessage.To.Add(new MailAddress(user.Email, user.FullName));
            }
            return(mailMessage);
        }
Exemplo n.º 4
0
 private void SendEmailMessage(SitkaSmtpClientService smtpClient, MailMessage mailMessage)
 {
     mailMessage.IsBodyHtml = true;
     mailMessage.From       = smtpClient.GetDefaultEmailFrom();
     mailMessage.ReplyToList.Add(_rioConfiguration.LeadOrganizationEmail);
     SitkaSmtpClientService.AddBccRecipientsToEmail(mailMessage, EFModels.Entities.User.GetEmailAddressesForAdminsThatReceiveSupportEmails(_dbContext));
     smtpClient.Send(mailMessage);
 }
Exemplo n.º 5
0
        private void SendEmailToLandownerAndAdmins(UserDto userDto, List <AccountDto> addedAccounts)
        {
            var smtpClient   = HttpContext.RequestServices.GetRequiredService <SitkaSmtpClientService>();
            var mailMessages = GenerateAddedAccountsEmail(_rioConfiguration.WEB_URL, userDto, addedAccounts);

            foreach (var mailMessage in mailMessages)
            {
                SitkaSmtpClientService.AddBccRecipientsToEmail(mailMessage,
                                                               EFModels.Entities.User.GetEmailAddressesForAdminsThatReceiveSupportEmails(_dbContext));
                SendEmailMessage(smtpClient, mailMessage);
            }
        }
Exemplo n.º 6
0
        public ActionResult <UserDto> CreateUser([FromBody] UserCreateDto userUpsertDto)
        {
            var user = EFModels.Entities.User.CreateNewUser(_dbContext, userUpsertDto, userUpsertDto.LoginName,
                                                            userUpsertDto.UserGuid);

            var smtpClient  = HttpContext.RequestServices.GetRequiredService <SitkaSmtpClientService>();
            var mailMessage = GenerateUserCreatedEmail(_nebulaConfiguration.WEB_URL, user, _dbContext, smtpClient);

            SitkaSmtpClientService.AddCcRecipientsToEmail(mailMessage,
                                                          EFModels.Entities.User.GetEmailAddressesForAdminsThatReceiveSupportEmails(_dbContext));
            SendEmailMessage(smtpClient, mailMessage);

            return(Ok(user));
        }
Exemplo n.º 7
0
        private MailMessage GenerateUserCreatedEmail(string nebulaUrl, UserDto user, NebulaDbContext dbContext,
                                                     SitkaSmtpClientService smtpClient)
        {
            var messageBody = $@"A new user has signed up to the {_nebulaConfiguration.PlatformLongName}: <br/><br/>
 {user.FullName} ({user.Email}) <br/><br/>
As an administrator of the {_nebulaConfiguration.PlatformShortName}, you can assign them a role and associate them with a Billing Account by following <a href='{nebulaUrl}/users/{user.UserID}'>this link</a>. <br/><br/>
{smtpClient.GetSupportNotificationEmailSignature()}";

            var mailMessage = new MailMessage
            {
                Subject = $"New User in {_nebulaConfiguration.PlatformLongName}",
                Body    = $"Hello,<br /><br />{messageBody}",
            };

            mailMessage.To.Add(smtpClient.GetDefaultEmailFrom());
            return(mailMessage);
        }
Exemplo n.º 8
0
        private static List <MailMessage> GenerateCancelTransferEmail(string rioUrl, WaterTransferDto waterTransfer,
                                                                      SitkaSmtpClientService smtpClient)
        {
            var receivingAccount = waterTransfer.BuyerRegistration.Account;
            var transferringAccount = waterTransfer.SellerRegistration.Account;
            var mailMessages = new List <MailMessage>();
            var stringToReplace = "REPLACE_WITH_ACCOUNT_NUMBER";
            var messageBody = $@"This transaction has been canceled, and your annual water allocation will not be updated.
<ul>
    <li><strong>Buyer:</strong> {receivingAccount.AccountName} ({string.Join(", ", receivingAccount.Users.Select(x => x.Email))})</li>
    <li><strong>Seller:</strong> {transferringAccount.AccountName} ({string.Join(", ", transferringAccount.Users.Select(x => x.Email))})</li>
    <li><strong>Quantity:</strong> {waterTransfer.AcreFeetTransferred} acre-feet</li>
</ul>
<a href=""{rioUrl}/landowner-dashboard/{stringToReplace}"">View your Landowner Dashboard</a> to see your current water allocation, which has not been updated to reflect this trade.
<br /><br />
{smtpClient.GetDefaultEmailSignature()}";
            var mailTos = new List <AccountDto> {
                receivingAccount, transferringAccount
            }.SelectMany(x => x.Users);

            foreach (var mailTo in mailTos)
            {
                var specificMessageBody = messageBody.Replace(stringToReplace,
                                                              (receivingAccount.Users.Contains(mailTo)
                        ? receivingAccount.AccountNumber
                        : transferringAccount.AccountNumber).ToString());
                var mailMessage = new MailMessage
                {
                    Subject = "Water Transfer Canceled",
                    Body    = $"Hello {mailTo.FullName},<br /><br />{specificMessageBody}"
                };
                mailMessage.To.Add(new MailAddress(mailTo.Email, mailTo.FullName));
                mailMessages.Add(mailMessage);
            }
            return(mailMessages);
        }
Exemplo n.º 9
0
        private static MailMessage GeneratePendingOfferEmail(string rioUrl, TradeDto currentTrade,
                                                             OfferDto offer, PostingDto posting, SitkaSmtpClientService smtpClient)
        {
            var offerAction = currentTrade.CreateAccount.AccountID == offer.CreateAccount.AccountID
                ? posting.PostingType.PostingTypeID == (int)PostingTypeEnum.OfferToBuy ? "sell" : "buy"
                : posting.PostingType.PostingTypeID == (int)PostingTypeEnum.OfferToBuy ? "buy" : "sell";
            var toAccount   = offer.CreateAccount.AccountID == posting.CreateAccount.AccountID ? currentTrade.CreateAccount : posting.CreateAccount;
            var fromAccount = offer.CreateAccount.AccountID == posting.CreateAccount.AccountID
                ? posting.CreateAccount
                : currentTrade.CreateAccount;

            var properPreposition = offerAction == "sell" ? "to" : "from";
            var messageBody       =
                $@"
Hello,
<br /><br />
An offer to {offerAction} water {properPreposition} Account #{fromAccount.AccountNumber} ({fromAccount.AccountName}) has been presented for your review. 
<br /><br />
<a href=""{rioUrl}/trades/{currentTrade.TradeNumber}"">Respond to this offer</a>
{smtpClient.GetDefaultEmailSignature()}";
            var mailMessage = new MailMessage
            {
                Subject = "New offer to review",
                Body    = messageBody
            };

            foreach (var user in toAccount.Users)
            {
                mailMessage.To.Add(new MailAddress(user.Email, user.FullName));
            }
            return(mailMessage);
        }
Exemplo n.º 10
0
        private static List <MailMessage> GenerateAcceptedOfferEmail(string rioUrl, OfferDto offer,
                                                                     TradeDto currentTrade, PostingDto posting, WaterTransferDto waterTransfer, SitkaSmtpClientService smtpClient)
        {
            AccountDto buyer;
            AccountDto seller;

            if (currentTrade.CreateAccount.AccountID == posting.CreateAccount.AccountID)
            {
                if (posting.PostingType.PostingTypeID == (int)PostingTypeEnum.OfferToBuy)
                {
                    buyer  = posting.CreateAccount;
                    seller = currentTrade.CreateAccount;
                }
                else
                {
                    buyer  = currentTrade.CreateAccount;
                    seller = posting.CreateAccount;
                }
            }
            else
            {
                if (posting.PostingType.PostingTypeID == (int)PostingTypeEnum.OfferToBuy)
                {
                    buyer  = posting.CreateAccount;
                    seller = currentTrade.CreateAccount;
                }
                else
                {
                    buyer  = currentTrade.CreateAccount;
                    seller = posting.CreateAccount;
                }
            }


            var mailMessages = new List <MailMessage>();
            var messageBody  = $@"Your offer to trade water has been accepted.
<ul>
    <li><strong>Buyer:</strong> {buyer.AccountName} ({string.Join(", ",  buyer.Users.Select(x=>x.Email))})</li>
    <li><strong>Seller:</strong> {seller.AccountName} ({string.Join(", ", seller.Users.Select(x => x.Email))})</li>
    <li><strong>Quantity:</strong> {offer.Quantity} acre-feet</li>
    <li><strong>Unit Price:</strong> {offer.Price:$#,##0.00} per acre-foot</li>
    <li><strong>Total Price:</strong> {(offer.Price * offer.Quantity):$#,##0.00}</li>
</ul>
To finalize this transaction, the buyer and seller must complete payment and any other terms of the transaction. Once payment is complete, the trade must be confirmed by both parties within the Water Accounting Platform before the district will recognize the transfer.
<br /><br />
<a href=""{rioUrl}/register-transfer/{waterTransfer.WaterTransferID}"">Confirm Transfer</a>
{smtpClient.GetDefaultEmailSignature()}";
            var mailTos      = (new List <AccountDto> {
                buyer, seller
            }).SelectMany(x => x.Users);

            foreach (var mailTo in mailTos)
            {
                var mailMessage = new MailMessage
                {
                    Subject = $"Trade {currentTrade.TradeNumber} Accepted",
                    Body    = $"Hello {mailTo.FullName},<br /><br />{messageBody}"
                };
                mailMessage.To.Add(new MailAddress(mailTo.Email, mailTo.FullName));
                mailMessages.Add(mailMessage);
            }
            return(mailMessages);
        }
Exemplo n.º 11
0
 private void UpdateTradeStatusSendEmail(OfferDto offer, SitkaSmtpClientService smtpClient, MailMessage mailMessage,
                                         TradeStatusEnum updatedStatus)
 {
     Trade.Update(_dbContext, offer.Trade.TradeID, updatedStatus);
     SendEmailMessage(smtpClient, mailMessage);
 }