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);
            }
        }
示例#2
0
        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);
            }
        }