示例#1
0
        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() }));
        }
示例#2
0
        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"));
        }
示例#3
0
        //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));
        }
示例#4
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"));
        }