public UserTaskEmailVM GetUserTaskEmailDetails(long taskId) { try { UserTaskEmailVM result = (from Record in DbContext.UserTasks.AsNoTracking() where !Record.IsDeleted orderby Record.CreatedOn descending where (Record.UserTaskID == taskId) select new UserTaskEmailVM { Title = Record.Title, TicketNumber = Record.UserTaskID.ToString(), Description = Record.Description, Priority = Record.Priority, DueDate = Record.DueDate }).SingleOrDefault(); if (!string.IsNullOrEmpty(result.TicketNumber)) { result.TicketNumber = "UT-" + Convert.ToInt64(result.TicketNumber).ToString("000000"); } result.UserTaskDetails = GetUserTaskDetails(taskId); return(result); } catch (Exception ex) { logger.ErrorFormat("Exception Raised : Message[{0}] Stack Trace [{1}] ", ex.Message, ex.StackTrace); return(null); } }
private void SendUserTaskEmail(long taskId) { try { logger.DebugFormat("Sending User Task Email with Task ID [{0}]", taskId); UserTaskEmailVM taskDetail = userTaskManagement.GetUserTaskEmailDetails(taskId); if (taskDetail == null) { logger.DebugFormat("No Task Found With ID [{0}]", taskId); return; } string styleSheet = System.IO.File.ReadAllText(Server.MapPath("~/Themes/finance-1/css/emailstyle.css")); taskDetail.StyleSheet = styleSheet; var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/EmailTemplates/UserTask.cshtml")); string template = System.IO.File.ReadAllText(viewsPath); string uniqueNumber = Guid.NewGuid().ToString(); string body = Engine.Razor.RunCompile(template, string.Format("UserTaskEmail_{0}", uniqueNumber), typeof(UserTaskEmailVM), taskDetail); if (taskDetail != null && taskDetail.UserTaskDetails.Count > 0) { UserTaskDetailVM activeTaskDetail = taskDetail.UserTaskDetails.FirstOrDefault(x => x.IsActive == true); comManagement.Recipient = activeTaskDetail.ToUserEmail; comManagement.Subject = string.Format("Ticket {0} - {1} ", taskDetail.TicketNumber, taskDetail.Title); comManagement.Body = body; List <string> rcc = new List <string>(); rcc.Add(activeTaskDetail.FromUserEmail); logger.DebugFormat("Getting user with roles [{0}]", UserRoles.Manager); var role = RoleManager.Roles.Where(x => x.Name.Equals(UserRoles.Manager)).FirstOrDefault(); var userDepartments = userdepartmentManagement.GetAllUserDepartmentById(User.Identity.GetUserId()); if (userDepartments != null && userDepartments.Count() > 0) { var primaryDepartment = userDepartments.Where(x => x.IsPrimary).SingleOrDefault(); var users = userManagement.GetAllUsersByRoleAndDepartment(role.Id, primaryDepartment.DepartmentID); logger.DebugFormat("Total [{0}] users found with roles [{1}]", UserRoles.Manager, users.Count()); if (users.Count() > 0) { foreach (var user in users) { if (!user.Email.Equals(activeTaskDetail.FromUserEmail) && !user.Email.Equals(activeTaskDetail.ToUserEmail)) { rcc.Add(user.Email); } } } comManagement.RecipientCC = rcc; comManagement.HeaderImage = Server.MapPath("~/Themes/finance-1/img/logo.png"); Async.Do(() => comManagement.SendEmail()); logger.DebugFormat("Email Successfully Send"); } } } catch (Exception ex) { logger.ErrorFormat("Exception Raised : Message[{0}] Stack Trace [{1}] ", ex.Message, ex.StackTrace); } }