예제 #1
0
        public async Task <IHttpActionResult> Get([FromUri] GetWorksList dto)
        {
            var resp = await _worksService.GetListAsync(dto);

            return(Ok(resp));
        }
        public Task <GetWorksListResponse> GetListAsync(GetWorksList dto)
        {
            return(Task.Run(() =>
            {
                string sqlWhere = "";
                switch (dto.type)
                {
                case Community.Contact.Enum.HotEnum.All:
                    break;

                case Community.Contact.Enum.HotEnum.Hot:
                    sqlWhere += string.Format(SELECT_WORKS_WHERE_HOT, 1);
                    break;

                case Community.Contact.Enum.HotEnum.UnHot:
                    sqlWhere += string.Format(SELECT_WORKS_WHERE_HOT, 0);
                    break;

                default:
                    break;
                }
                switch (dto.off_line)
                {
                case Community.Contact.Enum.OffLineEnum.All:
                    break;

                case Community.Contact.Enum.OffLineEnum.OffLine:
                    if (sqlWhere.Length < 1)
                    {
                        sqlWhere += string.Format(SELECT_WORKS_WHERE_OFFLINE, 1);
                    }
                    else
                    {
                        sqlWhere += " and ";
                        sqlWhere += string.Format(SELECT_WORKS_WHERE_OFFLINE, 1);
                    }
                    break;

                case Community.Contact.Enum.OffLineEnum.UnOffLine:
                    if (sqlWhere.Length < 1)
                    {
                        sqlWhere += string.Format(SELECT_WORKS_WHERE_OFFLINE, 0);
                    }
                    else
                    {
                        sqlWhere += " and ";
                        sqlWhere += string.Format(SELECT_WORKS_WHERE_OFFLINE, 0);
                    }
                    break;

                default:
                    break;
                }
                if (sqlWhere.Length > 1)
                {
                    sqlWhere = " where " + sqlWhere;
                }
                if (!string.IsNullOrEmpty(dto.q))
                {
                    sqlWhere = sqlWhere + " and " + string.Format(SELECT_WORKS_WHERE_USER, dto.q);
                }
                List <SearchWorksModel> data = new List <SearchWorksModel>();
                int count = 0;
                string sqlData = "";
                string sqlCount = "";
                if (string.IsNullOrEmpty(dto.category_id))
                {
                    sqlData = string.Format(SELECT_WORKS_FROM, SELECT_WORKS_SELECT, sqlWhere, string.Format("LIMIT {0},{1}", dto.start, dto.length));
                    sqlCount = string.Format(SELECT_WORKS_FROM, SELECT_WORKS_COUNT, sqlWhere, "");
                }
                else
                {
                    string[] typeidList = dto.category_id.Split(',');
                    var builder = new StringBuilder();
                    for (int i = 0; i < typeidList.Length; i++)
                    {
                        builder.Append("category_id= " + typeidList[i]);
                        if (i != typeidList.Length - 1)
                        {
                            builder.Append("||");
                        }
                    }
                    if (sqlWhere.Length > 0)
                    {
                        sqlWhere = sqlWhere + " and " + string.Format(SELECT_WORKS_WHERE_CAT, builder.ToString(), typeidList.Count() - 1);
                    }
                    else
                    {
                        sqlWhere = " where " + string.Format(SELECT_WORKS_WHERE_CAT, builder.ToString(), typeidList.Count() - 1);
                    }
                    sqlData = string.Format(SELECT_WORKS_FROM, SELECT_WORKS_SELECT, sqlWhere, string.Format("LIMIT {0},{1}", dto.start, dto.length));

                    sqlCount = string.Format(SELECT_WORKS_FROM, SELECT_WORKS_COUNT, sqlWhere, "");
                }
                data = _dapperRepository.Query <SearchWorksModel>(sqlData).ToList();
                if (data != null && data.Count() > 0)
                {
                    count = _dapperRepository.QuerySingleOrDefault <int>(sqlCount);
                }
                GetWorksListResponse resp = new GetWorksListResponse();
                resp.data = Mapper.Map <List <WorksInfo> >(data);
                resp.total = count;
                return resp;
            }));
        }