public ActionResult EditDrinkDetail(BuyDMDrinkView Buy, string DetailID) { int ordid = Int32.Parse(DetailID); var OrderID = db.CreateBuyOrder_Details.Find(ordid); //加入超過三樣配料,返回視圖 int addTot = Models.AnyDMorBuy.GetAddItemInt(Buy).Count; if (!ModelState.IsValid || addTot > 3) { Buy.SizeType = Models.AnyDMorBuy.DrinkSize(OrderID.MenuID, OrderID.DrinkID); //到時要寫配料的選擇超過三樣時的返回視圖 if (addTot > 3) { ViewBag.ErrorMessage = "配料最多只能選三樣喔!"; } ViewBag.DetailID = ordid; return(View(Buy)); } //更新訂單用明細 int SizePID = Int32.Parse(Buy.SizeTypeM); int SweetID = Models.AnyDMorBuy.GetSweetIceInt(Buy, "sweet"); int IceID = Models.AnyDMorBuy.GetSweetIceInt(Buy, "ice"); int Add01 = Models.AnyDMorBuy.GetOnlyAdditemInt(Buy, 1); int Add02 = Models.AnyDMorBuy.GetOnlyAdditemInt(Buy, 2); int Add03 = Models.AnyDMorBuy.GetOnlyAdditemInt(Buy, 3); int SCount = Models.AnyDMorBuy.GetSCount(Buy); var result = db.Database.ExecuteSqlCommand(@"UPDATE createbuyorder_detail SET SizePID = '" + SizePID + "', SweetID = '" + SweetID + "', IceID = '" + IceID + "', Additem01PID = '" + Add01 + "', Additem02PID = '" + Add02 + "', Additem03PID = '" + Add03 + "', Quantity = '" + Buy.Quantity + "', SCount = '" + SCount + "' Where DetailID = '" + ordid + "';"); //釋放資料(若不釋放則有資料會取未更新時的那筆) db.Dispose(); //更新總價格 NewDrinkDB db2 = new NewDrinkDB(); var OrderID2 = db2.CreateBuyOrder_Details.Find(ordid); var TotCount = db2.CreateBuyOrder_LeaderOrders.Find(OrderID.OrderID); var AllTotCount2 = db2.CreateBuyOrder_Details.Where(m => m.OrderID == TotCount.OrderID); int tot = 0; foreach (var item in AllTotCount2) { tot = tot + item.SCount; } TotCount.TotalCount = tot; db2.SaveChanges(); db2.Dispose(); //返回訂單檢視界面 return(RedirectToAction("OrderingDetail", "AnyDMorBuy", new { OrderID = OrderID.OrderID.ToString() })); }
public ActionResult ChangePsd(ChangePsdView chang) { if (!ModelState.IsValid) { return(View(chang)); } string UserMail = Helper.GetUserMail(); int UserID = Models.AccountModels.UserID(UserMail); //先確認舊密碼是否正確 AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); NewDrinkDB db = new NewDrinkDB(); User query = db.Users.Find(UserID); string Psd = PasswordUtility.AESDecryptor(query.Password, aes.Key, aes.IV); if (Psd != chang.OldPassword) { ViewBag.Error = "密碼輸入錯誤"; return(View(chang)); } string NewPsd = PasswordUtility.AESEncryptor(chang.Password, aes.Key, aes.IV); var result = db.Database.ExecuteSqlCommand(@"UPDATE users SET Password = '******', ConfirmPsd = '" + NewPsd + "' Where ID = '" + UserID + "';"); //關閉連線 db.Dispose(); string BuyDrink = Helper.GetUserBuyDrink(); string OrderSet = Helper.GetUserOrderSet(); string Message = Helper.GetUserMessage(); string Callnotice = Helper.GetUserCallnotice(); string ChangePsd = Helper.GetUserChangePsd(); string[] UserLimit = { BuyDrink, OrderSet, Message, Callnotice, ChangePsd }; ViewBag.UserLimit = UserLimit; TempData["message"] = "success"; return(RedirectToAction("Index", "Home")); }
//GET: Home/MessageView_New public ActionResult MessageView_New() { //取出使用者ID string UserMail = Helper.GetUserMail(); int UserID = Models.AnyDMorBuy.GetUserID_UseEmail(UserMail); var time = DateTime.Now; //確認截止訂單(將過期的訂單結止) Models.HomeModels.HaveEndOrder(); var resultCheck = db.SendMessageViews.Where(m => m.UserID == UserID && m.ReadOrNot == false); var EndresultAndresult = new List <SendMessageView>(); //判斷是否有資料超過三天,超過則刪除 foreach (var item in resultCheck) { string NowDay = time.ToString("yyyyMM"); string SendDay = item.SendTime.ToString("yyyyMM"); //如果不同年月則刪除 if (NowDay != SendDay) { var De = db.SendMessageViews.Find(item.ID); db.SendMessageViews.Remove(De); db.SaveChanges(); } //如果超過三天則刪除 string NowDay2 = time.ToString("dd"); string SendDay2 = item.SendTime.ToString("dd"); int nowD = Int32.Parse(NowDay2); int SedD = Int32.Parse(SendDay2); if (nowD - SedD >= 3) { var De = db.SendMessageViews.Find(item.ID); db.SendMessageViews.Remove(De); db.SaveChanges(); } } var db2 = new NewDrinkDB(); var result = db2.SendMessageViews.Where(m => m.UserID == UserID && m.ReadOrNot == false); if (result.Count() > 0) { //由於加入無有效日期的要素,將未設定定時關閉的訂單的有效日期隱藏 foreach (var item in result) { var MyStopOrder = db.CreateBuyOrder_LeaderOrders.Find(item.OrderID); if (MyStopOrder.CheckEnd == false) { var str = Convert.ToDateTime("1999-01-01 00:00:00"); item.EndOverTime = str; } EndresultAndresult.Add(new SendMessageView() { ID = item.ID, UserID = item.UserID, OrderID = item.OrderID, SentSubject = item.SentSubject, SentBody = item.SentBody, SentUser = item.SentUser, SentAlink = item.SentAlink, SendTime = item.SendTime, EndOverTime = item.EndOverTime, ReadOrNot = item.ReadOrNot }); } //將資料遞減排序 result = result.OrderBy(m => m.UserID).ThenByDescending(m => m.SendTime); } //將取消通知取出 var EndMessage = db.OrderEndingSends.Where(m => m.ToUser == UserID && m.ReadOrNot == false); var Endresult = new List <SendMessageView>(); if (EndMessage.FirstOrDefault() != null) { //判斷是否有資料超過三天,超過則刪除 foreach (var item in Endresult) { string NowDay = time.ToString("yyyyMM"); string SendDay = item.SendTime.ToString("yyyyMM"); //如果不同年月則刪除 if (NowDay != SendDay) { var De = db.OrderEndingSends.Find(item.ID); db.OrderEndingSends.Remove(De); db.SaveChanges(); } //如果超過三天則刪除 string NowDay2 = time.ToString("dd"); string SendDay2 = item.SendTime.ToString("dd"); int nowD = Int32.Parse(NowDay2); int SedD = Int32.Parse(SendDay2); if (nowD - SedD >= 3) { var De = db.OrderEndingSends.Find(item.ID); db.OrderEndingSends.Remove(De); db.SaveChanges(); } } foreach (var item in EndMessage) { var EndOrCancel = ""; if (item.EndOrCancel == 0) { EndOrCancel = "取消"; } if (item.EndOrCancel == 1) { EndOrCancel = "結束"; } var id = item.ID.ToString(); var EndConbin = db2.LeaderSendMessages.Where(m => m.OrderID == item.OrderID); foreach (var Enditem in EndConbin) { var LeaderN = db2.Users.Find(Enditem.SentUser); var Msg = LeaderN.Name + "於" + Enditem.EndOverTime + EndOrCancel + "了訂單."; EndresultAndresult.Add(new SendMessageView() { ID = id, OrderID = item.OrderID, SentSubject = Enditem.Subject, SentBody = Msg, SentAlink = EndOrCancel, SendTime = Enditem.EndOverTime, ReadOrNot = item.ReadOrNot }); } } } if (EndMessage.FirstOrDefault() == null && result.FirstOrDefault() == null) { ViewBag.NoMsg = "目前尚無任何訊息."; } EndresultAndresult = EndresultAndresult.OrderByDescending(m => m.SendTime).ToList(); return(View(EndresultAndresult)); }
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")); }