using System; using System.Collections.Generic; using System.Linq; using System.Web; using MongoDB.Driver; using MongoDB.Bson; using AIAHTML5.API.Properties; using AIAHTML5.API.Constants; using log4net; using System.Net.Mail; using AIAHTML5.API.Utility; using System.Text; using System.IO; using System.Net.Mime; using System.Configuration; using System.Collections; using System.Data; using System.Reflection; using Newtonsoft.Json.Linq; namespace AIAHTML5.API.Models { public class UserUtility { public static bool SendEmail(dynamic UserDetails, bool isMailForForgotPassword, bool unblockUser = false) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside SendEmail in for isMailForForgotPassword =" + isMailForForgotPassword); string mailSubject = string.Empty; string userEmailId = string.Empty; try { List lstLinkedResource = new List(); EmailUtility emailUtility = new EmailUtility(); List lstToAddress = new List(); List lstBccAddress = new List(); string emailText = string.Empty; string userId = string.Empty; string userName = string.Empty; string fName = string.Empty; string lName = string.Empty; string site_url = Convert.ToString(ConfigurationManager.AppSettings["Site_URL"]); if (UserDetails.LoginId != "") userId = UserDetails.LoginId.ToString(); if (UserDetails.EmailId != "") userEmailId = UserDetails.EmailId.ToString(); if (UserDetails.FirstName != "") fName = UserDetails.FirstName.ToString(); if (UserDetails.LastName != "") lName = UserDetails.LastName.ToString(); string fullName = fName + " " + lName; string logoPath = HttpContext.Current.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["LogoPath"])); string templatePath = string.Empty; string resetPasswordLink = string.Empty; if (isMailForForgotPassword) { if (unblockUser) { templatePath = Convert.ToString(ConfigurationManager.AppSettings["UnblockUserEmailTemplate"]); resetPasswordLink = site_url + "?unb:" + HttpUtility.UrlEncode(userEmailId); } else { templatePath = Convert.ToString(ConfigurationManager.AppSettings["ForgotPasswordEmailTemplate"]); resetPasswordLink = site_url + "?em:" + HttpUtility.UrlEncode(userEmailId); } } else templatePath = Convert.ToString(ConfigurationManager.AppSettings["ForgotUserIdEmailTemplate"]); logger.Debug("inside SendEmail for templatePath= " + templatePath + ", userId= " + userId + ", userEmailId= " + userEmailId + ",fullName= " + fullName + ",resetPasswordLink= " + resetPasswordLink); string mailBody = UserUtility.GetMailBodyTextFromTemplate(templatePath, userId, userEmailId, fullName, resetPasswordLink); lstToAddress.Add(userEmailId); emailText = mailBody; logger.Debug("emailText= " + emailText); // for embedding images in email if (emailText.Contains(" lstToAddress = new List(); List lstBccAddress = new List(); string userEmailId = string.Empty; string fullName = string.Empty; string emailMessage = string.Empty; string[] mailToArr = (ConfigurationManager.AppSettings["AdminSupport"]).Split(','); if (mailToArr.Length > 0) { for (int i = 0; i < mailToArr.Length; i++) { lstToAddress.Add(mailToArr[i].ToString()); } } fullName = userInfo["firstName"].ToString() + " " + userInfo["lastName"].ToString(); userEmailId = userInfo["emailId"].ToString(); emailMessage = userInfo["userMessage"].ToString(); lstToAddress.Add(userEmailId); emailMessage = emailMessage.Replace("\n", "
"); emailMessage += "

"; string mailSubject = "Admin Support request initiated for:"; emailUtility.sHostName = Convert.ToString(ConfigurationManager.AppSettings["HostAddress"]); emailUtility.sFromAddress = Convert.ToString(ConfigurationManager.AppSettings["SenderEmailAddress"]); emailUtility.bIsBodyHtml = true; emailUtility.bEnableSsl = false; emailUtility.sSubject = mailSubject + " " + userEmailId; emailUtility.sBodyText = emailMessage; emailUtility.iPort = 25; emailUtility.sToAddresses = lstToAddress; emailUtility.sBccAddresses = lstBccAddress; emailUtility.SendSmtpEmail(); return true; } catch (Exception ex) { logger.Fatal("exception in SendAdminRequestEmail for email =" + userInfo["emailId"] + ". msg= " + ex.Message + ", stacktrace= " + ex.StackTrace); return false; } } public static bool SendEmailForException(int userid, ArrayList mailToList, string sender, string mailSubject = "", string mailBody = "", bool isMailForClentSite=false, JObject info=null) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); // logger.Debug("Inside SendEmail with userid =" + userid); try { EmailUtility emailUtility = new EmailUtility(); List lstToAddress = new List(); List lstBccAddress = new List(); string emailMessage = string.Empty; string senderEmailId = string.Empty; foreach (string email in mailToList) { lstToAddress.Add(email); } if (isMailForClentSite && info!=null) { emailMessage = "Unable to process request for siteUrl =" + info["siteIP"].ToString() + " and siteIP= " + info["siteIP"].ToString() + " & accountNumber = " + info["accountNumber"].ToString() + " &edition = " + info["edition"].ToString() ; } else { emailMessage = "Unable to process request for userid: " + userid; } if (string.IsNullOrEmpty(sender)) senderEmailId = Convert.ToString(ConfigurationManager.AppSettings["SenderEmailAddress"]); else senderEmailId = sender; emailMessage += mailBody; emailMessage = emailMessage.Replace("\n", "
"); emailMessage += "

"; emailUtility.sHostName = Convert.ToString(ConfigurationManager.AppSettings["HostAddress"]); emailUtility.sFromAddress = senderEmailId; emailUtility.bIsBodyHtml = true; emailUtility.bEnableSsl = false; emailUtility.sSubject = mailSubject; emailUtility.sBodyText = emailMessage; emailUtility.iPort = 25; emailUtility.sToAddresses = lstToAddress; emailUtility.sBccAddresses = lstBccAddress; emailUtility.SendSmtpEmail(); return true; } catch (Exception ex) { if (isMailForClentSite){ logger.Fatal("exception in SendEmail for siteUrl =" + info["siteIP"].ToString()+ ". msg= " + ex.Message + ", stacktrace= " + ex.StackTrace); } else logger.Fatal("exception in SendEmail for userid"+userid+ ". msg= " + ex.Message + ", stacktrace= " + ex.StackTrace); return false; } } public static bool SendEmail(Newtonsoft.Json.Linq.JObject userInfo, ArrayList mailToList, string sender, string mailSubject = "", string mailBody = "", bool isCalForLabExerciseReport=false) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("Inside SendEmail with UserInfo =" + userInfo); try { EmailUtility emailUtility = new EmailUtility(); List lstToAddress = new List(); List lstBccAddress = new List(); string emailMessage = string.Empty; string senderEmailId = string.Empty; foreach (string email in mailToList) { lstToAddress.Add(email); } if (!isCalForLabExerciseReport) emailMessage = "Unable to process request for "; else emailMessage = " "; if (UserUtility.CheckIfPropertyExists(userInfo, "username") && !string.IsNullOrEmpty(userInfo["username"].ToString())) emailMessage += "username: " + userInfo["username"].ToString() + ""; if (UserUtility.CheckIfPropertyExists(userInfo, "password") && !string.IsNullOrEmpty(userInfo["password"].ToString())) emailMessage += "& password: " + userInfo["password"].ToString() + "

"; if (UserUtility.CheckIfPropertyExists(userInfo, "emailId") && !string.IsNullOrEmpty(userInfo["emailId"].ToString())) emailMessage += "emailId: " + userInfo["emailId"].ToString() + "

"; if (UserUtility.CheckIfPropertyExists(userInfo, "accountNumber") && !string.IsNullOrEmpty(userInfo["accountNumber"].ToString())) emailMessage += "accountNumber: " + userInfo["accountNumber"].ToString() + "

"; if (string.IsNullOrEmpty(sender)) senderEmailId = Convert.ToString(ConfigurationManager.AppSettings["SenderEmailAddress"]); else senderEmailId = sender; emailMessage += mailBody; emailMessage = emailMessage.Replace("\n", "
"); // emailMessage += "

"; emailMessage = "" + emailMessage + ""; emailUtility.sHostName = Convert.ToString(ConfigurationManager.AppSettings["HostAddress"]); emailUtility.sFromAddress = senderEmailId; emailUtility.bIsBodyHtml = true; // emailUtility.bEnableSsl = false; emailUtility.bEnableSsl = true; emailUtility.sSubject = mailSubject; emailUtility.sBodyText = emailMessage; //emailUtility.iPort = 25; emailUtility.iPort = 587; emailUtility.sToAddresses = lstToAddress; emailUtility.sBccAddresses = lstBccAddress; emailUtility.sUserName = senderEmailId; emailUtility.SendSmtpEmail(); return true; } catch (Exception ex) { logger.Fatal("exception in SendEmail for username: " + userInfo["username"].ToString() + " & password: " + userInfo["password"].ToString() + " email =" + userInfo["emailId"] + ". msg= " + ex.Message + ", stacktrace= " + ex.StackTrace); return false; } } public static ArrayList GetSupportMailList() { ArrayList supoortMailList = new ArrayList(); string[] mailToArr = (ConfigurationManager.AppSettings["AdminSupport"]).Split(','); if (mailToArr.Length > 0) { for (int i = 0; i < mailToArr.Length; i++) { supoortMailList.Add(mailToArr[i].ToString()); } } return supoortMailList; } protected static bool CheckIfPropertyExists(dynamic dynamicObject, string propertyName) { var res = dynamicObject[propertyName]; if (res != null) return true; else return false; } public DataTable ToDataTable(List items) { DataTable dataTable = new DataTable(typeof(T).Name); //Get all the properties PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo prop in Props) { //Setting column names as Property names dataTable.Columns.Add(prop.Name); } foreach (T item in items) { var values = new object[Props.Length]; for (int i = 0; i < Props.Length; i++) { //inserting property values to datatable rows values[i] = Props[i].GetValue(item, null); } dataTable.Rows.Add(values); } //put a breakpoint here and check datatable return dataTable; } } }