Esempio n. 1
0
        public IActionResult Create(DeliveryModel delivery)
        {
            if (ModelState.IsValid)
            {
                // Get Login User's details.
                var ur = _userRepo.Find(usr => usr.UserName == User.Identity.Name).FirstOrDefault();

                _context.Entry(delivery).State = EntityState.Modified;
                DelivFlowModel rf = new DelivFlowModel();
                rf.DocId  = delivery.DocId;
                rf.StepId = 1;
                rf.UserId = ur.Id;
                rf.Status = "1";
                rf.Role   = roleManager.GetRolesForUser(ur.Id).FirstOrDefault();
                rf.Rtp    = ur.Id;
                rf.Rdt    = null;
                rf.Rtt    = DateTime.Now;
                rf.Cls    = "申請者";
                _context.DelivFlows.Add(rf);
                //
                rf        = new DelivFlowModel();
                rf.DocId  = delivery.DocId;
                rf.StepId = 2;
                rf.Status = "?";
                AppUserModel u;

                u         = _context.AppUsers.Find(Convert.ToInt32(delivery.DelivPson));
                rf.UserId = u.Id;
                rf.Role   = roleManager.GetRolesForUser(u.Id).FirstOrDefault();
                rf.Rtp    = null;
                rf.Rdt    = null;
                rf.Rtt    = DateTime.Now;
                rf.Cls    = "得標廠商";
                _context.DelivFlows.Add(rf);
                //
                List <AssetModel> ar = _context.BMEDAssets.Where(a => !string.IsNullOrEmpty(a.Docid))
                                       .Where(a => a.Docid == delivery.PurchaseNo).ToList();
                VendorModel v;
                u = _context.AppUsers.Find(Convert.ToInt32(delivery.UserDpt));
                foreach (AssetModel a in ar)
                {
                    v = _context.BMEDVendors.Where(vv => vv.UniteNo == delivery.VendorId).FirstOrDefault();
                    if (v != null)
                    {
                        a.VendorId = v.VendorId;
                    }
                    a.DelivUid = u.Id;
                    a.DelivDpt = u.DptId;
                    _context.Entry(a).State = EntityState.Modified;
                }
                //
                _context.SaveChanges();
                //----------------------------------------------------------------------------------
                // Mail
                //----------------------------------------------------------------------------------
                Tmail  mail = new Tmail();
                string body = "";
                mail.from = new System.Net.Mail.MailAddress(ur.Email);
                u         = _context.AppUsers.Find(Convert.ToInt32(delivery.DelivPson));
                mail.to   = new System.Net.Mail.MailAddress(u.Email);
                AppUserModel up = _context.AppUsers.Find(delivery.EngId);
                if (up != null)
                {
                    if (!string.IsNullOrEmpty(up.Email))
                    {
                        mail.cc = new System.Net.Mail.MailAddress(up.Email);
                    }
                }
                //
                mail.message.Subject = "醫療儀器管理資訊系統[驗收案]:採購案號: " + delivery.PurchaseNo;
                body += "<p>申請人:" + delivery.UserName + "</p>";
                body += "<p>合約號碼:" + delivery.ContractNo + "</p>";
                body += "<p>採購案號:" + delivery.PurchaseNo + "</p>";
                body += "<p><a href='http://dms.cch.org.tw/MvcMedEngMgr'>處理案件</a></p>";
                body += "<br/>";
                body += "<p>若有任何問題,請與驗收工程師(" + _context.AppUsers.Find(delivery.EngId).FullName + ")聯絡</p>";
                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();
                //----------------------------------------------------------------------------------

                return(RedirectToAction("Index", "Home", new { Area = "" }));
            }

            return(View(delivery));
        }
