//
        // GET: /BuyEvaluate/Create
        public IActionResult Create()
        {
            // Get Login User's details.
            var u = _userRepo.Find(ur => ur.UserName == User.Identity.Name).FirstOrDefault();
            BuyEvaluateModel r = new BuyEvaluateModel();
            DepartmentModel  d = _context.Departments.Find(u.DptId);
            VendorModel      v = _context.BMEDVendors.Find(u.VendorId);

            r.DocId     = r.GetID(ref _context);
            r.UserId    = u.Id;
            r.UserName  = u.FullName;
            r.Company   = d.DptId == null ? "" : d.Name_C;
            r.AccDpt    = d.DptId == null ? "" : d.DptId;
            r.AccDptNam = d.DptId == null ? "" : d.Name_C;
            r.Contact   = u.Mobile;
            r.PlantType = "醫療儀器";
            r.Place     = r.AccDptNam;
            r.Rtt       = DateTime.Now;
            _context.BuyEvaluates.Add(r);
            _context.SaveChanges();
            List <SelectListItem> listItem  = new List <SelectListItem>();
            List <SelectListItem> listItem2 = new List <SelectListItem>();
            List <SelectListItem> listItem3 = new List <SelectListItem>();

            listItem3.Add(new SelectListItem {
                Text = "醫療儀器", Value = "醫療儀器"
            });
            listItem3.Add(new SelectListItem {
                Text = "資訊設備", Value = "資訊設備"
            });
            ViewData["PTYPE"] = new SelectList(listItem3, "Value", "Text", "醫療儀器");
            string[]     eng   = roleManager.GetUsersInRole("MedEngineer");
            string[]     buyer = roleManager.GetUsersInRole("Buyer");
            AppUserModel p;

            foreach (string s in eng)
            {
                p = _context.AppUsers.Where(ur => ur.UserName == s).FirstOrDefault();
                if (p != null)
                {
                    listItem.Add(new SelectListItem {
                        Text = "(" + p.UserName + ")" + p.FullName, Value = p.Id.ToString()
                    });
                }
            }
            ViewData["ENG"] = new SelectList(listItem, "Value", "Text");
            //
            foreach (string s2 in buyer)
            {
                p = _context.AppUsers.Where(ur => ur.UserName == s2).FirstOrDefault();
                if (p != null)
                {
                    listItem2.Add(new SelectListItem {
                        Text = "(" + p.UserName + ")" + p.FullName, Value = p.Id.ToString()
                    });
                }
            }
            ViewData["PUR"] = new SelectList(listItem2, "Value", "Text");
            return(View(r));
        }
        public IActionResult TransToBuyEvaluate()
        {
            // Get Login User's details.
            var user = _userRepo.Find(ur => ur.UserName == User.Identity.Name).FirstOrDefault();

            String[] st = { "?", "2" };
            var      s  = _context.BuyFlows.Where(b => st.Contains(b.Status))
                          .Join(_context.BuyEvaluates, b => b.DocId, e => e.DocId,
                                (b, e) => e).Where(e => !string.IsNullOrEmpty(e.BudgetId))
                          .Select(e => e.BudgetId).Distinct();
            List <BudgetModel> bs = _context.Budgets.Where(b => !s.Contains(b.DocId)).ToList();
            BuyEvaluateModel   r;
            BuyFlowModel       rf;
            Tmail           mail;
            string          body = "";
            AppUserModel    a    = _context.AppUsers.Find(user.Id);
            AppUserModel    u;
            DepartmentModel c  = _context.Departments.Find(a.DptId);
            int             dc = 0;

            foreach (BudgetModel b in bs)
            {
                r = new BuyEvaluateModel();
                if (dc <= 0)
                {
                    dc = Convert.ToInt32(r.GetID(ref _context));
                }
                else
                {
                    dc++;
                }
                r.DocId      = Convert.ToString(dc);
                r.PlantCnam  = b.PlantName;
                r.PlantEnam  = b.PlantName;
                r.Standard   = b.Standard;
                r.Price      = b.Price;
                r.Amt        = b.Amt;
                r.Unit       = b.Unit;
                r.TotalPrice = b.TotalPrice;
                r.UserId     = a.Id;
                r.UserName   = a.FullName;
                r.Company    = c.DptId == null ? "" : c.Name_C;
                r.AccDpt     = b.AccDpt == null ? "" : b.AccDpt;
                r.AccDptNam  = _context.Departments.Find(b.AccDpt) == null ? "" : _context.Departments.Find(b.AccDpt).Name_C;
                r.Contact    = a.Mobile;
                r.PlantType  = "醫療儀器";
                r.Place      = r.AccDptNam;
                if (_context.AppUsers.Where(up => up.FullName == b.EngName && up.Status == "Y").FirstOrDefault() == null)
                {
                    throw new Exception("無工程師[" + b.EngName + "]資料!!請建立使用者資料。");
                }
                r.EngId = _context.AppUsers.Where(up => up.FullName == b.EngName && up.Status == "Y").FirstOrDefault() == null ? user.Id :
                          _context.AppUsers.Where(up => up.FullName == b.EngName && up.Status == "Y").FirstOrDefault().Id;
                r.Rtp      = a.Id;
                r.Rtt      = DateTime.Now;
                r.BudgetId = b.DocId;
                _context.BuyEvaluates.Add(r);
                //
                rf        = new BuyFlowModel();
                rf.DocId  = r.DocId;
                rf.StepId = 1;
                rf.UserId = user.Id;
                rf.Status = "1";
                rf.Role   = roleManager.GetRolesForUser(user.Id).GetValue(0).ToString();
                rf.Rtp    = user.Id;
                rf.Rdt    = null;
                rf.Rtt    = DateTime.Now;
                rf.Cls    = "申請者";
                _context.BuyFlows.Add(rf);
                //
                rf        = new BuyFlowModel();
                rf.DocId  = r.DocId;
                rf.StepId = 2;
                rf.UserId = r.EngId;
                rf.Status = "?";
                u         = _context.AppUsers.Find(r.EngId);
                rf.Role   = roleManager.GetRolesForUser(u.Id).FirstOrDefault();
                rf.Rtp    = null;
                rf.Rdt    = null;
                rf.Rtt    = DateTime.Now;
                rf.Cls    = "設備工程師";
                _context.BuyFlows.Add(rf);
                //
                try
                {
                    _context.SaveChanges();
                    //
                    mail      = new Tmail();
                    body      = "";
                    u         = _context.AppUsers.Find(user.Id);
                    mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                    u         = _context.AppUsers.Find(rf.UserId);
                    mail.to   = new System.Net.Mail.MailAddress(u.Email); //u.Email
                    //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                    mail.message.Subject = "醫療儀器管理資訊系統[採購評估案]:儀器名稱: " + r.PlantCnam;
                    body += "<p>申請人:" + r.UserName + "</p>";
                    body += "<p>儀器名稱:" + r.PlantCnam + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/MvcMedEngMgr'>處理案件</a></p>";
                    body += "<br/>";
                    body += "<h3>this is a inform letter from system manager.Do not reply for it.</h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    //mail.SendMail();
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message);
                }
            }
            return(new JsonResult(bs)
            {
                Value = new { success = true, error = "" },
            });
        }