// GET: RepairSearch/ public IActionResult Index() { List <SelectListItem> FlowlistItem = new List <SelectListItem>(); FlowlistItem.Add(new SelectListItem { Text = "未結案", Value = "未結案" }); FlowlistItem.Add(new SelectListItem { Text = "已結案", Value = "已結案" }); ViewData["FLOWTYPE"] = new SelectList(FlowlistItem, "Value", "Text"); /* 成本中心 & 申請部門的下拉選單資料 */ var dptList = new[] { "K", "P", "C" }; //本院部門 var departments = _context.Departments.Where(d => dptList.Contains(d.Loc)).ToList(); List <SelectListItem> listItem = new List <SelectListItem>(); foreach (var item in departments) { listItem.Add(new SelectListItem { Text = item.Name_C + "(" + item.DptId + ")", //show DptName(DptId) Value = item.DptId }); } ViewData["ACCDPT"] = new SelectList(listItem, "Value", "Text"); ViewData["APPLYDPT"] = new SelectList(listItem, "Value", "Text"); /* 處理狀態的下拉選單 */ var dealStatuses = _context.BMEDDealStatuses.ToList(); List <SelectListItem> listItem2 = new List <SelectListItem>(); foreach (var item in dealStatuses) { listItem2.Add(new SelectListItem { Text = item.Title, Value = item.Id.ToString() }); } ViewData["DealStatus"] = new SelectList(listItem2, "Value", "Text"); /* 處理日期查詢的下拉選單 */ List <SelectListItem> listItem4 = new List <SelectListItem>(); listItem4.Add(new SelectListItem { Text = "申請日", Value = "申請日" }); listItem4.Add(new SelectListItem { Text = "完工日", Value = "完工日" }); listItem4.Add(new SelectListItem { Text = "結案日", Value = "結案日" }); ViewData["DateType"] = new SelectList(listItem4, "Value", "Text", "申請日"); QryRepListData data = new QryRepListData(); return(View(data)); }
public async Task <IViewComponentResult> InvokeAsync() { var ur = _userRepo.Find(us => us.UserName == this.User.Identity.Name).FirstOrDefault(); List <SelectListItem> FlowlistItem = new List <SelectListItem>(); FlowlistItem.Add(new SelectListItem { Text = "待簽核", Value = "待簽核" }); FlowlistItem.Add(new SelectListItem { Text = "流程中", Value = "流程中" }); FlowlistItem.Add(new SelectListItem { Text = "已結案", Value = "已結案" }); ViewData["FLOWTYPE"] = new SelectList(FlowlistItem, "Value", "Text", "待簽核"); /* 成本中心的下拉選單資料(關卡在登入者身上的案件) */ var userRepairs = _context.Repairs.Join(_context.RepairFlows.Where(f => f.Status == "?" && f.UserId == ur.Id), r => r.DocId, f => f.DocId, (r, f) => new { repair = r, flow = f }).ToList(); var accDpts = userRepairs.Select(r => r.repair.AccDpt.Trim()).Distinct().ToList(); var departments = _context.Departments.ToList(); List <SelectListItem> listItem = new List <SelectListItem>(); foreach (string id in accDpts) { var dpt = departments.Where(d => d.DptId == id.Trim()).FirstOrDefault(); if (dpt != null) { listItem.Add(new SelectListItem { Text = dpt.Name_C + "(" + dpt.DptId + ")", //show DptName(DptId) Value = dpt.DptId }); } } ViewData["ACCDPT"] = new SelectList(listItem, "Value", "Text"); /* 處理狀態的下拉選單 */ List <SelectListItem> listItem2 = new List <SelectListItem>(); listItem2.Add(new SelectListItem { Text = "未處理", Value = "未處理" }); listItem2.Add(new SelectListItem { Text = "處理中", Value = "處理中" }); ViewData["DealStatus"] = new SelectList(listItem2, "Value", "Text", "未處理"); QryRepListData data = new QryRepListData(); return(View(data)); }
public ActionResult RepIndex(QryRepListData qdata, int page = 1) { string ftype = qdata.qtyFLOWTYPE; string qtyDealStatus = qdata.qtyDealStatus; string qryEngId = qdata.qtyEngId; List <RepairSearchListVModel> rv = new List <RepairSearchListVModel>(); /* Querying data. */ var rps = _context.Repairs.AsQueryable(); var repairFlows = _context.RepairFlows.AsQueryable(); var repairDtls = _context.RepairDtls.AsQueryable(); if (!string.IsNullOrEmpty(ftype)) //流程狀態 { switch (ftype) { case "未結案": repairFlows = repairFlows.Where(f => f.Status == "?"); break; case "已結案": repairFlows = repairFlows.Where(f => f.Status == "2"); break; } } else { repairFlows = repairFlows.Where(f => f.Status == "2" || f.Status == "?"); } if (!string.IsNullOrEmpty(qtyDealStatus)) //處理狀態 { repairDtls = repairDtls.Where(r => r.DealState == Convert.ToInt32(qtyDealStatus)); } if (!string.IsNullOrEmpty(qryEngId)) //負責工程師 { rps = rps.Where(r => r.EngId == Convert.ToInt32(qryEngId)); } /* If no search result. */ if (rps.Count() == 0) { return(PartialView("RepList", rv.ToPagedList(1, pageSize))); } rps.Join(repairFlows, r => r.DocId, f => f.DocId, (r, f) => new { repair = r, flow = f }) .Join(repairDtls, m => m.repair.DocId, d => d.DocId, (m, d) => new { repair = m.repair, flow = m.flow, repdtl = d }) .Join(_context.Departments, j => j.repair.AccDpt, d => d.DptId, (j, d) => new { repair = j.repair, flow = j.flow, repdtl = j.repdtl, dpt = d }) .ToList() .ForEach(j => rv.Add(new RepairSearchListVModel { DocType = "請修", RepType = j.repair.RepType, DocId = j.repair.DocId, ApplyDate = j.repair.ApplyDate, PlaceLoc = j.repair.LocType, ApplyDpt = j.repair.DptId, AccDpt = j.repair.AccDpt, AccDptName = j.dpt.Name_C, TroubleDes = j.repair.TroubleDes, DealState = _context.DealStatuses.Find(j.repdtl.DealState).Title, DealDes = j.repdtl.DealDes, Cost = j.repdtl.Cost, Days = DateTime.Now.Subtract(j.repair.ApplyDate).Days, Flg = j.flow.Status, FlowUid = j.flow.UserId, FlowCls = j.flow.Cls, FlowUidName = _context.AppUsers.Find(j.flow.UserId).FullName, EndDate = j.repdtl.EndDate, CloseDate = j.repdtl.CloseDate, repdata = j.repair })); /* 設備編號"有"、"無"的對應,"有"讀取table相關data,"無"只顯示申請人輸入的設備名稱 */ foreach (var item in rv) { var repairDoc = _context.Repairs.Find(item.DocId); if (repairDoc.AssetNo != null) { var asset = _context.Assets.Where(a => a.AssetNo == repairDoc.AssetNo).FirstOrDefault(); if (asset != null) { item.AssetNo = asset.AssetNo; item.AssetName = asset.Cname; item.Brand = asset.Brand; item.Type = asset.Type; } } else { item.AssetName = repairDoc.AssetName; } } if (rv.ToPagedList(page, pageSize).Count <= 0) { return(PartialView("RepList", rv.ToPagedList(1, pageSize))); } return(PartialView("RepList", rv.ToPagedList(page, pageSize))); }
// GET: Admin/Search/RepToExcel public ActionResult RepToExcel(QryRepListData qdata) { string ftype = qdata.qtyFLOWTYPE; string qtyDealStatus = qdata.qtyDealStatus; string qryEngId = qdata.qtyEngId; List <RepairSearchListVModel> rv = new List <RepairSearchListVModel>(); /* Querying data. */ var rps = _context.Repairs.AsQueryable(); var repairFlows = _context.RepairFlows.AsQueryable(); var repairDtls = _context.RepairDtls.AsQueryable(); if (!string.IsNullOrEmpty(ftype)) //流程狀態 { switch (ftype) { case "未結案": repairFlows = repairFlows.Where(f => f.Status == "?"); break; case "已結案": repairFlows = repairFlows.Where(f => f.Status == "2"); break; } } else { repairFlows = repairFlows.Where(f => f.Status == "2" || f.Status == "?"); } if (!string.IsNullOrEmpty(qtyDealStatus)) //處理狀態 { repairDtls = repairDtls.Where(r => r.DealState == Convert.ToInt32(qtyDealStatus)); } if (!string.IsNullOrEmpty(qryEngId)) //負責工程師 { rps = rps.Where(r => r.EngId == Convert.ToInt32(qryEngId)); } rps.Join(repairFlows, r => r.DocId, f => f.DocId, (r, f) => new { repair = r, flow = f }) .Join(repairDtls, m => m.repair.DocId, d => d.DocId, (m, d) => new { repair = m.repair, flow = m.flow, repdtl = d }) .Join(_context.Departments, j => j.repair.AccDpt, d => d.DptId, (j, d) => new { repair = j.repair, flow = j.flow, repdtl = j.repdtl, dpt = d }) .ToList() .ForEach(j => rv.Add(new RepairSearchListVModel { DocType = "請修", RepType = j.repair.RepType, DocId = j.repair.DocId, ApplyDate = j.repair.ApplyDate, PlaceLoc = j.repair.LocType, ApplyDpt = j.repair.DptId, AccDpt = j.repair.AccDpt, AccDptName = j.dpt.Name_C, TroubleDes = j.repair.TroubleDes, DealState = _context.DealStatuses.Find(j.repdtl.DealState).Title, DealDes = j.repdtl.DealDes, Cost = j.repdtl.Cost, Days = DateTime.Now.Subtract(j.repair.ApplyDate).Days, Flg = j.flow.Status, FlowUid = j.flow.UserId, FlowCls = j.flow.Cls, FlowUidName = _context.AppUsers.Find(j.flow.UserId).FullName, EndDate = j.repdtl.EndDate, CloseDate = j.repdtl.CloseDate, repdata = j.repair })); /* 設備編號"有"、"無"的對應,"有"讀取table相關data,"無"只顯示申請人輸入的設備名稱 */ foreach (var item in rv) { var repairDoc = _context.Repairs.Find(item.DocId); if (repairDoc.AssetNo != null) { var asset = _context.Assets.Where(a => a.AssetNo == repairDoc.AssetNo).FirstOrDefault(); if (asset != null) { item.AssetNo = asset.AssetNo; item.AssetName = asset.Cname; item.Brand = asset.Brand; item.Type = asset.Type; } } else { item.AssetName = repairDoc.AssetName; } } //ClosedXML的用法 先new一個Excel Workbook using (XLWorkbook workbook = new XLWorkbook()) { //取得要塞入Excel內的資料 var data = rv.Select(c => new { c.RepType, c.DocId, c.ApplyDate, AccDpt = c.AccDptName + "(" + c.AccDpt + ")", Asset = c.AssetName + "(" + c.AssetNo + ")", c.PlaceLoc, c.TroubleDes, c.DealDes, c.DealState, c.EndDate, c.CloseDate, c.Cost, c.Days, c.FlowCls, c.FlowUidName }); //一個workbook內至少會有一個worksheet,並將資料Insert至這個位於A1這個位置上 var ws = workbook.Worksheets.Add("sheet1", 1); //Title ws.Cell(1, 1).Value = "請修類別"; ws.Cell(1, 2).Value = "表單編號"; ws.Cell(1, 3).Value = "申請日期"; ws.Cell(1, 4).Value = "成本中心"; ws.Cell(1, 5).Value = "物品名稱(財產編號)"; ws.Cell(1, 6).Value = "請修地點"; ws.Cell(1, 7).Value = "故障描述"; ws.Cell(1, 8).Value = "處理描述"; ws.Cell(1, 9).Value = "處理狀態"; ws.Cell(1, 10).Value = "完工日期"; ws.Cell(1, 11).Value = "結案日期"; ws.Cell(1, 12).Value = "費用"; ws.Cell(1, 13).Value = "天數"; ws.Cell(1, 14).Value = "關卡"; ws.Cell(1, 15).Value = "關卡人員"; //如果是要塞入Query後的資料該資料一定要變成是data.AsEnumerable() ws.Cell(2, 1).InsertData(data); //因為是用Query的方式,這個地方要用串流的方式來存檔 using (MemoryStream memoryStream = new MemoryStream()) { workbook.SaveAs(memoryStream); //請注意 一定要加入這行,不然Excel會是空檔 memoryStream.Seek(0, SeekOrigin.Begin); //注意Excel的ContentType,是要用這個"application/vnd.ms-excel" string fileName = "工程師案件搜尋(請修)_" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx"; return(this.File(memoryStream.ToArray(), "application/vnd.ms-excel", fileName)); } } }
public async Task <IViewComponentResult> InvokeAsync() { List <SelectListItem> FlowlistItem = new List <SelectListItem>(); FlowlistItem.Add(new SelectListItem { Text = "待簽核", Value = "待簽核" }); FlowlistItem.Add(new SelectListItem { Text = "流程中", Value = "流程中" }); FlowlistItem.Add(new SelectListItem { Text = "已結案", Value = "已結案" }); ViewData["FLOWTYPE"] = new SelectList(FlowlistItem, "Value", "Text", "待簽核"); /* 成本中心 & 申請部門 的下拉選單資料 */ var dptList = new[] { "K", "P", "C" }; //本院部門 var departments = _context.Departments.Where(d => dptList.Contains(d.Loc)).ToList(); List <SelectListItem> listItem = new List <SelectListItem>(); foreach (var item in departments) { listItem.Add(new SelectListItem { Text = item.Name_C + "(" + item.DptId + ")", //show DptName(DptId) Value = item.DptId }); } ViewData["ACCDPT"] = new SelectList(listItem, "Value", "Text"); ViewData["APPLYDPT"] = new SelectList(listItem, "Value", "Text"); /* 處理狀態 的下拉選單 */ var dealStatuses = _context.DealStatuses.ToList(); List <SelectListItem> listItem2 = new List <SelectListItem>(); foreach (var item in dealStatuses) { listItem2.Add(new SelectListItem { Text = item.Title, Value = item.Title }); } ViewData["DealStatus"] = new SelectList(listItem2, "Value", "Text"); /* 有無費用 的下拉選單 */ List <SelectListItem> listItem3 = new List <SelectListItem>(); listItem3.Add(new SelectListItem { Text = "有", Value = "Y" }); listItem3.Add(new SelectListItem { Text = "無", Value = "N" }); ViewData["IsCharged"] = new SelectList(listItem3, "Value", "Text"); /* 日期查詢 的下拉選單 */ List <SelectListItem> listItem4 = new List <SelectListItem>(); listItem4.Add(new SelectListItem { Text = "申請日", Value = "申請日" }); listItem4.Add(new SelectListItem { Text = "完工日", Value = "完工日" }); listItem4.Add(new SelectListItem { Text = "結案日", Value = "結案日" }); ViewData["DateType"] = new SelectList(listItem4, "Value", "Text", "申請日"); /* 請修類別 的下拉選單 */ List <SelectListItem> listItem5 = new List <SelectListItem>(); listItem5.Add(new SelectListItem { Text = "請修", Value = "請修" }); listItem5.Add(new SelectListItem { Text = "送修", Value = "送修" }); listItem5.Add(new SelectListItem { Text = "增設", Value = "增設" }); listItem5.Add(new SelectListItem { Text = "借物", Value = "借物" }); ViewData["qtyRepType"] = new SelectList(listItem5, "Value", "Text"); QryRepListData data = new QryRepListData(); return(View(data)); }
/// <summary> /// The Index of searching all repair docs. /// </summary> /// <returns></returns> // GET: BMED/Search/RepIndex public IActionResult RepIndex() { List <SelectListItem> FlowlistItem = new List <SelectListItem>(); FlowlistItem.Add(new SelectListItem { Text = "未結案", Value = "未結案" }); FlowlistItem.Add(new SelectListItem { Text = "已結案", Value = "已結案" }); ViewData["FLOWTYPE"] = new SelectList(FlowlistItem, "Value", "Text"); /* 成本中心 & 申請部門的下拉選單資料 */ var dptList = new[] { "K", "P", "C" }; //本院部門 var departments = _context.Departments.Where(d => dptList.Contains(d.Loc)).ToList(); List <SelectListItem> listItem = new List <SelectListItem>(); foreach (var item in departments) { listItem.Add(new SelectListItem { Text = item.Name_C + "(" + item.DptId + ")", //show DptName(DptId) Value = item.DptId }); } ViewData["ACCDPT"] = new SelectList(listItem, "Value", "Text"); ViewData["APPLYDPT"] = new SelectList(listItem, "Value", "Text"); /* 處理狀態的下拉選單 */ var dealStatuses = _context.BMEDDealStatuses.ToList(); List <SelectListItem> listItem2 = new List <SelectListItem>(); foreach (var item in dealStatuses) { listItem2.Add(new SelectListItem { Text = item.Title, Value = item.Id.ToString() }); } ViewData["DealStatus"] = new SelectList(listItem2, "Value", "Text"); /* 處理有無費用的下拉選單 */ List <SelectListItem> listItem3 = new List <SelectListItem>(); listItem3.Add(new SelectListItem { Text = "有", Value = "Y" }); listItem3.Add(new SelectListItem { Text = "無", Value = "N" }); ViewData["IsCharged"] = new SelectList(listItem3, "Value", "Text"); /* 處理日期查詢的下拉選單 */ List <SelectListItem> listItem4 = new List <SelectListItem>(); listItem4.Add(new SelectListItem { Text = "申請日", Value = "申請日" }); listItem4.Add(new SelectListItem { Text = "完工日", Value = "完工日" }); listItem4.Add(new SelectListItem { Text = "結案日", Value = "結案日" }); ViewData["DateType"] = new SelectList(listItem4, "Value", "Text", "申請日"); /* 處理工程師查詢的下拉選單 */ var engs = roleManager.GetUsersInRole("MedEngineer").ToList(); List <SelectListItem> listItem5 = new List <SelectListItem>(); foreach (string l in engs) { var u = _context.AppUsers.Where(r => r.UserName == l).FirstOrDefault(); if (u != null) { listItem5.Add(new SelectListItem { Text = u.FullName + "(" + u.UserName + ")", Value = u.Id.ToString() }); } } ViewData["BMEDEngs"] = new SelectList(listItem5, "Value", "Text"); /* 擷取該使用者單位底下所有人員 */ var ur = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault(); var dptUsers = _context.AppUsers.Where(a => a.DptId == ur.DptId).ToList(); List <SelectListItem> dptMemberList = new List <SelectListItem>(); foreach (var item in dptUsers) { dptMemberList.Add(new SelectListItem { Text = item.FullName, Value = item.Id.ToString() }); } ViewData["DptMembers"] = new SelectList(dptMemberList, "Value", "Text"); QryRepListData data = new QryRepListData(); return(View(data)); }
public IActionResult GetRepQryList(QryRepListData qdata) { string docid = qdata.BMEDqtyDOCID; string ano = qdata.BMEDqtyASSETNO; string acc = qdata.BMEDqtyACCDPT; string aname = qdata.BMEDqtyASSETNAME; string ftype = qdata.BMEDqtyFLOWTYPE; string dptid = qdata.BMEDqtyDPTID; string qtyDate1 = qdata.BMEDqtyApplyDateFrom; string qtyDate2 = qdata.BMEDqtyApplyDateTo; string qtyIsCharged = qdata.BMEDqtyIsCharged; string qtyDealStatus = qdata.BMEDqtyDealStatus; string qtyDateType = qdata.BMEDqtyDateType; string qtyEngCode = qdata.BMEDqtyEngCode; string qtyTicketNo = qdata.BMEDqtyTicketNo; string qtyVendor = qdata.BMEDqtyVendor; string qtyTroubledes = qdata.BMEDqtyTROUBLEDES; string qtyUserId = qdata.BMEDqtyUserId; DateTime applyDateFrom = DateTime.Now; DateTime applyDateTo = DateTime.Now; /* Dealing search by date. */ if (qtyDate1 != null && qtyDate2 != null)// If 2 date inputs have been insert, compare 2 dates. { DateTime date1 = DateTime.Parse(qtyDate1); DateTime date2 = DateTime.Parse(qtyDate2); int result = DateTime.Compare(date1, date2); if (result < 0) { applyDateFrom = date1.Date; applyDateTo = date2.Date; } else if (result == 0) { applyDateFrom = date1.Date; applyDateTo = date1.Date; } else { applyDateFrom = date2.Date; applyDateTo = date1.Date; } } else if (qtyDate1 == null && qtyDate2 != null) { applyDateFrom = DateTime.Parse(qtyDate2); applyDateTo = DateTime.Parse(qtyDate2); } else if (qtyDate1 != null && qtyDate2 == null) { applyDateFrom = DateTime.Parse(qtyDate1); applyDateTo = DateTime.Parse(qtyDate1); } List <RepairSearchListVModel> rv = new List <RepairSearchListVModel>(); /* Querying data. */ var rps = _context.BMEDRepairs.ToList(); var repairFlows = _context.BMEDRepairFlows.ToList(); var repairDtls = _context.BMEDRepairDtls.ToList(); if (!string.IsNullOrEmpty(docid)) //表單編號 { docid = docid.Trim(); rps = rps.Where(v => v.DocId == docid).ToList(); } if (!string.IsNullOrEmpty(ano)) //財產編號 { rps = rps.Where(v => v.AssetNo == ano).ToList(); } if (!string.IsNullOrEmpty(dptid)) //所屬部門編號 { rps = rps.Where(v => v.DptId == dptid).ToList(); } if (!string.IsNullOrEmpty(acc)) //成本中心 { rps = rps.Where(v => v.AccDpt == acc).ToList(); } if (!string.IsNullOrEmpty(aname)) //財產名稱 { rps = rps.Where(v => v.AssetName != null) .Where(v => v.AssetName.Contains(aname)).ToList(); } if (!string.IsNullOrEmpty(qtyTroubledes)) //故障描述 { rps = rps.Where(v => v.TroubleDes != null) .Where(v => v.TroubleDes.Contains(qtyTroubledes)).ToList(); } if (!string.IsNullOrEmpty(qtyUserId)) //申請人 { int uid = Convert.ToInt32(qtyUserId); rps = rps.Where(v => v.UserId == uid).ToList(); } if (!string.IsNullOrEmpty(qtyTicketNo)) //發票號碼 { qtyTicketNo = qtyTicketNo.ToUpper(); var resultDocIds = _context.BMEDRepairCosts.Include(rc => rc.TicketDtl) .Where(rc => rc.TicketDtl.TicketDtlNo == qtyTicketNo) .Select(rc => rc.DocId).Distinct(); rps = (from r in rps where resultDocIds.Any(val => r.DocId.Contains(val)) select r).ToList(); } if (!string.IsNullOrEmpty(qtyVendor)) //廠商關鍵字 { var resultDocIds = _context.BMEDRepairCosts.Include(rc => rc.TicketDtl) .Where(rc => rc.VendorName.Contains(qtyVendor)) .Select(rc => rc.DocId).Distinct(); rps = (from r in rps where resultDocIds.Any(val => r.DocId.Contains(val)) select r).ToList(); } if (!string.IsNullOrEmpty(qtyEngCode)) //負責工程師 { rps = rps.Where(v => v.EngId == Convert.ToInt32(qtyEngCode)).ToList(); } if (string.IsNullOrEmpty(qtyDate1) == false || string.IsNullOrEmpty(qtyDate2) == false) //申請日 { if (qtyDateType == "申請日") { rps = rps.Where(v => v.ApplyDate >= applyDateFrom && v.ApplyDate <= applyDateTo).ToList(); } } if (!string.IsNullOrEmpty(ftype)) //流程狀態 { switch (ftype) { case "未結案": repairFlows = repairFlows.GroupBy(f => f.DocId).Where(group => group.Last().Status == "?") .Select(group => group.Last()).ToList(); break; case "已結案": repairFlows = repairFlows.GroupBy(f => f.DocId).Where(group => group.Last().Status == "2") .Select(group => group.Last()).ToList(); break; } } else { repairFlows = repairFlows.GroupBy(f => f.DocId).Where(group => group.Last().Status != "3") .Select(group => group.Last()).ToList();; } if (!string.IsNullOrEmpty(qtyDealStatus)) //處理狀態 { repairDtls = repairDtls.Where(r => r.DealState == Convert.ToInt32(qtyDealStatus)).ToList(); } if (!string.IsNullOrEmpty(qtyIsCharged)) //有無費用 { repairDtls = repairDtls.Where(r => r.IsCharged == qtyIsCharged).ToList(); } /* If no search result. */ if (rps.Count() == 0) { return(View("RepQryList", rv)); } rps.Join(repairFlows, r => r.DocId, f => f.DocId, (r, f) => new { repair = r, flow = f }) .Join(repairDtls, m => m.repair.DocId, d => d.DocId, (m, d) => new { repair = m.repair, flow = m.flow, repdtl = d }) .Join(_context.Departments, j => j.repair.AccDpt, d => d.DptId, (j, d) => new { repair = j.repair, flow = j.flow, repdtl = j.repdtl, dpt = d }) .ToList() .ForEach(j => rv.Add(new RepairSearchListVModel { DocType = "醫工請修", RepType = j.repair.RepType, DocId = j.repair.DocId, ApplyDate = j.repair.ApplyDate, PlaceLoc = j.repair.PlaceLoc, ApplyDpt = j.repair.DptId, AccDpt = j.repair.AccDpt, AccDptName = j.dpt.Name_C, TroubleDes = j.repair.TroubleDes, DealState = _context.BMEDDealStatuses.Find(j.repdtl.DealState).Title, DealDes = j.repdtl.DealDes, Cost = j.repdtl.Cost, Days = DateTime.Now.Subtract(j.repair.ApplyDate).Days, Flg = j.flow.Status, FlowUid = j.flow.UserId, FlowCls = j.flow.Cls, FlowUidName = _context.AppUsers.Find(j.flow.UserId).FullName, EndDate = j.repdtl.EndDate, CloseDate = j.repdtl.CloseDate, IsCharged = j.repdtl.IsCharged, repdata = j.repair })); /* 設備編號"有"、"無"的對應,"有"讀取table相關data,"無"只顯示申請人輸入的設備名稱 */ foreach (var item in rv) { var repairDoc = _context.BMEDRepairs.Find(item.DocId); if (repairDoc.AssetNo != null) { var asset = _context.BMEDAssets.Where(a => a.AssetNo == repairDoc.AssetNo).FirstOrDefault(); if (asset != null) { item.AssetNo = asset.AssetNo; item.AssetName = asset.Cname; item.Brand = asset.Brand; item.Type = asset.Type; } } else { item.AssetName = repairDoc.AssetName; } } /* Search date by DateType. */ if (string.IsNullOrEmpty(qtyDate1) == false || string.IsNullOrEmpty(qtyDate2) == false) { if (qtyDateType == "結案日") { rv = rv.Where(v => v.CloseDate >= applyDateFrom && v.CloseDate <= applyDateTo).ToList(); } else if (qtyDateType == "完工日") { rv = rv.Where(v => v.EndDate >= applyDateFrom && v.EndDate <= applyDateTo).ToList(); } } /* Sorting search result. */ if (rv.Count() != 0) { if (qtyDateType == "結案日") { rv = rv.OrderByDescending(r => r.CloseDate).ThenByDescending(r => r.DocId).ToList(); } else if (qtyDateType == "完工日") { rv = rv.OrderByDescending(r => r.EndDate).ThenByDescending(r => r.DocId).ToList(); } else { rv = rv.OrderByDescending(r => r.ApplyDate).ThenByDescending(r => r.DocId).ToList(); } } return(View("RepQryList", rv)); }
public ActionResult Index(QryRepListData qdata) { string docid = qdata.qtyDOCID; string ano = qdata.qtyASSETNO; string acc = qdata.qtyACCDPT; string aname = qdata.qtyASSETNAME; string ftype = qdata.qtyFLOWTYPE; string dptid = qdata.qtyDPTID; string qtyDate1 = qdata.qtyApplyDateFrom; string qtyDate2 = qdata.qtyApplyDateTo; string qtyDealStatus = qdata.qtyDealStatus; DateTime applyDateFrom = DateTime.Now; DateTime applyDateTo = DateTime.Now; /* Dealing search by date. */ if (qtyDate1 != null && qtyDate2 != null)// If 2 date inputs have been insert, compare 2 dates. { DateTime date1 = DateTime.Parse(qtyDate1); DateTime date2 = DateTime.Parse(qtyDate2); int result = DateTime.Compare(date1, date2); if (result < 0) { applyDateFrom = date1.Date; applyDateTo = date2.Date; } else if (result == 0) { applyDateFrom = date1.Date; applyDateTo = date1.Date; } else { applyDateFrom = date2.Date; applyDateTo = date1.Date; } } else if (qtyDate1 == null && qtyDate2 != null) { applyDateFrom = DateTime.Parse(qtyDate2); applyDateTo = DateTime.Parse(qtyDate2); } else if (qtyDate1 != null && qtyDate2 == null) { applyDateFrom = DateTime.Parse(qtyDate1); applyDateTo = DateTime.Parse(qtyDate1); } List <RepairListVModel> rv = new List <RepairListVModel>(); /* Get login user. */ var ur = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault(); /* Check search type for engineer, if no search value search users's doc, else search all. */ var searchAllDoc = false; //if (!(string.IsNullOrEmpty(docid) && string.IsNullOrEmpty(ano) && string.IsNullOrEmpty(acc) // && string.IsNullOrEmpty(aname) && string.IsNullOrEmpty(dptid))) //{ // if (userManager.IsInRole(User, "RepEngineer") == true) // searchAllDoc = true; //} var rps = _context.Repairs.ToList(); if (!string.IsNullOrEmpty(docid)) { rps = rps.Where(v => v.DocId == docid).ToList(); } if (!string.IsNullOrEmpty(ano)) { rps = rps.Where(v => v.AssetNo == ano).ToList(); } if (!string.IsNullOrEmpty(dptid)) { rps = rps.Where(v => v.DptId == dptid).ToList(); } if (!string.IsNullOrEmpty(acc)) { rps = rps.Where(v => v.AccDpt == acc).ToList(); } if (!string.IsNullOrEmpty(aname)) { rps = rps.Where(v => v.AssetName != null) .Where(v => v.AssetName.Contains(aname)) .ToList(); } if (string.IsNullOrEmpty(qtyDate1) == false || string.IsNullOrEmpty(qtyDate2) == false) { rps = rps.Where(v => v.ApplyDate >= applyDateFrom && v.ApplyDate <= applyDateTo).ToList(); } /* If no search result. */ if (rps.Count() == 0) { return(View("List", rv)); } switch (ftype) { /* 與登入者相關且流程不在該登入者身上的文件 */ case "流程中": rps.Join(_context.RepairFlows.Where(f2 => f2.UserId == ur.Id && f2.Status == "1") .Select(f => f.DocId).Distinct(), r => r.DocId, f2 => f2, (r, f2) => r) .Join(_context.RepairFlows.Where(f => f.Status == "?" && f.UserId != ur.Id), r => r.DocId, f => f.DocId, (r, f) => new { repair = r, flow = f }) //.Join(_context.Assets, r => r.repair.AssetNo, a => a.AssetNo, //(r, a) => new //{ // repair = r.repair, // asset = a, // flow = r.flow //}) .Join(_context.RepairDtls, m => m.repair.DocId, d => d.DocId, (m, d) => new { repair = m.repair, //asset = m.asset, flow = m.flow, repdtl = d }) .Join(_context.Departments, j => j.repair.AccDpt, d => d.DptId, (j, d) => new { repair = j.repair, //asset = j.asset, flow = j.flow, repdtl = j.repdtl, dpt = d }) .ToList() .ForEach(j => rv.Add(new RepairListVModel { DocType = "請修", RepType = j.repair.RepType, DocId = j.repair.DocId, ApplyDate = j.repair.ApplyDate, //AssetNo = j.repair.AssetNo, //AssetName = j.repair.AssetName, //Brand = j.asset.Brand, PlaceLoc = j.repair.LocType, //Type = j.asset.Type, ApplyDpt = j.repair.DptId, AccDpt = j.repair.AccDpt, AccDptName = j.dpt.Name_C, TroubleDes = j.repair.TroubleDes, DealState = _context.DealStatuses.Find(j.repdtl.DealState).Title, DealDes = j.repdtl.DealDes, Cost = j.repdtl.Cost, Days = DateTime.Now.Subtract(j.repair.ApplyDate).Days, Flg = j.flow.Status, FlowUid = j.flow.UserId, FlowCls = j.flow.Cls, FlowDptId = _context.AppUsers.Find(j.flow.UserId).DptId, repdata = j.repair })); break; /* 與登入者相關且結案的文件 */ case "已結案": /* Get all closed repair docs. */ List <RepairFlowModel> rf = _context.RepairFlows.Where(f => f.Status == "2").ToList(); if (userManager.IsInRole(User, "Admin") || userManager.IsInRole(User, "RepAdmin") || userManager.IsInRole(User, "Manager") || userManager.IsInRole(User, "RepEngineer")) { if (userManager.IsInRole(User, "Manager")) { rf = rf.Join(_context.Repairs.Where(r => r.AccDpt == ur.DptId), f => f.DocId, r => r.DocId, (f, r) => f).ToList(); } /* If no other search values, search the docs belong the login engineer. */ if (userManager.IsInRole(User, "RepEngineer") && searchAllDoc == false) { rf = rf.Join(_context.RepairFlows.Where(f2 => f2.UserId == ur.Id), f => f.DocId, f2 => f2.DocId, (f, f2) => f).ToList(); } } else /* If normal user, search the docs belong himself. */ { rf = rf.Join(_context.RepairFlows.Where(f2 => f2.UserId == ur.Id), f => f.DocId, f2 => f2.DocId, (f, f2) => f).ToList(); } rf.Select(f => new { f.DocId, f.UserId, f.Status, f.Cls }).Distinct().Join(rps.DefaultIfEmpty(), f => f.DocId, r => r.DocId, (f, r) => new { repair = r, flow = f }) //.Join(_context.Assets, r => r.repair.AssetNo, a => a.AssetNo, //(r, a) => new //{ // repair = r.repair, // asset = a, // flow = r.flow //}) .Join(_context.RepairDtls, m => m.repair.DocId, d => d.DocId, (m, d) => new { repair = m.repair, //asset = m.asset, flow = m.flow, repdtl = d }) .Join(_context.Departments, j => j.repair.AccDpt, d => d.DptId, (j, d) => new { repair = j.repair, //asset = j.asset, flow = j.flow, repdtl = j.repdtl, dpt = d }).ToList() .ForEach(j => rv.Add(new RepairListVModel { DocType = "請修", RepType = j.repair.RepType, DocId = j.repair.DocId, ApplyDate = j.repair.ApplyDate, //AssetNo = j.repair.AssetNo, //AssetName = j.repair.AssetName, //Brand = j.asset.Brand, PlaceLoc = j.repair.LocType, //Type = j.asset.Type, ApplyDpt = j.repair.DptId, AccDpt = j.repair.AccDpt, AccDptName = j.dpt.Name_C, TroubleDes = j.repair.TroubleDes, DealState = _context.DealStatuses.Find(j.repdtl.DealState).Title, DealDes = j.repdtl.DealDes, Cost = j.repdtl.Cost, Days = DateTime.Now.Subtract(j.repair.ApplyDate).Days, Flg = j.flow.Status, FlowUid = j.flow.UserId, FlowCls = j.flow.Cls, FlowDptId = _context.AppUsers.Find(j.flow.UserId).DptId, repdata = j.repair })); break; /* 與登入者相關且流程在該登入者身上的文件 */ case "待簽核": /* Get all dealing repair docs. */ var repairFlows = _context.RepairFlows.Join(rps.DefaultIfEmpty(), f => f.DocId, r => r.DocId, (f, r) => new { repair = r, flow = f }).ToList(); if (userManager.IsInRole(User, "Admin") || userManager.IsInRole(User, "RepAdmin") || userManager.IsInRole(User, "RepEngineer")) { /* If has other search values, search all RepairDocs which flowCls is in engineer. */ /* Else return the docs belong the login engineer. */ if (userManager.IsInRole(User, "RepEngineer") && searchAllDoc == true) { repairFlows = repairFlows.Where(f => f.flow.Status == "?" && f.flow.Cls.Contains("工程師")).ToList(); } else { repairFlows = repairFlows.Where(f => (f.flow.Status == "?" && f.flow.UserId == ur.Id) || (f.flow.Status == "?" && f.flow.Cls == "驗收人" && _context.AppUsers.Find(f.flow.UserId).DptId == ur.DptId)).ToList(); } } else { repairFlows = repairFlows.Where(f => (f.flow.Status == "?" && f.flow.UserId == ur.Id) || (f.flow.Status == "?" && f.flow.Cls == "驗收人" && f.repair.DptId == ur.DptId)).ToList(); } //repairFlows.Select(f => new //{ // f.DocId, // f.UserId, // f.Status, // f.Cls //}).Distinct().Join(rps.DefaultIfEmpty(), f => f.DocId, r => r.DocId, //(f, r) => new //{ // repair = r, // flow = f //}) //.Join(_context.Assets, r => r.repair.AssetNo, a => a.AssetNo, //(r, a) => new //{ // repair = r.repair, // asset = a, // flow = r.flow //}) repairFlows.Join(_context.RepairDtls, m => m.repair.DocId, d => d.DocId, (m, d) => new { repair = m.repair, //asset = m.asset, flow = m.flow, repdtl = d }) .Join(_context.Departments, j => j.repair.AccDpt, d => d.DptId, (j, d) => new { repair = j.repair, //asset = j.asset, flow = j.flow, repdtl = j.repdtl, dpt = d }).ToList() .ForEach(j => rv.Add(new RepairListVModel { DocType = "請修", RepType = j.repair.RepType, DocId = j.repair.DocId, ApplyDate = j.repair.ApplyDate, //AssetNo = j.repair.AssetNo, //AssetName = j.repair.AssetName, //Brand = j.asset.Brand, PlaceLoc = j.repair.LocType, //Location1 = _context.Buildings.Where(b => b.BuildingId == Convert.ToInt32(j.repair.Building)).FirstOrDefault().BuildingName // + " " + _context.Floors.Where(f => f.BuildingId == Convert.ToInt32(j.repair.Building) && f.FloorId == j.repair.Floor).FirstOrDefault().FloorName, //Location2 = " " + _context.Places.Where(p => p.BuildingId == Convert.ToInt32(j.repair.Building) && p.FloorId == j.repair.Floor && p.PlaceId == j.repair.Area).FirstOrDefault().PlaceName, //Type = j.asset.Type, ApplyDpt = j.repair.DptId, ApplyDptName = _context.Departments.Find(j.repair.DptId).Name_C, AccDpt = j.repair.AccDpt, AccDptName = j.dpt.Name_C, TroubleDes = j.repair.TroubleDes, DealState = _context.DealStatuses.Find(j.repdtl.DealState).Title, DealDes = j.repdtl.DealDes, Cost = j.repdtl.Cost, Days = DateTime.Now.Subtract(j.repair.ApplyDate).Days, Flg = j.flow.Status, FlowUid = j.flow.UserId, FlowCls = j.flow.Cls, FlowDptId = _context.AppUsers.Find(j.flow.UserId).DptId, repdata = j.repair })); break; } ; /* 設備編號"有"、"無"的對應,"有"讀取table相關data,"無"只顯示申請人輸入的設備名稱 */ foreach (var item in rv) { //var repairDoc = _context.Repairs.Find(item.DocId); //if (repairDoc.AssetNo != null) if (!string.IsNullOrEmpty(item.repdata.AssetNo)) { var asset = _context.Assets.Where(a => a.AssetNo == item.repdata.AssetNo).FirstOrDefault(); if (asset != null) { item.AssetNo = asset.AssetNo; item.AssetName = asset.Cname; item.Brand = asset.Brand; item.Type = asset.Type; } } else { item.AssetName = item.repdata.AssetName; } if (!string.IsNullOrEmpty(item.repdata.Building) && !string.IsNullOrEmpty(item.repdata.Floor) && !string.IsNullOrEmpty(item.repdata.Area)) { item.Location1 = _context.Buildings.Where(b => b.BuildingId == Convert.ToInt32(item.repdata.Building)).FirstOrDefault().BuildingName + " " + _context.Floors.Where(f => f.BuildingId == Convert.ToInt32(item.repdata.Building) && f.FloorId == item.repdata.Floor).FirstOrDefault().FloorName; PlaceModel pm = _context.Places.Where(p => p.BuildingId == Convert.ToInt32(item.repdata.Building) && p.FloorId == item.repdata.Floor && p.PlaceId == item.repdata.Area).FirstOrDefault(); if (pm != null) { item.Location2 = " " + pm.PlaceName; } else { item.Location1 = "(無資料)"; item.Location2 = item.repdata.Area + item.PlaceLoc; } } else { item.Location1 = "(無資料)"; item.Location2 = item.repdata.Area + item.PlaceLoc; } } /* Sorting search result. */ if (rv.Count() != 0) { rv = rv.OrderByDescending(r => r.ApplyDate).ThenByDescending(r => r.DocId).ToList(); } /* Search dealStatus. */ if (!string.IsNullOrEmpty(qtyDealStatus)) { rv = rv.Where(r => r.DealState == qtyDealStatus).ToList(); } return(View("List", rv)); }
public async Task <IViewComponentResult> InvokeAsync() { // Get current user. var user = _userRepo.Find(u => u.UserName == User.Identity.Name).FirstOrDefault(); /* 流程的下拉選單 */ List <SelectListItem> FlowlistItem = new List <SelectListItem>(); FlowlistItem.Add(new SelectListItem { Text = "待簽核", Value = "待簽核" }); FlowlistItem.Add(new SelectListItem { Text = "流程中", Value = "流程中" }); FlowlistItem.Add(new SelectListItem { Text = "已結案", Value = "已結案" }); FlowlistItem.Add(new SelectListItem { Text = "請選擇", Value = "請選擇" }); ViewData["BMEDFlowType"] = new SelectList(FlowlistItem, "Value", "Text", "待簽核"); /* 成本中心 & 申請部門的下拉選單資料 */ var dptList = new[] { "K", "P", "C" }; //本院部門 //var departments = _context.Departments.Where(d => dptList.Contains(d.Loc)).ToList(); var departments = _context.Departments.ToList(); List <SelectListItem> listItem = new List <SelectListItem>(); //foreach (var item in departments) //{ // listItem.Add(new SelectListItem // { // Text = item.Name_C + "(" + item.DptId + ")", //show DptName(DptId) // Value = item.DptId // }); //} ViewData["BMEDAccDpt"] = new SelectList(listItem, "Value", "Text"); ViewData["BMEDApplyDpt"] = new SelectList(listItem, "Value", "Text"); /* 處理狀態的下拉選單 */ var dealStatuses = _context.BMEDDealStatuses.ToList(); List <SelectListItem> listItem2 = new List <SelectListItem>(); foreach (var item in dealStatuses) { listItem2.Add(new SelectListItem { Text = item.Title, Value = item.Title }); } ViewData["BMEDDealStatus"] = new SelectList(listItem2, "Value", "Text"); /* 處理有無費用的下拉選單 */ List <SelectListItem> listItem3 = new List <SelectListItem>(); listItem3.Add(new SelectListItem { Text = "有", Value = "Y" }); listItem3.Add(new SelectListItem { Text = "無", Value = "N" }); ViewData["BMEDIsCharged"] = new SelectList(listItem3, "Value", "Text"); /* 處理日期查詢的下拉選單 */ List <SelectListItem> listItem4 = new List <SelectListItem>(); listItem4.Add(new SelectListItem { Text = "申請日", Value = "申請日" }); listItem4.Add(new SelectListItem { Text = "完工日", Value = "完工日" }); listItem4.Add(new SelectListItem { Text = "結案日", Value = "結案日" }); ViewData["BMEDDateType"] = new SelectList(listItem4, "Value", "Text", "申請日"); /* 處理工程師查詢的下拉選單 */ var engs = roleManager.GetUsersInRole("MedEngineer").ToList(); List <SelectListItem> listItem5 = new List <SelectListItem>(); //foreach (string l in engs) //{ // var u = _context.AppUsers.Where(ur => ur.UserName == l).FirstOrDefault(); // if (u != null) // { // listItem5.Add(new SelectListItem // { // Text = u.FullName + "(" + u.UserName + ")", // Value = u.Id.ToString() // }); // } //} ViewData["BMEDEngs"] = new SelectList(listItem5, "Value", "Text"); /* 擷取該使用者單位底下所有人員 */ var dptUsers = _context.AppUsers .Where(a => a.DptId == user.DptId && a.Status == "Y") .ToList(); List <SelectListItem> dptMemberList = new List <SelectListItem>(); foreach (var item in dptUsers) { dptMemberList.Add(new SelectListItem { Text = item.FullName + "(" + item.UserName + ")", Value = item.Id.ToString() }); } // 使用者為工程師,帶工程師列表,其餘帶同部門人員 if (user.DptId == "7084" || user.DptId == "8420") { ViewData["BMEDClsUsers"] = new SelectList(listItem5, "Value", "Text"); } else { ViewData["BMEDClsUsers"] = new SelectList(dptMemberList, "Value", "Text"); } List <SelectListItem> listItem6 = new List <SelectListItem>(); listItem6.Add(new SelectListItem { Text = "總院", Value = "總院" }); listItem6.Add(new SelectListItem { Text = "二林", Value = "L" }); listItem6.Add(new SelectListItem { Text = "員林", Value = "B" }); listItem6.Add(new SelectListItem { Text = "南投", Value = "N" }); listItem6.Add(new SelectListItem { Text = "鹿基", Value = "U" }); listItem6.Add(new SelectListItem { Text = "雲基", Value = "T" }); ViewData["Location"] = new SelectList(listItem6, "Value", "Text"); QryRepListData data = new QryRepListData(); return(View(data)); }
public async Task <IViewComponentResult> InvokeAsync() { List <SelectListItem> FlowlistItem = new List <SelectListItem>(); FlowlistItem.Add(new SelectListItem { Text = "待簽核", Value = "待簽核" }); FlowlistItem.Add(new SelectListItem { Text = "流程中", Value = "流程中" }); FlowlistItem.Add(new SelectListItem { Text = "已結案", Value = "已結案" }); ViewData["BMEDFlowType"] = new SelectList(FlowlistItem, "Value", "Text", "待簽核"); /* 成本中心 & 申請部門的下拉選單資料 */ var dptList = new[] { "K", "P", "C" }; //本院部門 var departments = _context.Departments.Where(d => dptList.Contains(d.Loc)).ToList(); List <SelectListItem> listItem = new List <SelectListItem>(); foreach (var item in departments) { listItem.Add(new SelectListItem { Text = item.Name_C + "(" + item.DptId + ")", //show DptName(DptId) Value = item.DptId }); } ViewData["BMEDAccDpt"] = new SelectList(listItem, "Value", "Text"); ViewData["BMEDApplyDpt"] = new SelectList(listItem, "Value", "Text"); /* 處理狀態的下拉選單 */ var dealStatuses = _context.BMEDDealStatuses.ToList(); List <SelectListItem> listItem2 = new List <SelectListItem>(); foreach (var item in dealStatuses) { listItem2.Add(new SelectListItem { Text = item.Title, Value = item.Title }); } ViewData["BMEDDealStatus"] = new SelectList(listItem2, "Value", "Text"); /* 處理有無費用的下拉選單 */ List <SelectListItem> listItem3 = new List <SelectListItem>(); listItem3.Add(new SelectListItem { Text = "有", Value = "Y" }); listItem3.Add(new SelectListItem { Text = "無", Value = "N" }); ViewData["BMEDIsCharged"] = new SelectList(listItem3, "Value", "Text"); /* 處理日期查詢的下拉選單 */ List <SelectListItem> listItem4 = new List <SelectListItem>(); listItem4.Add(new SelectListItem { Text = "申請日", Value = "申請日" }); listItem4.Add(new SelectListItem { Text = "完工日", Value = "完工日" }); listItem4.Add(new SelectListItem { Text = "結案日", Value = "結案日" }); ViewData["BMEDDateType"] = new SelectList(listItem4, "Value", "Text", "申請日"); /* 處理工程師查詢的下拉選單 */ var engs = roleManager.GetUsersInRole("MedEngineer").ToList(); List <SelectListItem> listItem5 = new List <SelectListItem>(); foreach (string l in engs) { var u = _context.AppUsers.Where(ur => ur.UserName == l).FirstOrDefault(); if (u != null) { listItem5.Add(new SelectListItem { Text = u.FullName + "(" + u.UserName + ")", Value = u.Id.ToString() }); } } ViewData["BMEDEngs"] = new SelectList(listItem5, "Value", "Text"); QryRepListData data = new QryRepListData(); return(View(data)); }