Exemple #1
0
        //後來糾團(用原本的orderID)
        //GET: AnyDMorBuy/SendMyMessage
        public ActionResult SendMyMessage(int BuyCheck)
        {
            ViewBag.DetailID = BuyCheck;

            //先去LeaderSendMessage找看看有沒有寄過
            var result = db.SendMessageViews.Where(m => m.OrderID == BuyCheck);

            if (result.FirstOrDefault() != null)
            {
                var Nresult = new EmailModelView();
                foreach (var item in result)
                {
                    Nresult = new EmailModelView()
                    {
                        Subject  = item.SentSubject,
                        Body     = item.SentBody,
                        CheckEnd = true
                    };
                    break;
                }
                return(View(Nresult));
            }

            return(View());
        }
Exemple #2
0
        public async Task <IActionResult> ChangeEmail(EmailModelView modelView)
        {
            if (ModelState.IsValid && await _usersService.Update(modelView) != null)
            {
                return(Ok());
            }

            return(BadRequest());
        }
        public ActionResult UpdateMail(EmailModelView model)
        {
            var mail = Session[$"Mail{model.CandidateId}"] as EmailModelView;

            mail.To      = model.To;
            mail.Bcc     = model.Bcc;
            mail.Subject = model.Subject;
            mail.Body    = model.Body;

            return(RedirectToAction("Index"));
        }
        public ActionResult CreateMail(int[] CandidateId)
        {
            try
            {
                var emplst = new List <Candidate>();
                for (int i = 0; i < CandidateId.Length; i++)
                {
                    emplst.Add(db.Candidate.Find(CandidateId[i]));
                }

                var n = Environment.NewLine;
                foreach (var item in emplst)
                {
                    EmailModelView mail = new EmailModelView();
                    mail.CandidateId = item.CandidateId;
                    mail.To          = item.Email;
                    mail.Bcc         = item.Employee.Email;
                    mail.Subject     = item.LevelId == 1 ? "Saishunkan System Vietnam_Thư mời test" : "Vòng 1 - Saishunkan System Vietnam_Thư mời phỏng vấn";
                    mail.Body        =
                        ($"Chào bạn {item.FullName},{n}" +
                         $"{n}" +
                         $"Chúng tôi là phụ trách nhân sự công ty Saishunkan System Vietnam.{n}" +
                         $"Cảm ơn bạn đã nộp hồ sơ ứng tuyển vị trí {item.Level.LevelName} {item.Position.PositionName} cho chúng tôi.{n}" +
                         $"{n}" +
                         $"Bên chúng tôi có kế hoạch phỏng vấn vào thời gian và địa điểm như sau:{n}" +
                         $"Thời gian: {item.InterviewTime}{n}" +
                         $"Địa điểm: {item.InterviewLocation}{n}" +
                         $"{n}" +
                         $"Thanks & Regards");

                    Session[$"Mail{item.CandidateId}"] = mail;
                }
                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #5
0
        public ActionResult SendMyMessage(EmailModelView MailC, string YearDate2)
        {
            NewDrinkDB dbR = new NewDrinkDB();

            //接收Model
            //接收使用者OrderID
            if (!ModelState.IsValid || String.IsNullOrEmpty(YearDate2))
            {
                ViewBag.DetailID = MailC.OrderID;
                if (String.IsNullOrEmpty(YearDate2))
                {
                    ViewBag.Message = "時間欄位未填.";
                }
                return(View(MailC));
            }
            //勾選系統關團的狀況
            ////有勾未填時間
            //if (String.IsNullOrEmpty(MailC.EndOverTime) && MailC.CheckEnd == true)
            //{
            //    ViewBag.Message = "您尚未填寫關團時間.";
            //    ViewBag.DetailID = MailC.OrderID;
            //    return View(MailC);
            //}
            ////填時間未勾
            //if (!String.IsNullOrEmpty(MailC.EndOverTime) && MailC.CheckEnd == false)
            //{
            //    ViewBag.Message = "請勾選系統自動關團.";
            //    ViewBag.DetailID = MailC.OrderID;
            //    return View(MailC);
            //}

            string EtimeEnd  = null;
            string MyTime    = null;
            var    time2     = DateTime.Now;
            var    InputTime = Convert.ToDateTime(YearDate2);

            //判斷時間是否非法
            if (time2 > InputTime)
            {
                ViewBag.DetailID = MailC.OrderID;
                ViewBag.Message  = "時間不可以是過去式.";
                return(View(MailC));
            }
            EtimeEnd = "截止日期: " + YearDate2;
            MyTime   = YearDate2;


            //判斷時間格式
            //須判斷: 月份,日期
            //"", "NaN-NaN-NaN"
            //int Hour = Int32.Parse(hours);
            //if (String.IsNullOrEmpty(YearDate) || YearDate == "NaN-NaN-NaN")
            //{
            //    var time2 = DateTime.Now;
            //    time2 = time2.AddHours(Hour);
            //    EtimeEnd = "截止日期: " + time2;
            //    MyTime = time2.ToString();
            //}

            //if (!String.IsNullOrEmpty(YearDate))
            //{
            //    DateTime ETimeM = Convert.ToDateTime(YearDate);
            //    var time2 = DateTime.Now;

            //    int EMon = Int32.Parse(ETimeM.ToString("MM"));
            //    int NMon = Int32.Parse(time2.ToString("MM"));
            //    //月份小
            //    if (EMon < NMon)
            //    {
            //        //回傳錯誤
            //        ViewBag.Message = "時間不可以是過去式.";
            //        ViewBag.DetailID = MailC.OrderID;
            //        ViewBag.Member = MailC.Member;
            //        return View(MailC);
            //    }
            //    //月份同
            //    if (EMon == NMon)
            //    {
            //        int EDate = Int32.Parse(ETimeM.ToString("dd"));
            //        int NDate = Int32.Parse(time2.ToString("dd"));
            //        //日期小
            //        if (EDate < NDate)
            //        {
            //            //回傳錯誤
            //            ViewBag.Message = "時間不可以是過去式.";
            //            ViewBag.DetailID = MailC.OrderID;
            //            ViewBag.Member = MailC.Member;
            //            return View(MailC);
            //        }
            //    }
            //    //[月份大],[月份同,日期大](直接加輸入的小時)
            //    if (EMon > NMon)
            //    {
            //        DateTime ETime = Convert.ToDateTime(YearDate);
            //        ETime = ETime.AddHours(Hour);
            //        MyTime = ETime.ToString();
            //        EtimeEnd = "截止日期: " + ETime;
            //    }

            //}

            ////取出所有有勾選的成員(不寄給自己)
            var PickM = new ChangeMem()
            {
                Member = MailC.Member
            };
            var AllMember = Models.AnyDMorBuy.CheckMem(PickM);

            if (AllMember == null || AllMember.Count() == 0)
            {
                ViewBag.DetailID = MailC.OrderID;
                ViewBag.EmptyM   = "請至少選擇一位成員.";
                return(View(MailC));
            }

            var time = DateTime.Now;
            ////取出使用者ID
            string UserMail = Helper.GetUserMail();
            int    UserID   = Models.AnyDMorBuy.GetUserID_UseEmail(UserMail);

            //這裡要先判斷使用者寄信的狀態,及時間(0為無寄信, 1為寄信中或上次寄信錯誤)
            //若為1則返回錯誤訊息(限制5分鐘後才可再寄信)
            var CheckYesSend = dbR.Users.Find(UserID);

            //判斷時間
            bool CheckThisTime = Models.AnyDMorBuy.CheckCanSend_Message(time, CheckYesSend.SendTime);

            if (CheckYesSend.SendOrNot == 1 && CheckThisTime == true)
            {
                ViewBag.DetailID    = MailC.OrderID;
                TempData["message"] = "Error";
                ViewBag.Error       = "Error";
                return(View(MailC));
            }
            else
            {
                //若為0寄信,並更改寄信狀態,紀錄時間
                CheckYesSend.SendOrNot = 1;
                CheckYesSend.SendTime  = time;
                dbR.SaveChanges();
            }

            //截止日期
            DateTime ETime2 = Convert.ToDateTime(MyTime);

            AesCryptoServiceProvider aes = new AesCryptoServiceProvider();

            //到時要循環寄出////////////////////////////////////////////////////////////////////////////////////////////
            //還要判斷是否重複寄出了
            //若重覆了則決定要updata時間還是讓使用者重建菜單

            //var AllMember = db.Users.Where(m => m.ID != UserID);
            //循環寄出
            foreach (var item in AllMember)
            {
                NewDrinkDB dbM = new NewDrinkDB();
                //取出成員資料
                var MemList = dbM.Users.Find(item);

                //http://172.16.8.4:42118
                //http://172.16.8.59:52118
                //作Guid加解密(作唯一鍵值)
                string plainText   = MemList.ID.ToString() + MailC.OrderID.ToString();
                Guid   userGuid    = System.Guid.NewGuid();
                var    dataAndGuid = Models.AnyDMorBuy.GuidwithOrderLogin(userGuid, plainText);

                string SendLink = "http://172.16.8.4:42118/Account/Get_MyOrder?ID=" + dataAndGuid;
                string NewBody  = MailC.Body + "菜單連結: http://172.16.8.4:42118/Account/Get_MyOrder?ID=" + dataAndGuid;

                if (!String.IsNullOrEmpty(EtimeEnd) && MailC.CheckEnd == true)
                {
                    NewBody = NewBody + EtimeEnd;
                }

                //團員mail
                string to = MemList.Email.ToString();
                //團長mail
                string from = UserMail;

                string      subject     = MailC.Subject;
                MailMessage mailMessage = new MailMessage(from, to);
                mailMessage.Subject = subject;
                mailMessage.Body    = NewBody;
                //string smtpServer = "mail.bingotimes.com.tw";
                string smtpServer = "smtp.gmail.com";
                //string smtpServer = "127.0.0.1";
                SmtpClient client = new SmtpClient(smtpServer, 25);
                //client.EnableSsl = true;

                //寄之前暫停1秒
                int millsecondsTimeout = 1000;
                System.Threading.Thread.Sleep(millsecondsTimeout);

                try
                {
                    client.Send(mailMessage);
                }
                catch (Exception e)
                {
                    ViewBag.DetailID    = MailC.OrderID;
                    TempData["message"] = "Error";
                    ViewBag.Error       = "Error";
                    return(View(MailC));
                }

                //還要判斷是否重複寄出了
                //若重覆了則決定要updata時間還是讓使用者重建菜單
                var CheckRepeat = db.SendMessageViews.Where(m => m.UserID == item && m.OrderID == MailC.OrderID && m.SentUser == UserID);
                if (CheckRepeat.FirstOrDefault() != null)
                {
                    //已經寄過了,更新時間及link
                    foreach (var update in CheckRepeat)
                    {
                        update.SendTime    = time;
                        update.SentAlink   = SendLink;
                        update.SentBody    = MailC.Body;
                        update.SentSubject = MailC.Subject;
                        update.ReadOrNot   = false;
                        db.SaveChanges();
                    }
                }
                else
                {
                    //第一次寄
                    //寫入資料庫(到時ID要改成其他人對應的ID)
                    dbM.SendMessageViews.Add(new SendMessageView()
                    {
                        ID          = dataAndGuid,
                        OrderID     = MailC.OrderID,
                        UserID      = MemList.ID,
                        SendTime    = time,
                        SentUser    = UserID,
                        SentBody    = MailC.Body,
                        SentAlink   = SendLink,
                        SentSubject = MailC.Subject,
                        ReadOrNot   = false,
                        EndOverTime = ETime2
                    });
                    dbM.SaveChanges();
                }
            }//End foreach.

            //循環結束 ///////////////////////////////////////////////////////////////////////////////////////////

            //這邊團長自己的也要判斷(link寫團長自己的ID)
            var CheckLeader = dbR.LeaderSendMessages.Where(m => m.SentUser == UserID && m.OrderID == MailC.OrderID);
            //取出MenuID
            var MenuID = dbR.CreateBuyOrder_LeaderOrders.Find(MailC.OrderID);
            //作Token加解密
            string plainTextU   = UserID.ToString() + MailC.OrderID.ToString();
            Guid   leaderGuid   = System.Guid.NewGuid();
            var    dataAndGuidU = Models.AnyDMorBuy.GuidwithOrderLogin(leaderGuid, plainTextU);
            //string LeaderID = PasswordUtility.AESEncryptor(UserID.ToString(), aes.Key, aes.IV);
            string LeaderLink = "http://172.16.8.59:52118/Account/Get_LeaderMyOrder?ID=" + dataAndGuidU;


            //寫入資料庫
            if (CheckLeader.FirstOrDefault() != null)
            {
                //已經寄過了,更新時間及link
                foreach (var item in CheckLeader)
                {
                    //item.ID = dataAndGuidU;
                    item.Subject = MailC.Subject;
                    item.Body    = MailC.Body;
                    //item.Alink = LeaderLink;
                    item.SendTime    = time;
                    item.EndOverTime = ETime2;
                }

                //寫入成員表(這裡要判斷不要重覆寫入)
                var AddmyAllMember  = dbR.CreateBuyOrder_MemberOrders.Where(m => m.OrderID == MailC.OrderID);
                var AddmyAllMember2 = new List <CreateBuyOrder_MemberOrder>();
                foreach (var item in AllMember)
                {
                    var HaveV = true;
                    foreach (var memC in AddmyAllMember)
                    {
                        if (item == memC.UserID)
                        {
                            //依狀況更新
                            memC.Together = true;
                            dbR.SaveChanges();
                            break;
                        }
                        HaveV = false;
                    }
                    if (HaveV == false)
                    {
                        //新增
                        AddmyAllMember2.Add(new CreateBuyOrder_MemberOrder()
                        {
                            UserID   = item,
                            OrderID  = MailC.OrderID,
                            Together = true
                        });
                    }
                }
                dbR.CreateBuyOrder_MemberOrders.AddRange(AddmyAllMember2);
            }
            else
            {
                dbR.LeaderSendMessages.Add(new LeaderSendMessage()
                {
                    ID          = dataAndGuidU,
                    SentUser    = UserID,
                    OrderID     = MailC.OrderID,
                    Subject     = MailC.Subject,
                    Body        = MailC.Body,
                    Alink       = LeaderLink,
                    SendTime    = time,
                    EndOverTime = ETime2
                });

                //寫入成員表(第一次寫入)
                var AddmyAllMember = new List <CreateBuyOrder_MemberOrder>()
                {
                };
                foreach (var item in AllMember)
                {
                    AddmyAllMember.Add(new CreateBuyOrder_MemberOrder()
                    {
                        UserID   = item,
                        OrderID  = MailC.OrderID,
                        Together = true
                    });
                }
                dbR.CreateBuyOrder_MemberOrders.AddRange(AddmyAllMember);
            }

            //將團長的訂單填入截止日期
            if (!String.IsNullOrEmpty(MyTime))
            {
                NewDrinkDB dbO      = new NewDrinkDB();
                var        OrderEnd = dbO.CreateBuyOrder_LeaderOrders.Find(MailC.OrderID);
                OrderEnd.EndThisTime = ETime2;
                OrderEnd.CheckEnd    = MailC.CheckEnd;
                dbO.SaveChanges();
            }

            //寄完所有信件後,將狀態改成0
            CheckYesSend.SendOrNot = 0;

            dbR.SaveChanges();

            //轉向已送出訊息檢視
            return(RedirectToAction("MessageView_Sent", "Home"));
        }