//ket thuc
        //2
        public ActionResult DetailRQ2(int id)
        {
            RequestModel rm = new RequestModel();
            Request_StationeryModel rm1 = new Request_StationeryModel();
            ViewData["if"] = rm.Infomation(id);
            ViewData["if1"] = rm1.ListR_S(id);

            return View();
        }
        public ActionResult Addrq()
        {
            ValidateRequest = false;
              string a = Request.QueryString["a"];

               if (Session["giohang"]== null)
               {
               Response.Write("Ban chua lua chon san pham !");
               }
               else
               {
               List<Request_Stationery> ls = new List<Request_Stationery>();
               foreach( GiohangModel gm in (List<GiohangModel>)Session["giohang"] )
               {
                   Request_Stationery s = new Request_Stationery();
                   s.ProductId = gm.Productid;
                   s.Quantity = gm.Soluong;
                   ls.Add(s);
               }
               string chuoi = "";
               Employee el = (Employee)Session["Employee"];//form
               Request_StationeryModel rsm = new Request_StationeryModel();
               Request r = new Request();
               string[] kq = a.Split('|');
               chuoi +=  kq[0] + kq[1] + kq[2];
               r.RequestName = kq[0];
               r.RequestContent = kq[1];
               r.Description = kq[2];
               r.DateDispatch = DateTime.Now;
               r.Accept = true;
               r.State = "1";
               r.CatalogRQId = Convert.ToInt32(kq[3]);
               r.EmployeeNumber = el.EmployeeNumber;
               rsm.inserdata(r);
               int a1 = r.RequestId;
               foreach( Request_Stationery r1 in ls )
               {
                   r1.RequestId = a1;
                   rsm.insert2(r1);
               }
               Response.Write(ls.Count);
              RequestModel rm = new RequestModel();

              string ixep = el.RegistrationNumber;
              Employee xep = rsm.informationxep(ixep);
              DataClassesStationeryDataContext dtdc = new DataClassesStationeryDataContext();
               Config c1 = dtdc.Configs.First();
               if (rm.Send(el.Email, xep.Email, kq[0], kq[1], c1.Type,Convert.ToInt32(c1.Ports), c1.MailNetwork, c1.Password))
               {
                   Redirect("Default1/MyRequest10");
               }

               }
            return null;
        }
        //bat dau
        public ActionResult DetailRQ(int id)
        {
            RequestModel rm = new RequestModel();
            Request_StationeryModel rm1 = new Request_StationeryModel();
            ViewData["if"] = rm.Infomation(id);
            ViewData["if1"] = rm1.ListR_S(id);
            Employee el = (Employee)Session["Employee"];
            ViewData["em"] = dc.Employees.Where(i => i.EmployeeNumber.Equals(el.RegistrationNumber)).ToList().First();

            return View();
        }
        public ActionResult Doipw(string id)
        {
            Config cf = dct.Configs.OrderByDescending(c => c.BuildDate).ToList().First();
            Employee el = (Employee)Session["Employee"];
            Employee el2 = dct.Employees.Where(e => e.EmployeeNumber == el.RegistrationNumber).First();
            RequestModel rq = new RequestModel();

            string From = cf.MailName;
            string To = el2.Email;
            //string cc = e2.Email;
            string type = cf.Type;
            int post = Convert.ToInt32(cf.Ports);
            string mailnetword = cf.MailNetwork;
            string pass = cf.Password;
            string Subject = el.FullName + "Change Password";
            string Message = "<span><b>From:</b> " + el.FullName + "</span><br/>" + "<b>Date Dispatch:</b> " + DateTime.Now + "<br/>";
            em.changepass(el.EmployeeNumber, mahoa_giaima.maHoa(id));
            rq.Send(From, To, Subject, Message, type, post, mailnetword, pass);
            Response.Write("Da change Password thanh cong");
            return null;
        }
        public ActionResult DeleteRQ3(FormCollection form)
        {
            Request_StationeryModel rs = new Request_StationeryModel();
            RequestModel rq = new RequestModel();
            List<Request_Stationery> rstm = dc.Request_Stationeries.ToList();

                foreach (Request_Stationery rst in rstm)
                {
                    if (Convert.ToInt32(form["requestid"]) == rst.RequestId)
                        rs.DeleteRQ_st(Convert.ToInt32(form["requestid"]));
                }
                if (rq.DeleteRQ(Convert.ToInt32(form["requestid"])))
                {
                    Session["dlrequest"] = 1;
                }
                else
                {
                    Session["dlrequest"] = 2;
                }

                return RedirectToAction("Myrequest10/#tabs-7");
        }
        public ActionResult update55(FormCollection form)
        {
            Config cf = dc.Configs.OrderByDescending(c => c.BuildDate).ToList().First();
            RequestModel22 rq22 = new RequestModel22();
            RequestModel rq = new RequestModel();
            Employee e = (Employee)Session["Employee"];
            Employee e1 = (Employee)Session["eplo1"];//nb req
            Employee e2 = dc.Employees.Where(ee => ee.EmployeeNumber == e1.RegistrationNumber).ToList().First();
            ViewData["lst7"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("2") && r1.Acc1 == false) || (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("7") && r1.Acc1 == false)).OrderByDescending(r => r.DDispatch1).ToList();
            string From = cf.MailName;
            string To = e1.Email;
            string cc = e2.Email;
            string type = cf.Type;
            int post = Convert.ToInt32(cf.Ports);
            string mailnetword = cf.MailNetwork;
            string pass = cf.Password;
            string Subject = "No Approved (Request Rject) " + form["rname"].ToString();
            string Message = "<span><b>From:</b> " + e.FullName + "</span><br/>" + "<b>Date Dispatch:</b> " + form["dd"].ToString() + "<br/>" + "<b>Content:</b> " + form["rc"].ToString() + "<br/>" + "<b>Description:</b> " + form["dt"].ToString();
            if (form["st6"].Equals("7"))
            {
                if (rq.Send1(From, To, cc, Subject, Message, type, post, mailnetword, pass))
                {

                    rq.update(Convert.ToInt32(form["requestid"]), form["rname"].ToString(), form["st"].ToString(), Convert.ToDateTime(form["dd"]), DateTime.Now, Convert.ToBoolean(form["acc"]), form["rc"].ToString(), form["en"].ToString(), form["dt"].ToString(), Convert.ToInt32(form["ctid"]));
                    Session["email"] = 1;
                }
                else
                    Session["email"] = 2;
            }
            else
            {
                if (rq.Send(From, To, Subject, Message, type, post, mailnetword, pass))
                {
                    rq.update(Convert.ToInt32(form["requestid"]), form["rname"].ToString(), form["st"].ToString(), Convert.ToDateTime(form["dd"]), DateTime.Now, Convert.ToBoolean(form["acc"]), form["rc"].ToString(), form["en"].ToString(), form["dt"].ToString(), Convert.ToInt32(form["ctid"]));
                    Session["email"] = 1;
                }
                else
                    Session["email"] = 2;
            }
            return RedirectToAction("MyRequest10");
        }
        public ActionResult update4(FormCollection form)
        {
            Request_StationeryModel rm1 = new Request_StationeryModel();

            List<Stationery> lstr = dc.Stationeries.ToList();
            Config cf = dc.Configs.OrderByDescending(c => c.BuildDate).ToList().First();
            RequestModel rq = new RequestModel();
            StationeryModel stmd = new StationeryModel();
            Employee e = (Employee)Session["Employee"];
            Employee e1 = (Employee)Session["eplo"];
            Employee e2 = dc.Employees.Where(ee => ee.EmployeeNumber == e1.RegistrationNumber).ToList().First();
            RequestModel22 rq22 = new RequestModel22();
               // Employee e1 = dc.Employees.Where(ee => ee.EmployeeNumber == e.RegistrationNumber).ToList().First();
            ViewData["lst5"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("1") && r1.Acc1 == true) || (r1.Stte1.Equals("5") && r1.Acc1 == true)).OrderByDescending(r => r.DDispatch1).ToList();
            //
            string From = cf.MailName;
            string To = e1.Email;
            string cc = e2.Email;
            string type = cf.Type;
            int post = Convert.ToInt32(cf.Ports);
            string mailnetword = cf.MailNetwork;
            string pass = cf.Password;
            string Subject = "Approved Request " + form["rname"].ToString();
            string Message = "<span><b>From:</b> " + e.FullName + "</span><br/>" + "<b>Date Dispatch:</b> " + form["dd"].ToString() + "<br/>" + "<b>Content:</b> " + form["rc"].ToString() + "<br/>" + "<b>Description:</b> " + form["dt"].ToString();
            //mail
            List<Request_Stationery> rqs = dc.Request_Stationeries.Where(s => s.RequestId == Convert.ToInt32(form["requestid"])).ToList();
            string str = " ";
            Session["result"] = true;
            //test
            foreach (Stationery st in lstr)
            {
                foreach (Request_Stationery rs in rqs)
                {

                    if (st.ProductId == rs.ProductId && rs.Quantity > st.Quantity)
                    {
                        Session["result"] = false;
                        break;
                    }

                }

            }
            //
            //print item
            if (Convert.ToBoolean(Session["result"]) == false)
            {
                foreach (Stationery st in lstr)
                {
                    foreach (Request_Stationery rs in rqs)
                    {
                        if (st.ProductId == rs.ProductId && rs.Quantity > st.Quantity)
                        {
                            str = str + st.ProductName.ToString() + "&nbsp_&nbsp";
                        }
                    }
                }
            }
            else if (Convert.ToBoolean(Session["result"]) == true)
            {
                if (form["st3"].Equals("5"))
                {
                    if (rq.Send1(From, To, cc, Subject, Message, type, post, mailnetword, pass))
                    {
                        //////
                        List<Stationery> stnr = dc.Stationeries.ToList();
                        List<Request_Stationery> listrq = dc.Request_Stationeries.Where(l => l.RequestId == Convert.ToInt32(form["requestid"])).ToList();
                        //
                        foreach (Stationery s in stnr)
                       {
                           foreach (Request_Stationery v in listrq)
                           {
                               if (s.ProductId == v.ProductId)
                                   stmd.EditST_RQ(v.ProductId, Convert.ToInt32(s.Quantity - v.Quantity));
                           }
                        }

                        //
                        rq.update(Convert.ToInt32(form["requestid"]), form["rname"].ToString(), form["st"].ToString(), Convert.ToDateTime(form["dd"]), DateTime.Now, Convert.ToBoolean(form["acc"]), form["rc"].ToString(), form["en"].ToString(), form["dt"].ToString(), Convert.ToInt32(form["ctid"]));

                        Session["email"] = 1;
                    }
                    else
                        Session["email"] = 2;
                    //

                }
                else
                {
                    if (rq.Send(From, To, Subject, Message, type, post, mailnetword, pass))
                    {
                        List<Stationery> stnr = dc.Stationeries.ToList();
                        List<Request_Stationery> listrq = dc.Request_Stationeries.Where(l => l.RequestId == Convert.ToInt32(form["requestid"])).ToList();
                        //
                        foreach (Stationery s in stnr)
                        {
                            foreach (Request_Stationery v in listrq)
                            {
                                if(s.ProductId==v.ProductId)
                                stmd.EditST_RQ(v.ProductId, Convert.ToInt32(s.Quantity-v.Quantity));
                            }
                        }

                        rq.update(Convert.ToInt32(form["requestid"]), form["rname"].ToString(), form["st"].ToString(), Convert.ToDateTime(form["dd"]), DateTime.Now, Convert.ToBoolean(form["acc"]), form["rc"].ToString(), form["en"].ToString(), form["dt"].ToString(), Convert.ToInt32(form["ctid"]));
                        Session["email"] = 1;
                    }
                    else
                        Session["email"] = 2;
                }
            }
            //mail
            Session["qty"] = str;
            //

            return RedirectToAction("MyRequest10");
        }
        public ActionResult update3(int requestid, string rname, string st, DateTime dd, DateTime da, bool acc, string rc, string en, string dt, int ctid)
        {
            RequestModel rq = new RequestModel();
            Employee e = (Employee)Session["Employee"];

            ViewData["lst2"] = rq.ListRQ().Where(r => e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("4") && r.Acc1 == true).OrderByDescending(r => r.DDispatch1).ToList();
            rq.update(requestid, rname, st, dd, da, acc, rc, en, dt, ctid);
            return RedirectToAction("MyRequest10");
        }
        //
        //
        //
        public ActionResult MyRequest10()
        {
            //Session["ac"] = id;
            if (Session["Employee"] == null)
            {
                return RedirectToAction("Login");
            }
            RequestModel rq = new RequestModel();
            RequestModel22 rq22 = new RequestModel22();
            Employee e = (Employee)Session["Employee"];
            //my newrequest/
            ViewData["lst"] = rq22.Listrq2().Where(r => (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("1") && r.Acc1 == true || (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("5") && r.Acc1==true)) || (e.EmployeeNumber.Equals(r.RNumber1) && r.Stte1.Equals("5")&& r.Acc1==true)).OrderByDescending(r => r.DDispatch1).ToList();
            //Request Approved/
            ViewData["lst1"] = rq22.Listrq2().Where(r => (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("2")) ||(e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("9") && r.Acc1==false)|| (e.EmployeeNumber.Equals(r.RNumber1) && r.Stte1.Equals("6") && r.Acc1 == true) || (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("6") && r.Acc1 == true) || (e.EmployeeNumber.Equals(r.RNumber1) && r.Stte1.Equals("66") && r.Acc1 == true) || (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("66") && r.Acc1 == true) || (e.EmployeeNumber.Equals(r.RNumber1) && r.Stte1.Equals("7") && r.Acc1 == false) || (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("7") && r.Acc1 == false)).OrderByDescending(r => r.DDispatch1).ToList();

            //My Accept/
            ViewData["lst2"] = rq.ListRQ().Where(r => (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("4") && r.Acc1 == true) || (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("7") && r.Acc1 == true)).OrderByDescending(r => r.DDispatch1).ToList();
               //My Reject/
            ViewData["lst3"] = rq.ListRQ().Where(r => (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("4") && r.Acc1 == false) || (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("8") && r.Acc1 == true)).OrderByDescending(r => r.DDispatch1).ToList();

            //Request No Approved/
            ViewData["lst4"] = rq22.Listrq2().Where(r => (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("3")) || (e.EmployeeNumber.Equals(r.RNumber1) && r.Stte1.Equals("6") && r.Acc1 == false) || (e.EmployeeNumber.Equals(r.ENumber1) && r.Stte1.Equals("6") && r.Acc1 == false)).OrderByDescending(r => r.DDispatch1).ToList();
            //New Request
            ViewData["lst5"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("1") && r1.Acc1 == true)).OrderByDescending(r => r.DDispatch1).ToList();
            //
            ViewData["lst55"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("1") && r1.Acc1 == true) || (r1.Stte1.Equals("5") && r1.Acc1 == true)).OrderByDescending(r => r.DDispatch1).ToList();
            //Withdraw Request/
            ViewData["lst6"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("1") && r1.Acc1 == false) || (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("5") && r1.Acc1 == false)).OrderByDescending(r => r.DDispatch1).ToList();
            //
            ViewData["lst66"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("1") && r1.Acc1 == false) || (r1.Stte1.Equals("5") && r1.Acc1 == false)).OrderByDescending(r => r.DDispatch1).ToList();
               //Cancel Request/
            ViewData["lst7"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("2") && r1.Acc1 == false) || (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("7") && r1.Acc1 == false)).OrderByDescending(r => r.DDispatch1).ToList();
            //
            ViewData["lst77"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("2") && r1.Acc1 == false) || (r1.Stte1.Equals("7") && r1.Acc1 == false)).OrderByDescending(r => r.DDispatch1).ToList();
            //Accept Request/
            ViewData["lst8"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("4") && r1.Acc1 == true) || (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("7") && r1.Acc1 == true)).OrderByDescending(r => r.DDispatch1).ToList();
            //
            ViewData["lst88"] = rq22.Listrq2().Where(r1 => (e.EmployeeNumber.Equals(r1.RNumber1) && r1.Stte1.Equals("4") && r1.Acc1 == true) || (r1.Stte1.Equals("7") && r1.Acc1 == true)).OrderByDescending(r => r.DDispatch1).ToList();

            return View("myrequest10");
        }
 //
 //5
 public ActionResult DetailRQ5(int id)
 {
     RequestModel rm = new RequestModel();
     Request_StationeryModel rm1 = new Request_StationeryModel();
     ViewData["if"] = rm.Infomation(id);
     ViewData["if1"] = rm1.ListR_S(id);
     Session["eplo1"] = dc.Employees.Where(e => e.EmployeeNumber == ((RequestModel)ViewData["if"]).ENumber1).ToList().First();
     return View();
 }
 //
 //4
 public ActionResult DetailRQ4(int id)
 {
     Employee el = (Employee)Session["Employee"];
     RequestModel rm = new RequestModel();
     Request_StationeryModel rm1 = new Request_StationeryModel();
     ViewData["if"] = rm.Infomation(id);
     ViewData["if1"] = rm1.ListR_S(id);
     ViewData["role"] = dc.Roles.Where(r => r.RoleId == el.RoleId).ToList().First();
     Session["eplo"]=dc.Employees.Where(e=>e.EmployeeNumber==((RequestModel)ViewData["if"]).ENumber1).ToList().First();
     return View();
 }
 //chi duoc anh xa co so du lieu len thoi
 public List<RequestModel> ListRQ()
 {
     List<RequestModel> Listr = new List<RequestModel>();
     var requests = from r in dc.Requests
                    join ca in dc.CatalogeRQs on r.CatalogRQId equals ca.CatalogRQId
                    join el in dc.Employees on r.EmployeeNumber equals el.EmployeeNumber
                   select new
                   {
                       CatalogRQId=ca.CatalogRQId,
                       RequestId=r.RequestId,
                       EmployeeNumber=r.EmployeeNumber,
                       FullName=el.FullName,
                       RequestName = r.RequestName,
                       CatalogRQName = ca.CatalogRQName,
                       DateDispatch = r.DateDispatch,
                       DateApprove = r.DateApprove,
                       RequestContent=r.RequestContent,
                       Description=r.Description,
                       State=r.State,
                       Accept=r.Accept
                   };
     foreach (var rr in requests)
     {
         RequestModel obrq = new RequestModel();
         obrq.CRQId1 = rr.CatalogRQId;
         obrq.RId = rr.RequestId;
         obrq.ENumber = rr.EmployeeNumber;
         obrq.FName = rr.FullName;
         obrq.RName = rr.RequestName;
         obrq.CRQName = rr.CatalogRQName;
         obrq.DDispatch = Convert.ToDateTime(rr.DateDispatch);
         obrq.DApprove = Convert.ToDateTime(rr.DateApprove);
         obrq.RContent = rr.RequestContent;
         obrq.Dtion = rr.Description;
         obrq.Stte = rr.State;
         obrq.Acc = Convert.ToBoolean(rr.Accept);
         Listr.Add(obrq);
     }
     return Listr;
 }
 public RequestModel Infomation(int rqid)
 {
     //   Request_StationeryModel rs = new Request_StationeryModel();
     RequestModel r = new RequestModel();
     return r.ListRQ().Where(l => l.RId == rqid).ToList().First();
 }