예제 #1
0
        public ActionResult GenerateMail(string mode, string topic_code, string dept = null, string[] dept_arry = null, string due_date = "", string pos = "")
        {
            try{
                Topic        = M_Mail.GetTopicByCode(topic_code);
                ViewBag.Mode = mode;
                ViewBag.Url  = $"http://172.27.170.19/ChangeControl/Detail/Index/?id={Topic.Code}";
                // ViewBag.Url = $"{Request.Url.Host}:{Request.Url.Port}/{Request.ApplicationPath}/Detail/Index/?id={Topic.Code}";
                ViewBag.Topic   = Topic;
                ViewBag.DueDate = due_date;
                if (ViewBag.Topic.FullStatus == "Waiting")
                {
                    ViewBag.Topic.FullStatus = "Request";
                }

                var           email           = RenderView("~/Views/Mail/index.cshtml", Topic);
                var           address_list    = new List <string>();
                List <String> temp_email_list = new List <string>();

                if (dept_arry != null) //Dept as array
                {
                    foreach (var temp_dept in dept_arry)
                    {
                        temp_email_list = M_Mail.GetEmailByDeptAndPosition(temp_dept, pos);
                        if (temp_email_list != null)
                        {
                            address_list.AddRange(temp_email_list);
                        }
                    }
                }
                else if (dept == "" || dept == null)  //Default department that related
                {
                    var related_list = M_Mail.GetRelatedByTopicCode(topic_code);

                    related_list.ForEach(rl => {
                        temp_email_list = M_Mail.GetEmailByDeptAndPosition(rl, pos);
                        if (temp_email_list != null)
                        {
                            address_list.AddRange(temp_email_list);
                        }
                    });
                }
                else   //Single department
                {
                    temp_email_list = M_Mail.GetEmailByDeptAndPosition(dept, pos);
                    if (temp_email_list != null)
                    {
                        address_list.AddRange(temp_email_list);
                    }
                }

                if (temp_email_list != null)
                {
                    SendMail(email, address_list);
                }
                return(Json(new { status = true }, JsonRequestBehavior.AllowGet));
                // return View(Topic);
            }catch (Exception err) {
                return(Json(new { error = err }, JsonRequestBehavior.AllowGet));
            }
        }