public ActionResult GetSelectOption(List <string> optionType) { AjaxResult result = new AjaxResult(); try { if (!optionType.Any()) { throw new Exception("沒有給項目!"); } Dictionary <string, object> optionList = new Dictionary <string, object>(); foreach (string type in optionType) { switch (type) { case "CaseType": optionList.Add(type, EnumData.CaseEventTypeList().Select(t => new { text = t.Value.ToString(), value = (byte)t.Key }).ToArray()); break; case "CaseRequest": optionList.Add(type, Enum.GetValues(typeof(EnumData.CaseEventRequest)).Cast <EnumData.CaseEventRequest>().Select(r => new { text = r.ToString(), value = (byte)r }).ToArray()); break; case "CaseStatus": optionList.Add(type, Enum.GetValues(typeof(EnumData.CaseEventStatus)).Cast <EnumData.CaseEventStatus>().Select(s => new { text = s.ToString(), value = (byte)s }).ToArray()); break; } } result.data = optionList; } catch (Exception e) { result.status = false; result.message = e.InnerException != null && !string.IsNullOrEmpty(e.InnerException.Message) ? e.InnerException.Message : e.Message; } return(Json(result, JsonRequestBehavior.AllowGet)); }
public ActionResult GetCaseEventData(CaseFilter filter, int page = 1, int rows = 100) { int total = 0; List <object> dataList = new List <object>(); TimeZoneConvert timeZoneConvert = new TimeZoneConvert(); EnumData.TimeZone TimeZone = MyHelp.GetTimeZone((int)Session["TimeZone"]); var CaseFilter = db.CaseEvent.AsNoTracking().AsQueryable(); if (!string.IsNullOrEmpty(filter.OrderID)) { CaseFilter = CaseFilter.Where(c => c.OrderID.ToString().Equals(filter.OrderID)); } if (!string.IsNullOrEmpty(filter.LabelID)) { CaseFilter = CaseFilter.Where(c => c.LabelID.ToString().Equals(filter.LabelID)); } if (filter.CreateDate.HasValue) { DateTime dateFrom = timeZoneConvert.InitDateTime(filter.CreateDate.Value, TimeZone).Utc; DateTime dateTO = timeZoneConvert.Utc.AddDays(1); CaseFilter = CaseFilter.Where(c => c.Create_at.CompareTo(dateFrom) >= 0 && c.Create_at.CompareTo(dateTO) < 0); } if (filter.RequestDate.HasValue) { DateTime dateFrom = timeZoneConvert.InitDateTime(filter.RequestDate.Value, TimeZone).Utc; DateTime dateTO = timeZoneConvert.Utc.AddDays(1); CaseFilter = CaseFilter.Where(c => c.Request_at.HasValue && c.Request_at.Value.CompareTo(dateFrom) >= 0 && c.Request_at.Value.CompareTo(dateTO) < 0); } if (filter.ResponseDate.HasValue) { DateTime dateFrom = timeZoneConvert.InitDateTime(filter.ResponseDate.Value, TimeZone).Utc; DateTime dateTO = timeZoneConvert.Utc.AddDays(1); CaseFilter = CaseFilter.Where(c => c.Response_at.HasValue && c.Response_at.Value.CompareTo(dateFrom) >= 0 && c.Response_at.Value.CompareTo(dateTO) < 0); } if (filter.CaseType.HasValue) { CaseFilter = CaseFilter.Where(c => c.Type.Equals(filter.CaseType.Value)); } if (filter.CaseRequest.HasValue) { CaseFilter = CaseFilter.Where(c => c.Request.Equals(filter.CaseRequest.Value)); } if (filter.CaseStatus.HasValue) { CaseFilter = CaseFilter.Where(c => c.Status.Equals(filter.CaseStatus.Value)); } List <CaseEvent> results = CaseFilter.ToList(); if (results.Any()) { int length = rows; int start = (page - 1) * length; total = results.Count(); if (!string.IsNullOrEmpty(filter.Sort) && filter.Sort.Equals("RequestDate")) { results = filter.Order.Equals("asc") ? results.OrderBy(c => c.Request_at).ToList() : results.OrderByDescending(c => c.Request_at).ToList(); } Dictionary <int, string> DirectLine = db.DirectLine.Where(d => d.IsEnable).ToDictionary(d => d.ID, d => d.Abbreviation); Dictionary <int, string> AdminName = db.AdminUsers.AsNoTracking().Where(u => u.IsEnable).ToDictionary(u => u.Id, u => u.Name); dataList.AddRange(results.Skip(start).Take(length).Select(c => new { CaseID = c.ID, c.OrderID, LabelID = DirectLine[c.Packages.Method.DirectLine].Equals("Sendle") ? string.Format("{0}-{1}-{2}", c.Packages.Items.First(i => i.IsEnable.Value).ProductID, c.OrderID, c.Packages.TrackingNumber) : c.LabelID, CreateDate = timeZoneConvert.InitDateTime(c.Create_at, EnumData.TimeZone.UTC).ConvertDateTime(TimeZone).ToString("MM/dd/yyyy tt hh:mm"), RequestDate = c.Request_at.HasValue ? timeZoneConvert.InitDateTime(c.Request_at.Value, EnumData.TimeZone.UTC).ConvertDateTime(TimeZone).ToString("MM/dd/yyyy tt hh:mm") : "", ResponseDate = c.Response_at.HasValue ? timeZoneConvert.InitDateTime(c.Response_at.Value, EnumData.TimeZone.UTC).ConvertDateTime(TimeZone).ToString("MM/dd/yyyy tt hh:mm") : "", CaseType = EnumData.CaseEventTypeList()[(EnumData.CaseEventType)c.Type], CaseRequest = Enum.GetName(typeof(EnumData.CaseEventRequest), c.Request), CaseStatus = c.Status, UpdateBy = AdminName.ContainsKey(c.Update_by) ? string.Format("{0}﹙{1}﹚", AdminName[c.Update_by], DirectLine[c.Packages.Method.DirectLine]) : DirectLine[c.Packages.Method.DirectLine] })); } return(Json(new { total, rows = dataList }, JsonRequestBehavior.AllowGet)); }