Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }