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