// // GET: /Crm/VisitRecord/ public ActionResult Index(VisitRecordRequest request) { this.TryUpdateModel <VisitRecord>(request.VisitRecord); this.ModelState.Clear(); this.RenderMyViewData(request.VisitRecord, true); var areas = this.AreaDic.Values.Select(c => new { Id = c.ID, Name = c.Name + "-" + this.CityDic[c.CityId].Name }); ViewData.Add("AreaId", new SelectList(areas, "Id", "Name", request.VisitRecord.AreaId)); var result = this.CrmService.GetVisitRecordList(request); return(View(result)); }
public ActionResult Datatable(VisitRecordRequest request) { #region 自定义动作 if (!string.IsNullOrEmpty(request.customActionType)) { string[] id_Array = Request.Params.GetValues("id[]"); List <int> ids = new List <int>(); foreach (string i in id_Array) { ids.Add(int.Parse(i)); } switch (request.customActionType) { case "group_action": switch (request.customActionName) { case "delete": this.CrmService.DeleteVisitRecord(ids); break; } break; case "delete": this.CrmService.DeleteVisitRecord(ids); break; } } #endregion var allVisitRecord = this.CrmService.GetVisitRecordList(null); IEnumerable <VisitRecord> filterVisitRecord = allVisitRecord; #region 排序 var isNameSortable = Convert.ToBoolean(Request["columns[1][orderable]"]); var isNumberSortable = Convert.ToBoolean(Request["columns[2][orderable]"]); var isTelSortable = Convert.ToBoolean(Request["columns[3][orderable]"]); var isVisitWaySortable = Convert.ToBoolean(Request["columns[4][orderable]"]); var isCitySortable = Convert.ToBoolean(Request["columns[5][orderable]"]); var isProjectNameSortable = Convert.ToBoolean(Request["columns[6][orderable]"]); var isMotivationSortable = Convert.ToBoolean(Request["columns[7][orderable]"]); var isAreaDemandSortable = Convert.ToBoolean(Request["columns[8][orderable]"]); var isPriceResponseSortable = Convert.ToBoolean(Request["columns[9][orderable]"]); var isCognitiveChannelSortable = Convert.ToBoolean(Request["columns[10][orderable]"]); var isFocusSortable = Convert.ToBoolean(Request["columns[11][orderable]"]); var isUsernameSortable = Convert.ToBoolean(Request["columns[12][orderable]"]); var isVisitTimeSortable = Convert.ToBoolean(Request["columns[13][orderable]"]); var sortColumnIndex = Convert.ToInt32(Request["order[0][column]"]); Func <VisitRecord, string> orderingFunction = (c => sortColumnIndex == 1 && isNameSortable && c.Customer != null? c.Customer.Name : sortColumnIndex == 2 && isNumberSortable && c.Customer != null? c.Customer.Number : sortColumnIndex == 3 && isTelSortable && c.Customer != null? c.Customer.Tel: sortColumnIndex == 4 && isVisitWaySortable ? Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumVisitWay)c.VisitWay): sortColumnIndex == 5 && isCitySortable ? AdminCacheContext.Current.AreaDic[c.AreaId].Name : sortColumnIndex == 6 && isProjectNameSortable && c.Customer == null ? StringUtil.CutString(c.Project.Name, 10) : sortColumnIndex == 7 && isMotivationSortable ? Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumMotivation)c.Motivation) : sortColumnIndex == 8 && isAreaDemandSortable ? Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumAreaDemand)c.AreaDemand): sortColumnIndex == 9 && isPriceResponseSortable ? Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumPriceResponse)c.PriceResponse): sortColumnIndex == 10 && isCognitiveChannelSortable ? StringUtil.CutString(Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumCognitiveChannel)c.CognitiveChannel), 20): sortColumnIndex == 11 && isFocusSortable ? StringUtil.CutString(Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumFocus)c.Focus), 20): sortColumnIndex == 12 && isUsernameSortable ? c.Username: sortColumnIndex == 13 && isVisitTimeSortable ? c.VisitTime.ToString("yyyy-MM-dd HH:mm"): ""); var sortDirection = Request["order[0][dir]"]; // asc or desc if (sortDirection == "asc") { filterVisitRecord = filterVisitRecord.OrderBy(orderingFunction); } if (sortDirection == "desc") { filterVisitRecord = filterVisitRecord.OrderByDescending(orderingFunction); } #endregion var displayedVisitRecord = filterVisitRecord.Skip(request.start).Take(request.length); var result = from c in displayedVisitRecord select new[] { Convert.ToString(c.ID) , c.Customer == null ? string.Empty : c.Customer.Name , c.Customer == null ? string.Empty : c.Customer.Number , c.Customer == null ? string.Empty : c.Customer.Tel , Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumVisitWay)c.VisitWay) , AdminCacheContext.Current.AreaDic[c.AreaId].Name + AdminCacheContext.Current.CityDic[c.CityId].Name , c.Customer == null ? string.Empty : StringUtil.CutString(c.Project.Name, 10) , Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumMotivation)c.Motivation) , Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumAreaDemand)c.AreaDemand) , Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumPriceResponse)c.PriceResponse) , StringUtil.CutString(Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumCognitiveChannel)c.CognitiveChannel), 20) , StringUtil.CutString(Evisou.Framework.Utility.EnumHelper.GetEnumTitle((EnumFocus)c.Focus), 20) , c.Username , c.VisitTime.ToString("yyyy-MM-dd HH:mm") , Convert.ToString(c.ID) }; return(Json(new { draw = request.draw, //param.sEcho, recordsTotal = allVisitRecord.Count(), //alltransactions.Count(), recordsFiltered = filterVisitRecord.Count(), data = result }, JsonRequestBehavior.AllowGet)); }
public IEnumerable <VisitRecord> GetVisitRecordList(VisitRecordRequest request = null) { request = request ?? new VisitRecordRequest(); using (var dbContext = new CrmDbContext()) { IQueryable <VisitRecord> queryList = dbContext.VisitRecords.Include("Project").Include("Customer"); var model = request.VisitRecord; if (!string.IsNullOrEmpty(model.Username)) { queryList = queryList.Where(d => d.Username.Contains(model.Username)); } if (model.Customer != null && !string.IsNullOrEmpty(model.Customer.Name)) { queryList = queryList.Where(d => d.Customer.Name.Contains(model.Customer.Name)); } if (model.Customer != null && !string.IsNullOrEmpty(model.Customer.Number)) { queryList = queryList.Where(d => d.Customer.Number.Contains(model.Customer.Number)); } if (model.Customer != null && !string.IsNullOrEmpty(model.Customer.Tel)) { queryList = queryList.Where(d => d.Customer.Tel.Contains(model.Customer.Tel)); } if (request.StartHour != null && request.EndHour != null) { var startHour = request.StartHour.Value - 1; var endHour = request.EndHour.Value - 1; queryList = queryList.Where(d => d.VisitTime.Hour >= startHour && d.VisitTime.Hour <= endHour); } var startDate = request.StartDate == null?DateTime.Now.AddMonths(-3) : request.StartDate.Value; queryList = queryList.Where(d => d.VisitTime > startDate); var endDate = request.EndDate == null?DateTime.Now.AddDays(1) : request.EndDate.Value; queryList = queryList.Where(d => d.VisitTime < endDate); if (model.FollowStep > 0) { queryList = queryList.Where(d => d.FollowStep == model.FollowStep); } if (model.FollowLevel > 0) { queryList = queryList.Where(d => d.FollowLevel == model.FollowLevel); } if (model.ProjectId > 0) { queryList = queryList.Where(d => d.ProjectId == model.ProjectId); } if (model.Motivation > 0) { queryList = queryList.Where(d => d.Motivation == model.Motivation); } if (model.AreaDemand > 0) { queryList = queryList.Where(d => d.AreaDemand == model.AreaDemand); } if (model.PriceResponse > 0) { queryList = queryList.Where(d => d.PriceResponse == model.PriceResponse); } if (model.Focus > 0) { queryList = queryList.Where(d => (d.Focus & model.Focus) != 0); } if (model.CognitiveChannel > 0) { queryList = queryList.Where(d => (d.CognitiveChannel & model.CognitiveChannel) != 0); } if (model.VisitWay > 0) { queryList = queryList.Where(d => d.VisitWay == model.VisitWay); } if (model.AreaId > 0) { queryList = queryList.Where(d => d.AreaId == model.AreaId); } return(queryList.OrderByDescending(u => u.ID).ToPagedList(request.PageIndex, request.PageSize)); } }