Esempio n. 2
0
        public async Task <IActionResult> NextFlow(AssignModel assign)
        {
            var ur = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault();

            /* 工程師的流程控管 */
            if (assign.Cls == "設備工程師")
            {
                /* 如點選有費用、卻無輸入費用明細 */
                var isCharged = _context.BMEDKeepDtls.Where(d => d.DocId == assign.DocId).FirstOrDefault().IsCharged;
                if (isCharged == "Y")
                {
                    var CheckRepairCost = _context.BMEDKeepCosts.Where(c => c.DocId == assign.DocId).FirstOrDefault();
                    if (CheckRepairCost == null)
                    {
                        throw new Exception("尚未輸入費用明細!!");
                    }
                }
            }

            if (assign.FlowCls == "結案" || assign.FlowCls == "廢除")
            {
                assign.FlowUid = ur.Id;
            }
            if (ModelState.IsValid)
            {
                KeepFlowModel kf = _context.BMEDKeepFlows.Where(f => f.DocId == assign.DocId && f.Status == "?").FirstOrDefault();
                if (assign.FlowCls == "驗收人")
                {
                    if (_context.BMEDKeepEmps.Where(emp => emp.DocId == assign.DocId).Count() <= 0)
                    {
                        throw new Exception("沒有維修工程師紀錄!!");
                    }
                    else if (_context.BMEDKeepDtls.Find(assign.DocId).EndDate == null)
                    {
                        throw new Exception("沒有完工日!!");
                    }
                    if (_context.BMEDKeepDtls.Find(assign.DocId).Result == null)
                    {
                        throw new Exception("保養結果不可空白!!");
                    }
                    if (string.IsNullOrEmpty(_context.BMEDKeepDtls.Find(assign.DocId).InOut))
                    {
                        throw new Exception("保養方式不可空白!!");
                    }
                }
                if (assign.FlowCls == "結案")
                {
                    KeepDtlModel kd = _context.BMEDKeepDtls.Find(assign.DocId);
                    kd.CloseDate             = DateTime.Now;
                    kf.Opinions              = "[" + assign.AssignCls + "]" + Environment.NewLine + assign.AssignOpn;
                    kf.Status                = "2";
                    kf.UserId                = ur.Id;
                    kf.UserName              = _context.AppUsers.Find(ur.Id).FullName;
                    kf.Rtt                   = DateTime.Now;
                    kf.Rtp                   = ur.Id;
                    _context.Entry(kf).State = EntityState.Modified;
                    _context.Entry(kd).State = EntityState.Modified;

                    _context.SaveChanges();
                    // Save stock to ERP system.
                    //var ERPreponse = await SaveToERPAsync(assign.DocId);

                    //Send Mail
                    //To all users in this keep's flow.
                    Tmail        mail = new Tmail();
                    string       body = "";
                    string       sto  = "";
                    AppUserModel u;
                    KeepModel    keep = _context.BMEDKeeps.Find(assign.DocId);
                    mail.from = new System.Net.Mail.MailAddress(ur.Email); //u.Email
                    _context.BMEDKeepFlows.Where(f => f.DocId == assign.DocId)
                    .ToList()
                    .ForEach(f =>
                    {
                        u    = _context.AppUsers.Find(f.UserId);
                        sto += u.Email + ",";
                    });
                    mail.sto = sto.TrimEnd(new char[] { ',' });

                    mail.message.Subject = "醫工工務智能保修系統[醫工保養案-結案通知]:設備名稱: " + keep.AssetName;
                    body += "<p>表單編號:" + keep.DocId + "</p>";
                    body += "<p>送單日期:" + keep.SentDate.Value.ToString("yyyy/MM/dd") + "</p>";
                    body += "<p>申請人:" + keep.UserName + "</p>";
                    body += "<p>財產編號:" + keep.AssetNo + "</p>";
                    body += "<p>設備名稱:" + keep.AssetName + "</p>";
                    body += "<p>放置地點:" + keep.PlaceLoc + "</p>";
                    body += "<p>保養結果:" + kd.Result + "</p>";
                    body += "<p>保養描述:" + kd.Memo + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/EDIS/Account/Login'" + "?DocId=" + keep.DocId + "&dealType=BMEDKeepViews" + ">檢視案件</a></p>";
                    body += "<br/>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    body += "<br/>";
                    //body += "<h3 style='color:red'>如有任何疑問請聯絡工務部,分機3033或7033。<h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();
                }
                else if (assign.FlowCls == "廢除")
                {
                    kf.Opinions = "[廢除]" + Environment.NewLine + assign.AssignOpn;
                    kf.Status   = "3";
                    kf.Rtt      = DateTime.Now;
                    kf.Rtp      = ur.Id;
                    _context.Entry(kf).State = EntityState.Modified;
                    _context.SaveChanges();
                }
                else
                {
                    //轉送下一關卡
                    kf.Opinions = "[" + assign.AssignCls + "]" + Environment.NewLine + assign.AssignOpn;
                    kf.Status   = "1";
                    kf.Rtt      = DateTime.Now;
                    kf.Rtp      = ur.Id;
                    _context.Entry(kf).State = EntityState.Modified;
                    _context.SaveChanges();
                    //
                    KeepFlowModel flow = new KeepFlowModel();
                    flow.DocId    = assign.DocId;
                    flow.StepId   = kf.StepId + 1;
                    flow.UserId   = assign.FlowUid.Value;
                    flow.UserName = _context.AppUsers.Find(assign.FlowUid.Value).FullName;
                    flow.Status   = "?";
                    flow.Cls      = assign.FlowCls;
                    flow.Rtt      = DateTime.Now;
                    _context.BMEDKeepFlows.Add(flow);
                    _context.SaveChanges();

                    //Send Mail
                    //To user and the next flow user.
                    Tmail        mail = new Tmail();
                    string       body = "";
                    AppUserModel u;
                    KeepModel    keep = _context.BMEDKeeps.Find(assign.DocId);
                    mail.from = new System.Net.Mail.MailAddress(ur.Email); //ur.Email
                    u         = _context.AppUsers.Find(flow.UserId);
                    mail.to   = new System.Net.Mail.MailAddress(u.Email);  //u.Email
                                                                           //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                    mail.message.Subject = "醫工工務智能保修系統[醫工保養案]:設備名稱: " + keep.AssetName;
                    body += "<p>表單編號:" + keep.DocId + "</p>";
                    body += "<p>送單日期:" + keep.SentDate.Value.ToString("yyyy/MM/dd") + "</p>";
                    body += "<p>申請人:" + keep.UserName + "</p>";
                    body += "<p>財產編號:" + keep.AssetNo + "</p>";
                    body += "<p>設備名稱:" + keep.AssetName + "</p>";
                    body += "<p>放置地點:" + keep.PlaceLoc + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/EDIS/Account/Login'" + "?docId=" + keep.DocId + "&dealType=BMEDKeepEdit" + ">處理案件</a></p>";
                    body += "<br/>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    body += "<br/>";
                    //body += "<h3 style='color:red'>如有任何疑問請聯絡工務部,分機3033或7033。<h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();
                }

                return(new JsonResult(assign)
                {
                    Value = new { success = true, error = "" }
                });
            }
            else
            {
                string msg = "";
                foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                {
                    msg += error.ErrorMessage + Environment.NewLine;
                }
                throw new Exception(msg);
            }
        }
Esempio n. 3
0
        public IActionResult NextFlow(DelivFlowModel DelivFlow)
        {
            if (ModelState.IsValid)
            {
                // Get Login User's details.
                var ur = _userRepo.Find(usr => usr.UserName == User.Identity.Name).FirstOrDefault();

                if (DelivFlow.SelOpin == "其他" && string.IsNullOrEmpty(DelivFlow.Opinions))
                {
                    throw new Exception("請填寫意見欄!!");
                }
                DelivFlowModel rf = _context.DelivFlows.Where(df => df.DocId == DelivFlow.DocId)
                                    .Where(df => df.Status == "?").ToList().FirstOrDefault();
                if (rf == null)
                {
                    throw new Exception("查無流程!");
                }
                if (rf.Cls == "得標廠商")
                {
                    if (_context.BMEDAssets.Where(a => a.Docid == DelivFlow.DocId).Count() <= 0)
                    {
                        throw new Exception("沒有設備紀錄! 請新增設備!");
                    }
                }
                List <DelivFlowModel> rflist = _context.DelivFlows.Where(df => df.DocId == DelivFlow.DocId).ToList();
                DeliveryModel         r      = _context.Deliveries.Find(DelivFlow.DocId);
                AppUserModel          u;
                Tmail  mail;
                string body = "";
                if (DelivFlow.Cls == "結案")
                {
                    string sto = "";
                    //KeepDtl rd = db.KeepDtls.Find(KeepFlow.Docid);
                    rf.Opinions = DelivFlow.SelOpin + Environment.NewLine + DelivFlow.Opinions;
                    rf.Status   = "2";
                    rf.Rtt      = DateTime.Now;
                    rf.Rtp      = ur.Id;
                    _context.Entry(rf).State = EntityState.Modified;
                    _context.SaveChanges();
                    //
                    mail      = new Tmail();
                    u         = _context.AppUsers.Find(ur.Id);
                    mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                    foreach (DelivFlowModel rr in rflist)
                    {
                        u    = _context.AppUsers.Find(rr.UserId);
                        sto += u.Email + ",";
                    }
                    mail.sto = sto.TrimEnd(new char[] { ',' });
                    //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                    mail.message.Subject = "醫工智能保修系統[驗收案-結案通知]:採購案號: " + r.PurchaseNo;
                    body += "<p>申請人:" + r.UserName + "</p>";
                    body += "<p>合約號碼:" + r.ContractNo + "</p>";
                    body += "<p>採購案號:" + r.PurchaseNo + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/BMED/Account/Login'>前往網站檢視</a></p>";
                    body += "<br/>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();
                    return(new JsonResult(DelivFlow)
                    {
                        Value = new { success = true, error = "" },
                    });
                }
                DelivFlow.StepId = rf.StepId + 1;
                DelivFlow.Rtt    = DateTime.Now;
                switch (DelivFlow.Cls)
                {
                case "申請者":
                    DelivFlow.UserId = r.UserId;
                    break;
                }
                DelivFlow.Status = "?";
                u = _context.AppUsers.Find(DelivFlow.UserId);
                DelivFlow.Role           = roleManager.GetRolesForUser(u.Id).FirstOrDefault();
                rf.Opinions              = DelivFlow.SelOpin + Environment.NewLine + DelivFlow.Opinions;
                rf.Status                = "1";
                rf.Rtp                   = ur.Id;
                DelivFlow.Opinions       = null;
                _context.Entry(rf).State = EntityState.Modified;
                _context.DelivFlows.Add(DelivFlow);
                _context.SaveChanges();
                //
                mail      = new Tmail();
                body      = "";
                u         = _context.AppUsers.Find(ur.Id);
                mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                u         = _context.AppUsers.Find(DelivFlow.UserId);
                mail.to   = new System.Net.Mail.MailAddress(u.Email); //u.Email
                //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                mail.message.Subject = "醫工智能保修系統[驗收案]:採購案號: " + r.PurchaseNo;
                body += "<p>申請人:" + r.UserName + "</p>";
                body += "<p>合約號碼:" + r.ContractNo + "</p>";
                body += "<p>採購案號:" + r.PurchaseNo + "</p>";
                body += "<p><a href='http://dms.cch.org.tw/BMED/Account/Login'>處理案件</a></p>";
                body += "<br/>";
                body += "<p>若有任何問題,請與驗收工程師(" + _context.AppUsers.Find(r.EngId).FullName + ")聯絡</p>";
                body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                mail.message.Body       = body;
                mail.message.IsBodyHtml = true;
                mail.SendMail();
                return(new JsonResult(DelivFlow)
                {
                    Value = new { success = true, error = "" }
                });
            }
            else
            {
                string msg = "";
                foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                {
                    msg += error.ErrorMessage + Environment.NewLine;
                }
                throw new Exception(msg);
            }
        }
Esempio n. 4
0
        public IActionResult Create(KeepModel keep)
        {
            AppUserModel ur = _context.AppUsers.Where(u => u.UserName == this.User.Identity.Name).FirstOrDefault();

            if (string.IsNullOrEmpty(keep.AssetNo))
            {
                throw new Exception("財產編號不可空白!!");
            }
            string msg = "";

            try
            {
                if (ModelState.IsValid)
                {
                    //更新申請人的Email
                    if (string.IsNullOrEmpty(keep.Email))
                    {
                        throw new Exception("電子信箱不可空白!!");
                    }
                    AppUserModel a = _context.AppUsers.Find(keep.UserId);
                    a.Email = keep.Email;
                    _context.Entry(a).State = EntityState.Modified;
                    _context.SaveChanges();
                    //
                    AssetKeepModel kp = _context.BMEDAssetKeeps.Find(keep.AssetNo);
                    AssetModel     at = _context.BMEDAssets.Find(keep.AssetNo);
                    //
                    keep.AssetName = _context.BMEDAssets.Find(keep.AssetNo).Cname;
                    keep.EngId     = kp.KeepEngId;
                    //keep.AccDpt = at.AccDpt;
                    keep.SentDate = DateTime.Now;
                    keep.Cycle    = kp == null ? 0 : (kp.Cycle == null ? 0 : kp.Cycle.Value);
                    keep.Src      = "M";
                    _context.Entry(keep).State = EntityState.Modified;

                    //
                    KeepDtlModel dl = new KeepDtlModel();
                    var          notInExceptDevice = _context.ExceptDevice.Find(keep.AssetNo);

                    /* If can find data in ExceptDevice table, the device is "not" 統包.
                     * It means if value is "Y", the device is 統包
                     */
                    if (notInExceptDevice == null)
                    {
                        dl.NotInExceptDevice = "Y";
                    }
                    else
                    {
                        dl.NotInExceptDevice = "N";
                    }
                    dl.DocId = keep.DocId;
                    switch (kp == null ? "自行" : kp.InOut)
                    {
                    case "自行":
                        dl.InOut = "0";
                        break;

                    case "委外":
                        dl.InOut = "1";
                        break;

                    case "租賃":
                        dl.InOut = "2";
                        break;

                    case "保固":
                        dl.InOut = "3";
                        break;

                    default:
                        dl.InOut = "0";
                        break;
                    }
                    _context.BMEDKeepDtls.Add(dl);
                    _context.SaveChanges();
                    //
                    KeepFlowModel rf = new KeepFlowModel();
                    rf.DocId  = keep.DocId;
                    rf.StepId = 1;
                    rf.UserId = ur.Id;
                    rf.Status = "1";
                    //rf.Role = Roles.GetRolesForUser().FirstOrDefault();
                    rf.Rtp = ur.Id;
                    rf.Rdt = null;
                    rf.Rtt = DateTime.Now;
                    rf.Cls = "申請者";
                    _context.BMEDKeepFlows.Add(rf);
                    //
                    rf        = new KeepFlowModel();
                    rf.DocId  = keep.DocId;
                    rf.StepId = 2;
                    rf.UserId = kp == null ? ur.Id : kp.KeepEngId;
                    rf.Status = "?";
                    AppUserModel u = _context.AppUsers.Find(rf.UserId);
                    if (u == null)
                    {
                        throw new Exception("無工程師資料!!");
                    }
                    //rf.Role = Roles.GetRolesForUser(u.UserName).FirstOrDefault();
                    rf.Rtp = null;
                    rf.Rdt = null;
                    rf.Rtt = DateTime.Now;
                    rf.Cls = "設備工程師";
                    _context.BMEDKeepFlows.Add(rf);
                    _context.SaveChanges();
                    //send mail
                    Tmail  mail = new Tmail();
                    string body = "";
                    u         = _context.AppUsers.Find(ur.Id);
                    mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                    //u = _context.AppUsers.Find(kp.KeepEngId);
                    mail.to = new System.Net.Mail.MailAddress(u.Email);   //u.Email
                    mail.message.Subject = "醫工工務智能保修系統[醫工保養案]:設備名稱: " + keep.AssetName;
                    body += "<p>表單編號:" + keep.DocId + "</p>";
                    body += "<p>送單日期:" + keep.SentDate.Value.ToString("yyyy/MM/dd") + "</p>";
                    body += "<p>申請人:" + keep.UserName + "</p>";
                    body += "<p>財產編號:" + keep.AssetNo + "</p>";
                    body += "<p>設備名稱:" + keep.AssetName + "</p>";
                    body += "<p>放置地點:" + keep.PlaceLoc + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/EDIS/Account/Login'" + "?docId=" + keep.DocId + "&dealType=BMEDKeepEdit" + ">處理案件</a></p>";
                    body += "<br/>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();

                    return(Ok(keep));
                }
                else
                {
                    msg = "";
                    foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                    {
                        msg += error.ErrorMessage + Environment.NewLine;
                    }
                    throw new Exception(msg);
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
            }
            return(BadRequest(msg));
        }
Esempio n. 5
0
        public ActionResult NextFlow(BuyFlowModel BuyFlow)
        {
            // Get Login User's details.
            var loginUser = _userRepo.Find(ur => ur.UserName == User.Identity.Name).FirstOrDefault();

            if (ModelState.IsValid)
            {
                if (BuyFlow.SelOpin == "其他" && string.IsNullOrEmpty(BuyFlow.Opinions))
                {
                    throw new Exception("請填寫意見欄!!");
                }
                BuyFlowModel        rf     = _context.BuyFlows.Where(f => f.DocId == BuyFlow.DocId && f.Status == "?").FirstOrDefault();
                List <BuyFlowModel> rflist = _context.BuyFlows.Where(f => f.DocId == BuyFlow.DocId).ToList();
                BuyEvaluateModel    r;
                BuySFlowModel       s = _context.BuySFlows.Where(b => b.DocSid == BuyFlow.DocId).FirstOrDefault();
                if (s != null)
                {
                    r = _context.BuyEvaluates.Find(s.DocId);
                }
                else
                {
                    r = _context.BuyEvaluates.Find(BuyFlow.DocId);
                }
                AppUserModel u;
                Tmail        mail;
                string       body = "";
                string       sto  = "";
                if (BuyFlow.Cls == "結案")
                {
                    rf.Opinions = BuyFlow.SelOpin + Environment.NewLine + BuyFlow.Opinions;
                    rf.Status   = "2";
                    rf.Rtt      = DateTime.Now;
                    rf.Rtp      = loginUser.Id;
                    if (s != null)
                    {
                        s.Status = "2";
                        s.Rtt    = DateTime.Now;
                        s.Rtp    = loginUser.Id;
                        _context.Entry(s).State = EntityState.Modified;
                    }
                    _context.Entry(rf).State = EntityState.Modified;
                    _context.SaveChanges();
                    //
                    if (s != null) //會簽
                    {
                        List <BuySFlowModel> sf = _context.BuySFlows.Where(bs => bs.DocId == s.DocId)
                                                  .Where(bs => bs.Status == "?").ToList();
                        if (sf.Count() == 0)
                        {
                            BuyFlowModel f = _context.BuyFlows.Where(bf => bf.DocId == s.DocId)
                                             .Where(bf => bf.Status == "E").FirstOrDefault();
                            if (f != null)
                            {
                                f.Status = "?";
                                _context.Entry(f).State = EntityState.Modified;
                                _context.SaveChanges();
                                //
                                mail      = new Tmail();
                                u         = _context.AppUsers.Find(loginUser.Id);
                                mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                                mail.to   = new System.Net.Mail.MailAddress(_context.AppUsers.Find(f.UserId).Email);
                                //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                                mail.message.Subject = "醫工智能保修系統[採購評估案-會簽完成通知]:儀器名稱: " + r.PlantCnam;
                                body += "<p>申請人:" + r.UserName + "</p>";
                                body += "<p>儀器名稱:" + r.PlantCnam + "</p>";
                                body += "<br/>";
                                body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                                mail.message.Body       = body;
                                mail.message.IsBodyHtml = true;
                                mail.SendMail();
                            }
                        }
                    }
                    else
                    {
                        mail      = new Tmail();
                        u         = _context.AppUsers.Find(loginUser.Id);
                        mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                        foreach (BuyFlowModel rr in rflist)
                        {
                            u    = _context.AppUsers.Find(rr.UserId);
                            sto += u.Email + ",";
                        }
                        mail.sto = sto.TrimEnd(new char[] { ',' });
                        //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/BMED/Account/Login'>前往網站檢視</a></p>";
                        body += "<br/>";
                        body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                        mail.message.Body       = body;
                        mail.message.IsBodyHtml = true;
                        mail.SendMail();
                    }
                    return(new JsonResult(BuyFlow)
                    {
                        Value = new { success = true, error = "" },
                    });
                }
                else if (BuyFlow.Cls == "廢除")
                {
                    rf.Opinions = BuyFlow.SelOpin + Environment.NewLine + BuyFlow.Opinions;
                    rf.Status   = "3";
                    rf.Rtt      = DateTime.Now;
                    rf.Rtp      = loginUser.Id;
                    _context.Entry(rf).State = EntityState.Modified;
                    _context.SaveChanges();
                    //
                    mail      = new Tmail();
                    u         = _context.AppUsers.Find(loginUser.Id);
                    mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                    foreach (BuyFlowModel rr in rflist)
                    {
                        u    = _context.AppUsers.Find(rr.UserId);
                        sto += u.Email + ",";
                    }
                    mail.sto = sto.TrimEnd(new char[] { ',' });
                    //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                    mail.message.Subject = "醫工智能保修系統[採購評估案-廢除通知]:儀器名稱: " + r.PlantCnam;
                    body += "<p>申請人:" + r.UserName + "</p>";
                    body += "<p>儀器名稱:" + r.PlantCnam + "</p>";
                    body += "<br/>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();
                    return(new JsonResult(BuyFlow)
                    {
                        Value = new { success = true, error = "" },
                    });
                }
                BuyFlow.StepId = rf.StepId + 1;
                BuyFlow.Rtt    = DateTime.Now;
                switch (BuyFlow.Cls)
                {
                case "申請者":
                    BuyFlow.UserId = r.UserId;
                    break;

                case "設備經辦":

                    break;
                }
                BuyFlow.Status = "?";
                u                        = _context.AppUsers.Find(BuyFlow.UserId);
                BuyFlow.Role             = roleManager.GetRolesForUser(u.Id).FirstOrDefault();
                rf.Opinions              = BuyFlow.SelOpin + Environment.NewLine + BuyFlow.Opinions;
                rf.Status                = "1";
                rf.Rtp                   = loginUser.Id;
                BuyFlow.Opinions         = null;
                _context.Entry(rf).State = EntityState.Modified;
                _context.BuyFlows.Add(BuyFlow);
                _context.SaveChanges();
                //
                mail      = new Tmail();
                body      = "";
                u         = _context.AppUsers.Find(loginUser.Id);
                mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                u         = _context.AppUsers.Find(BuyFlow.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/BMED/Account/Login'>處理案件</a></p>";
                body += "<br/>";
                body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                mail.message.Body       = body;
                mail.message.IsBodyHtml = true;
                mail.SendMail();

                return(new JsonResult(BuyFlow)
                {
                    Value = new { success = true, error = "" },
                });
            }

            return(View(BuyFlow));
        }
Esempio n. 6
0
        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 = "" },
            });
        }
        public ActionResult NextFlow(Assign assign)
        {
            var ur = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault();

            if (assign.FlowCls == "結案" || assign.FlowCls == "廢除")
            {
                assign.FlowUid = ur.Id;
            }
            else
            {
                assign.FlowUid = _context.AppUsers.Where(u => u.FullName == assign.ClsNow).Select(u => u.Id).FirstOrDefault();
            }
            Instrument instrument = _db.Instruments.Find(assign.DocId);

            if (ModelState.IsValid)
            {
                OutsideBmedFlow of = _db.OutsideBmedFlows.Where(f => f.DocId == assign.DocId && f.Status == "?").FirstOrDefault();

                if (assign.FlowCls == "結案")
                {
                    of.Opinion = "[" + assign.AssignCls + "]";
                    if (!string.IsNullOrEmpty(assign.AssignOpn))
                    {
                        of.Opinion += (Environment.NewLine + assign.AssignOpn);
                    }
                    of.Status = "2";
                    of.Rtt    = DateTime.Now;
                    of.Rtp    = assign.FlowUid;
                    of.item1  = assign.item1;
                    of.item2  = assign.item2;
                    of.item3  = assign.item3;
                    of.item4  = assign.item4;
                    of.item5  = assign.item5;
                    of.item6  = assign.item6;
                    of.item7  = assign.item7;

                    _db.Entry(of).State = EntityState.Modified;
                    _db.SaveChanges();
                }
                else if (assign.FlowCls == "廢除")
                {
                    of.Opinion = "[廢除]";
                    if (!string.IsNullOrEmpty(assign.AssignOpn))
                    {
                        of.Opinion += (Environment.NewLine + assign.AssignOpn);
                    }
                    of.Status           = "3";
                    of.Rtt              = DateTime.Now;
                    of.Rtp              = assign.FlowUid;
                    of.item1            = assign.item1;
                    of.item2            = assign.item2;
                    of.item3            = assign.item3;
                    of.item4            = assign.item4;
                    of.item5            = assign.item5;
                    of.item6            = assign.item6;
                    of.item7            = assign.item7;
                    _db.Entry(of).State = EntityState.Modified;
                    _db.SaveChanges();
                }
                else
                {
                    //轉送下一關卡
                    of.Opinion = "[" + assign.AssignCls + "]";
                    if (!string.IsNullOrEmpty(assign.AssignOpn))
                    {
                        of.Opinion += (Environment.NewLine + assign.AssignOpn);
                    }
                    of.Status           = "1";
                    of.Rtt              = DateTime.Now;
                    of.Rtp              = ur.Id;
                    of.item1            = assign.item1;
                    of.item2            = assign.item2;
                    of.item3            = assign.item3;
                    of.item4            = assign.item4;
                    of.item5            = assign.item5;
                    of.item6            = assign.item6;
                    of.item7            = assign.item7;
                    _db.Entry(of).State = EntityState.Modified;
                    _db.SaveChanges();
                    //
                    OutsideBmedFlow flow = new OutsideBmedFlow();
                    flow.DocId    = assign.DocId;
                    flow.StepId   = of.StepId + 1;
                    flow.UserId   = assign.FlowUid.Value;
                    flow.UserName = _db.AppUsers.Find(assign.FlowUid.Value).UserName;
                    flow.Status   = "?";
                    flow.Cls      = assign.FlowCls;
                    flow.Rtt      = DateTime.Now;
                    flow.item1    = assign.item1;
                    flow.item2    = assign.item2;
                    flow.item3    = assign.item3;
                    flow.item4    = assign.item4;
                    flow.item5    = assign.item5;
                    flow.item6    = assign.item6;
                    flow.item7    = assign.item7;
                    _db.OutsideBmedFlows.Add(flow);
                    _db.SaveChanges();
                    //Send Mail
                    //To user and the next flow user.
                    Tmail        mail = new Tmail();
                    string       body = "";
                    AppUserModel u;
                    //RepairModel repair = _context.BMEDRepairs.Find(assign.DocId);
                    mail.from = new System.Net.Mail.MailAddress(ur.Email); //ur.Email
                    u         = _context.AppUsers.Find(flow.UserId);
                    mail.to   = new System.Net.Mail.MailAddress(u.Email);  //u.Email
                                                                           //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                    mail.message.Subject = "醫工智能保修系統[外部醫療使用申請] : 品名 : " + instrument.Name;
                    body += "<p>表單編號:" + instrument.DocId + "</p>";
                    body += "<p>申請日期:" + instrument.ApplyDate.ToString("yyyy/MM/dd") + "</p>";
                    body += "<p>申請人:" + instrument.UserName + "</p>";
                    body += "<p>品名:" + instrument.Name + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/BMED/Account/Login'" + "?docId=" + instrument.DocId + "&dealType=BMEDRepEdit" + ">處理案件</a></p>";
                    body += "<br/>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    body += "<br/>";
                    //body += "<h3 style='color:red'>如有任何疑問請聯絡工務部,分機3033或7033。<h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();
                }
                return(new JsonResult(assign)
                {
                    Value = new { success = true, error = "" }
                });
            }
            else
            {
                string msg = "";
                foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                {
                    msg += error.ErrorMessage + Environment.NewLine;
                }
                throw new Exception(msg);
            }
        }
Esempio n. 8
0
        public async Task <IActionResult> CreateAsync(DeliveryModel delivery)
        {
            string msg = "";

            try
            {
                if (ModelState.IsValid)
                {
                    // Get Login User's details.
                    var ur = _userRepo.Find(usr => usr.UserName == User.Identity.Name).FirstOrDefault();

                    _context.Entry(delivery).State = EntityState.Modified;
                    DelivFlowModel rf = new DelivFlowModel();
                    rf.DocId  = delivery.DocId;
                    rf.StepId = 1;
                    rf.UserId = ur.Id;
                    rf.Status = "1";
                    rf.Role   = roleManager.GetRolesForUser(ur.Id).FirstOrDefault();
                    rf.Rtp    = ur.Id;
                    rf.Rdt    = null;
                    rf.Rtt    = DateTime.Now;
                    rf.Cls    = "申請者";
                    _context.DelivFlows.Add(rf);
                    //
                    rf        = new DelivFlowModel();
                    rf.DocId  = delivery.DocId;
                    rf.StepId = 2;
                    rf.Status = "?";
                    AppUserModel u;

                    u         = _context.AppUsers.Find(Convert.ToInt32(delivery.DelivPson));
                    rf.UserId = u.Id;
                    rf.Role   = roleManager.GetRolesForUser(u.Id).FirstOrDefault();
                    rf.Rtp    = null;
                    rf.Rdt    = null;
                    rf.Rtt    = DateTime.Now;
                    rf.Cls    = "得標廠商";
                    _context.DelivFlows.Add(rf);
                    //
                    List <AssetModel> ar = _context.BMEDAssets.Where(a => !string.IsNullOrEmpty(a.Docid))
                                           .Where(a => a.Docid == delivery.PurchaseNo).ToList();
                    VendorModel v;
                    u = _context.AppUsers.Find(Convert.ToInt32(delivery.UserDpt));
                    foreach (AssetModel a in ar)
                    {
                        v = _context.BMEDVendors.Where(vv => vv.UniteNo == delivery.VendorId).FirstOrDefault();
                        if (v != null)
                        {
                            a.VendorId = v.VendorId;
                        }
                        a.DelivUid = u.Id;
                        a.DelivDpt = u.DptId;
                        _context.Entry(a).State = EntityState.Modified;
                    }
                    //
                    //AssetAdd(delivery.ContractNo, delivery.BudgetId);//.GetAwaiter().GetResult();
                    //
                    if (!string.IsNullOrEmpty(delivery.ContractNo) && !string.IsNullOrEmpty(delivery.BudgetId))
                    {
                        List <QryVendorData> rv = new List <QryVendorData>();
                        var s = "[" + "{" + "type:" + "null" + "," + "contract_no:" + delivery.ContractNo + "}" + "]";//new { type, contract_no }.ToString().Replace("=", ":");//"[" + "{" + "type:" + type + "," + "contract_no:" + contract_no + "}" + "]";
                        // var s = "{"+"type:" + type + "," + "contract_no:" + contract_no+"}";
                        HttpClient client = new HttpClient();
                        //var str = JsonConvert.SerializeObject(s);
                        HttpContent content = new StringContent(s, Encoding.UTF8, "application/json");
                        client.BaseAddress = new Uri("https://api.cch.org.tw/HIS_WS_CONTRACT/"); //
                        string url = "AssetApi/Get_Info";                                        //BmedWebApi
                        client.DefaultRequestHeaders.Accept.Clear();
                        client.DefaultRequestHeaders.Accept.Add(
                            new MediaTypeWithQualityHeaderValue("application/json"));
                        //HttpResponseMessage response = await client.GetAsync(url);
                        HttpResponseMessage response = await client.PostAsync(url, content);

                        string rstr = "";
                        if (response.IsSuccessStatusCode)
                        {
                            rstr = await response.Content.ReadAsStringAsync();

                            if (!string.IsNullOrEmpty(rstr))
                            {
                                rv.AddRange(JsonConvert.DeserializeObject <List <QryVendorData> >(rstr));
                            }
                        }
                        client.Dispose();
                        if (rv.Where(r => r.CONTRACT_NO.Contains("Error")).Count() > 0 || rv == null || rv.Count() <= 0)
                        {
                        }
                        else
                        {
                            rv = rv.Where(r => r.PURCHASE_NO == delivery.BudgetId)
                                 .GroupJoin(_context.BMEDAssets,
                                            r => r.ASSET_NO,
                                            a => a.AssetNo,
                                            (r, a) => new { r, a })
                                 .SelectMany(x => x.a.DefaultIfEmpty(), (r, a) => new { vendor = r.r, a })
                                 .Where(x => x.a == null)
                                 .Select(x => x.vendor)
                                 .ToList();
                            if (rv.Count > 0)
                            {
                                AssetModel asset = new AssetModel();
                                rv.ForEach(r =>
                                {
                                    asset.AssetNo     = r.ASSET_NO;
                                    asset.AssetClass  = "醫療儀器";
                                    asset.Cname       = r.PLANT_NAME;
                                    asset.AccDate     = null;
                                    asset.BuyDate     = null;
                                    asset.RelDate     = null;
                                    asset.Brand       = r.BRAND;
                                    asset.Type        = r.MODEL;
                                    asset.VendorId    = Int32.Parse(r.VENDOR_NO);
                                    asset.DisposeKind = "正常";
                                    asset.DelivDpt    = r.DELIV_DPT;
                                    asset.AccDpt      = r.DPT_COD;
                                    asset.Rtt         = DateTime.Now;
                                    _context.BMEDAssets.Add(asset);
                                });
                            }
                        }
                    }
                    //_context.BMEDAssets.Add(assets);
                    //_context.SaveChanges();
                    await _context.SaveChangesAsync();

                    //----------------------------------------------------------------------------------
                    // Mail
                    //----------------------------------------------------------------------------------
                    Tmail  mail = new Tmail();
                    string body = "";
                    mail.from = new System.Net.Mail.MailAddress(ur.Email);
                    u         = _context.AppUsers.Find(Convert.ToInt32(delivery.DelivPson));
                    mail.to   = new System.Net.Mail.MailAddress(u.Email);
                    AppUserModel up = _context.AppUsers.Find(delivery.EngId);
                    if (up != null)
                    {
                        if (!string.IsNullOrEmpty(up.Email))
                        {
                            mail.cc = new System.Net.Mail.MailAddress(up.Email);
                        }
                    }
                    //
                    mail.message.Subject = "醫工智能保修系統[驗收案]:採購案號: " + delivery.PurchaseNo;
                    body += "<p>申請人:" + delivery.UserName + "</p>";
                    body += "<p>合約號碼:" + delivery.ContractNo + "</p>";
                    body += "<p>採購案號:" + delivery.PurchaseNo + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/BMED/Account/Login'>處理案件</a></p>";
                    body += "<br/>";
                    body += "<p>若有任何問題,請與驗收工程師(" + _context.AppUsers.Find(delivery.EngId).FullName + ")聯絡</p>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();
                    //----------------------------------------------------------------------------------

                    return(RedirectToAction("Index", "Home", new { Area = "" }));
                }
                else
                {
                    foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                    {
                        msg += error.ErrorMessage + Environment.NewLine;
                    }
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
            }

            return(BadRequest(msg));
        }
        public IActionResult Create(BuyEvaluateModel buyevaluate)
        {
            if (ModelState.IsValid)
            {
                // Get Login User's details.
                var             user = _userRepo.Find(ur => ur.UserName == User.Identity.Name).FirstOrDefault();
                DepartmentModel dpt  = _context.Departments.Where(d => d.Name_C == buyevaluate.AccDptNam).FirstOrDefault();
                if (dpt != null)
                {
                    buyevaluate.AccDpt = dpt.DptId;
                }
                else
                {
                    ModelState.AddModelError("", "成本中心無此資料!!");
                    return(View(buyevaluate));
                }
                buyevaluate.Rtp = user.Id;
                buyevaluate.Rtt = DateTime.Now;
                _context.Entry(buyevaluate).State = EntityState.Modified;
                //
                BuyFlowModel rf = new BuyFlowModel();
                rf.DocId  = buyevaluate.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  = buyevaluate.DocId;
                rf.StepId = 2;
                rf.UserId = buyevaluate.EngId;
                rf.Status = "?";
                AppUserModel u = _context.AppUsers.Find(buyevaluate.EngId);
                rf.Role = roleManager.GetRolesForUser(u.Id).FirstOrDefault();
                rf.Rtp  = null;
                rf.Rdt  = null;
                rf.Rtt  = DateTime.Now;
                rf.Cls  = "設備工程師";
                _context.BuyFlows.Add(rf);
                //
                _context.SaveChanges();
                //
                Tmail  mail = new Tmail();
                string body = "";
                u         = _context.AppUsers.Find(user.Id);
                mail.from = new System.Net.Mail.MailAddress(u.Email); //u.Email
                u         = _context.AppUsers.Find(buyevaluate.PurchaserId);
                mail.to   = new System.Net.Mail.MailAddress(u.Email); //u.Email
                //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                mail.message.Subject = "醫療儀器管理資訊系統[採購評估案]:儀器名稱: " + buyevaluate.PlantCnam;
                body += "<p>申請人:" + buyevaluate.UserName + "</p>";
                body += "<p>儀器名稱:" + buyevaluate.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();
                return(RedirectToAction("Index", "Home", new { Area = "" }));
            }

            return(View(buyevaluate));
        }
Esempio n. 10
0
        public async Task <IActionResult> NextFlow(AssignModel assign)
        {
            var ur        = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault();
            var repairDtl = _context.BMEDRepairDtls.Find(assign.DocId);

            /* 工程師的流程控管 */
            if (assign.Cls == "設備工程師")
            {
                /* 如點選有費用、卻無輸入費用明細 */
                var isCharged = _context.BMEDRepairDtls.Where(d => d.DocId == assign.DocId).FirstOrDefault().IsCharged;
                if (isCharged == "Y")
                {
                    var CheckRepairCost = _context.BMEDRepairCosts.Where(c => c.DocId == assign.DocId).FirstOrDefault();
                    if (CheckRepairCost == null)
                    {
                        throw new Exception("尚未輸入費用明細!!");
                    }
                }
            }
            //    var repairDtl = _context.BMEDRepairDtls.Where(d => d.DocId == assign.DocId).FirstOrDefault();
            //    /* 3 = 已完成,4 = 報廢 */
            //    if (repairDtl.DealState == 3 || repairDtl.DealState == 4)
            //    {
            //        if(repairDtl.EndDate == null)
            //        {
            //            throw new Exception("報廢及已完成,需輸入完工日!!");
            //        }
            //    }


            if (assign.FlowCls == "結案" || assign.FlowCls == "廢除")
            {
                assign.FlowUid = ur.Id;
            }
            if (ModelState.IsValid)
            {
                RepairFlowModel rf = _context.BMEDRepairFlows.Where(f => f.DocId == assign.DocId && f.Status == "?").FirstOrDefault();
                if (assign.FlowCls == "驗收人")
                {
                    if (_context.BMEDRepairEmps.Where(emp => emp.DocId == assign.DocId).Count() <= 0)
                    {
                        throw new Exception("沒有維修工程師紀錄!!");
                    }
                    else if (_context.BMEDRepairDtls.Find(assign.DocId).EndDate == null)
                    {
                        throw new Exception("沒有完工日!!");
                    }
                    else if (_context.BMEDRepairDtls.Find(assign.DocId).DealState == 0)
                    {
                        throw new Exception("處理狀態不可空值!!");
                    }
                    if (_context.BMEDRepairDtls.Find(assign.DocId).FailFactor == 0)
                    {
                        throw new Exception("故障原因不可空白!!");
                    }
                    if (string.IsNullOrEmpty(_context.BMEDRepairDtls.Find(assign.DocId).InOut))
                    {
                        throw new Exception("維修方式不可空白!!");
                    }
                    if (_context.BMEDRepairDtls.Find(assign.DocId).DealState == 3 ||
                        _context.BMEDRepairDtls.Find(assign.DocId).DealState == 4 ||
                        _context.BMEDRepairDtls.Find(assign.DocId).DealState == 8)
                    {
                        //Do nothing.
                        //狀態為【已完成】、【報廢】、【退件】才可送至驗收人
                    }
                    else
                    {
                        throw new Exception("送至驗收人處理狀態只可為【已完成】、【報廢】、【退件】!!");
                    }
                }
                if (assign.FlowCls == "結案")
                {
                    if (assign.Cls == "驗收人" && repairDtl != null)
                    {
                        if (repairDtl.IsCharged == "Y")
                        {
                            throw new Exception("有費用之案件不可由驗收人直接結案!");
                        }
                    }
                    RepairDtlModel rd = _context.BMEDRepairDtls.Find(assign.DocId);
                    rd.CloseDate             = DateTime.Now;
                    rf.Opinions              = "[" + assign.AssignCls + "]" + Environment.NewLine + assign.AssignOpn;
                    rf.Status                = "2";
                    rf.UserId                = ur.Id;
                    rf.UserName              = _context.AppUsers.Find(ur.Id).FullName;
                    rf.Rtt                   = DateTime.Now;
                    rf.Rtp                   = ur.Id;
                    _context.Entry(rf).State = EntityState.Modified;
                    _context.Entry(rd).State = EntityState.Modified;

                    _context.SaveChanges();
                    // Save stock to ERP system.
                    var ERPreponse = await SaveToERPAsync(assign.DocId);

                    //Send Mail
                    //To all users in this repair's flow.
                    Tmail        mail = new Tmail();
                    string       body = "";
                    string       sto  = "";
                    AppUserModel u;
                    RepairModel  repair = _context.BMEDRepairs.Find(assign.DocId);
                    mail.from = new System.Net.Mail.MailAddress(ur.Email); //u.Email
                    _context.BMEDRepairFlows.Where(f => f.DocId == assign.DocId)
                    .ToList()
                    .ForEach(f =>
                    {
                        u    = _context.AppUsers.Find(f.UserId);
                        sto += u.Email + ",";
                    });
                    mail.sto = sto.TrimEnd(new char[] { ',' });

                    mail.message.Subject = "醫工工務智能保修系統[醫工請修案-結案通知]:設備名稱: " + repair.AssetName;
                    body += "<p>表單編號:" + repair.DocId + "</p>";
                    body += "<p>申請日期:" + repair.ApplyDate.ToString("yyyy/MM/dd") + "</p>";
                    body += "<p>申請人:" + repair.UserName + "</p>";
                    body += "<p>財產編號:" + repair.AssetNo + "</p>";
                    body += "<p>設備名稱:" + repair.AssetName + "</p>";
                    //body += "<p>請修地點:" + repair.PlaceLoc + " " + repair.BuildingName + " " + repair.FloorName + " " + repair.AreaName + "</p>";
                    body += "<p>放置地點:" + repair.PlaceLoc + "</p>";
                    body += "<p>故障描述:" + repair.TroubleDes + "</p>";
                    body += "<p>處理描述:" + rd.DealDes + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/EDIS/Account/Login'" + "?DocId=" + repair.DocId + "&dealType=BMEDRepViews" + ">檢視案件</a></p>";
                    body += "<br/>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    body += "<br/>";
                    //body += "<h3 style='color:red'>如有任何疑問請聯絡工務部,分機3033或7033。<h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();
                }
                else if (assign.FlowCls == "廢除")
                {
                    rf.Opinions = "[廢除]" + Environment.NewLine + assign.AssignOpn;
                    rf.Status   = "3";
                    rf.Rtt      = DateTime.Now;
                    rf.Rtp      = ur.Id;
                    _context.Entry(rf).State = EntityState.Modified;
                    _context.SaveChanges();
                }
                else
                {
                    //轉送下一關卡
                    rf.Opinions = "[" + assign.AssignCls + "]" + Environment.NewLine + assign.AssignOpn;
                    rf.Status   = "1";
                    rf.Rtt      = DateTime.Now;
                    rf.Rtp      = ur.Id;
                    _context.Entry(rf).State = EntityState.Modified;
                    _context.SaveChanges();
                    //
                    RepairFlowModel flow = new RepairFlowModel();
                    flow.DocId    = assign.DocId;
                    flow.StepId   = rf.StepId + 1;
                    flow.UserId   = assign.FlowUid.Value;
                    flow.UserName = _context.AppUsers.Find(assign.FlowUid.Value).FullName;
                    flow.Status   = "?";
                    flow.Cls      = assign.FlowCls;
                    flow.Rtt      = DateTime.Now;
                    _context.BMEDRepairFlows.Add(flow);
                    _context.SaveChanges();

                    //Send Mail
                    //To user and the next flow user.
                    Tmail        mail = new Tmail();
                    string       body = "";
                    AppUserModel u;
                    RepairModel  repair = _context.BMEDRepairs.Find(assign.DocId);
                    mail.from = new System.Net.Mail.MailAddress(ur.Email); //ur.Email
                    u         = _context.AppUsers.Find(flow.UserId);
                    mail.to   = new System.Net.Mail.MailAddress(u.Email);  //u.Email
                                                                           //mail.cc = new System.Net.Mail.MailAddress("*****@*****.**");
                    mail.message.Subject = "醫工工務智能保修系統[醫工請修案]:設備名稱: " + repair.AssetName;
                    body += "<p>表單編號:" + repair.DocId + "</p>";
                    body += "<p>申請日期:" + repair.ApplyDate.ToString("yyyy/MM/dd") + "</p>";
                    body += "<p>申請人:" + repair.UserName + "</p>";
                    body += "<p>財產編號:" + repair.AssetNo + "</p>";
                    body += "<p>設備名稱:" + repair.AssetName + "</p>";
                    body += "<p>故障描述:" + repair.TroubleDes + "</p>";
                    //body += "<p>請修地點:" + repair.PlaceLoc + " " + repair.BuildingName + " " + repair.FloorName + " " + repair.AreaName + "</p>";
                    body += "<p>放置地點:" + repair.PlaceLoc + "</p>";
                    body += "<p><a href='http://dms.cch.org.tw/EDIS/Account/Login'" + "?docId=" + repair.DocId + "&dealType=BMEDRepEdit" + ">處理案件</a></p>";
                    body += "<br/>";
                    body += "<h3>此封信件為系統通知郵件,請勿回覆。</h3>";
                    body += "<br/>";
                    //body += "<h3 style='color:red'>如有任何疑問請聯絡工務部,分機3033或7033。<h3>";
                    mail.message.Body       = body;
                    mail.message.IsBodyHtml = true;
                    mail.SendMail();
                }

                return(new JsonResult(assign)
                {
                    Value = new { success = true, error = "" }
                });
            }
            else
            {
                string msg = "";
                foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                {
                    msg += error.ErrorMessage + Environment.NewLine;
                }
                throw new Exception(msg);
            }
        }