/// <param name="q"></param> /// <param name="cp">第几页</param> /// <param name="c">页大小</param> /// <param name="navc"></param> /// <returns></returns> //[System.Web.Http.HttpGet] //[ValidateInput(false)] //[System.Web.Http.Route("GetSGData")] private Object GetSGData(string q, string domain = null, string cp = null, string c = null, string navc = null) { try { List <FuncElapsed> listElaps = new List <FuncElapsed>(); CBase.Log.TimeWatchLog tlogTotal = new CBase.Log.TimeWatchLog(); CBase.Log.TimeWatchLog tlog_temp = new CBase.Log.TimeWatchLog(); if (string.IsNullOrEmpty(q)) { return(null); } int recStart = 0; int recCount = 0; InitPageParam(cp, c, out recStart, out recCount); //调用句群接口,返回内容 QueryContainer <CMAnswer> qcAnswer = null; ClientInfo cinfo = new ClientInfo() { UserName = CommonHelper.GetUserName(), IP = CommonHelper.GetClientIP() }; tlog_temp.Start(); cinfo.Type = ContentLogType.句群超时; qcAnswer = TimedTask.CallActionWithTimeoutSync(timeout, () => new Answer(domain).Get(q, recStart, recCount, domain), q, cinfo); listElaps.Add(new FuncElapsed("SenGroup", tlog_temp.Debug())); tlog_temp.Start(); cinfo.Type = ContentLogType.问题排序超时; QueryDataContainer SortData = DataSort.SortSenGroup(qcAnswer, cinfo); listElaps.Add(new FuncElapsed("SortSG", tlog_temp.Debug())); AnswerResultSG result = new Models.AnswerResultSG() { SortData = SortData }; result.timeSpan = tlogTotal.Debug(); SortData.ElapsedList.AddRange(listElaps); if (SortData.MetaList.Count == 0) { return(new { result = false, msg = "未找到查询结果!" }); } return(new { result = true, SortData.MetaList }); } catch (System.Exception ex) { CBase.Log.Logger.Error(ex); return(new { result = false, msg = ex.ToString() }); } }
public ColumnInfo(string name, MySqlDbType type, long length, string sqlType, DataSort orderby, bool isNullable, bool isIdentity, bool isClustered, bool isPrimaryKey) { _name = name; _type = type; _length = length; _sqlType = sqlType; _orderby = orderby; _isNullable = isNullable; _isIdentity = isIdentity; _isClustered = isClustered; _isPrimaryKey = isPrimaryKey; }
public ColumnInfo(string name, NpgsqlDbType type, long length, string sqlType, string csType, DataSort orderby, bool isNullable, bool isIdentity, bool isClustered, bool isPrimaryKey, int attndims, int attnum) { _name = name; _type = type; _length = length; _sqlType = sqlType; _csType = csType; _orderby = orderby; _isNullable = isNullable; _isIdentity = isIdentity; _isClustered = isClustered; _isPrimaryKey = isPrimaryKey; _attndims = attndims; _attnum = attnum; }
public override void Read() { Offset = _worldPacket.ReadUInt32(); Auctioneer = _worldPacket.ReadPackedGuid(); MinLevel = _worldPacket.ReadUInt8(); MaxLevel = _worldPacket.ReadUInt8(); Quality = _worldPacket.ReadUInt32(); SortCount = _worldPacket.ReadUInt8(); KnownPets = new Array <byte>(_worldPacket.ReadInt32()); for (int i = 0; i < KnownPets.Capacity; ++i) { KnownPets[i] = _worldPacket.ReadUInt8(); } Name = _worldPacket.ReadString(_worldPacket.ReadBits <uint>(8)); ClassFilters = new Array <ClassFilter>(_worldPacket.ReadBits <int>(3)); OnlyUsable = _worldPacket.HasBit(); ExactMatch = _worldPacket.HasBit(); for (int i = 0; i < ClassFilters.Capacity; ++i) { var classFilter = new ClassFilter(); classFilter.ItemClass = _worldPacket.ReadInt32(); classFilter.SubClassFilters = new Array <ClassFilter.SubClassFilter>(_worldPacket.ReadBits <int>(5)); for (int x = 0; x < classFilter.SubClassFilters.Capacity; ++x) { ClassFilter.SubClassFilter subClassFilter; subClassFilter.ItemSubclass = _worldPacket.ReadInt32(); subClassFilter.InvTypeMask = _worldPacket.ReadUInt32(); classFilter.SubClassFilters[x] = subClassFilter; } ClassFilters[i] = classFilter; } _worldPacket.Skip(4); // DataSize = (SortCount * 2) for (int i = 0; i < SortCount; i++) { AuctionListItems.Sort sort; sort.Type = _worldPacket.ReadUInt8(); sort.Direction = _worldPacket.ReadUInt8(); DataSort.Add(sort); } }
//[System.Web.Http.HttpGet] //[ValidateInput(false)] //[System.Web.Http.Route("GetFAQData")] private async Task <Object> GetFAQData(string q, string domain = null) { try { List <FuncElapsed> listElaps = new List <FuncElapsed>(); CBase.Log.TimeWatchLog tlogTotal = new CBase.Log.TimeWatchLog(); CBase.Log.TimeWatchLog tlog_temp = new CBase.Log.TimeWatchLog(); if (string.IsNullOrEmpty(q)) { return(null); } QueryContainer <CMFAQ> faq = null; QueryContainer <CMFAQ_NET> faq_net = null; List <Task <QueryContainer <CMFAQ> > > tFaqList = null; Task <QueryContainer <CMFAQ_NET> > tFaq_net = null; //获取意图识别 tlog_temp.Start(); var tasks = new List <Task>(); tFaqList = GetFAQTask(q, timeout, domain); tFaq_net = TimedTask.CallWithTimeoutAsync(timeout, () => new Faq_net(domain).Get(q, domain), q, null); tasks.AddRange(tFaqList); tasks.Add(tFaq_net); await Task.WhenAll(tasks.ToArray()); faq = GetFAQAll(tFaqList); faq_net = tFaq_net == null ? null : tFaq_net.Result; tlog_temp.Start(); QueryDataContainer SortData = DataSort.SortKB(faq, faq_net, null, null); SortData.ElapsedList.AddRange(listElaps); if (SortData.MetaList.Count == 0) { return(new { result = false, msg = "未找到查询结果!" }); } return(new { result = true, SortData.MetaList }); } catch (System.Exception ex) { CBase.Log.Logger.Error(ex); return(new { result = false, msg = ex.ToString() }); } }
public async Task <ActionResult <IResult> > GetListProductAttributeValue(int id, [FromQuery] DataHelperModel dataHelper) { var result = new Result { Operation = Operation.Read, Status = Status.Success }; try { if (!ModelState.IsValid) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; return(StatusCode((int)result.StatusCode, result)); } var attribute = from productAttributeValue in context.ProductAttributeValues join attributeName in context.ProductAttributes on productAttributeValue.AttributeID equals attributeName.AttributeID into attributes from attributeName in attributes.DefaultIfEmpty() where productAttributeValue.ProductID == id orderby productAttributeValue.ID descending select new ProductAttributeValueViewModel { ID = productAttributeValue.ID, AttributeID = productAttributeValue.AttributeID, AttributeName = attributeName.AttributeName, ProductID = productAttributeValue.ProductID, Value = productAttributeValue.Value }; if (attribute.Count() == 0) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "Attributes do not exist for the product."; return(StatusCode((int)result.StatusCode, result)); } var list = attribute; list = DataSort.SortBy(list, dataHelper.SortColumn, dataHelper.SortOrder); var resultCount = list.Count(); var pagedList = DataCount.Page(list, dataHelper.PageNumber, dataHelper.PageSize); var resultList = await pagedList.ToListAsync(); ResultModel resultModel = new ResultModel(); resultModel.ProductAttributeValueResult = resultList; resultModel.TotalCount = resultCount; if (resultList.Count == 0) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "No records present."; return(StatusCode((int)result.StatusCode, result)); } result.Status = Status.Success; result.StatusCode = HttpStatusCode.OK; result.Body = resultModel; return(StatusCode((int)result.StatusCode, result)); } catch (Exception e) { result.Status = Status.Error; result.Message = e.Message; result.StatusCode = HttpStatusCode.InternalServerError; return(StatusCode((int)result.StatusCode, result)); } }
public async Task <ActionResult <IResult> > Listing([FromQuery] DataHelperModel dataHelper) { var result = new Result { Operation = Operation.Read, Status = Status.Success }; try { var listQuery = from product in context.Products join createdUser in context.Login on product.CreatedBy equals createdUser.UserID into createname from createUserName in createname.DefaultIfEmpty() join modifiedUser in context.Login on product.ModifiedBy equals modifiedUser.UserID into modifyname from modifyUserName in modifyname.DefaultIfEmpty() join categoryname in context.Categories on product.CategoryID equals categoryname.CategoryID into namecategory from categoryName in namecategory.DefaultIfEmpty() where product.IsDeleted != true orderby product.CreatedDate descending select new ProductViewModel { ProductName = product.ProductName, ProductID = product.ProductID, ShortDescription = product.ShortDescription, CategoryID = product.CategoryID, CategoryName = categoryName.CategoryName, IsActive = product.IsActive, CreatedBy = product.CreatedBy, CreatedDate = product.CreatedDate, CreatedUser = createUserName.Username, Price = product.Price, QuantityInStock = product.QuantityInStock, VisibleEndDate = product.VisibleEndDate, AllowCustomerReviews = product.AllowCustomerReviews, DiscountPercent = product.DiscountPercent, VisibleStartDate = product.VisibleStartDate, IsDiscounted = product.IsDiscounted, LongDescription = product.LongDescription, MarkNew = product.MarkNew, ModelNumber = product.ModelNumber, ModifiedBy = product.ModifiedBy, ModifiedDate = product.ModifiedDate, ModifiedUser = modifyUserName.Username, OnHomePage = product.OnHomePage, ShipingEnabled = product.ShipingEnabled, ShippingCharges = product.ShippingCharges, Tax = product.Tax, TaxExempted = product.TaxExempted, QuantityType = product.QuantityType }; if (dataHelper.Search != null) { listQuery = listQuery.Where(x => x.ProductName.Contains(dataHelper.Search) || x.ShortDescription.Contains(dataHelper.Search) || x.LongDescription.Contains(dataHelper.Search)); } var list = listQuery; list = DataSort.SortBy(list, dataHelper.SortColumn, dataHelper.SortOrder); var resultCount = list.Count(); var pagedList = DataCount.Page(list, dataHelper.PageNumber, dataHelper.PageSize); var resultList = await pagedList.ToListAsync(); ResultModel resultModel = new ResultModel(); resultModel.ProductResult = resultList; resultModel.TotalCount = resultCount; if (resultList.Count == 0) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "No records present."; return(StatusCode((int)result.StatusCode, result)); } result.Status = Status.Success; result.StatusCode = HttpStatusCode.OK; result.Body = resultModel; return(StatusCode((int)result.StatusCode, result)); } catch (Exception e) { result.Status = Status.Error; result.Message = e.Message; result.StatusCode = HttpStatusCode.InternalServerError; return(StatusCode((int)result.StatusCode, result)); } }
//[System.Web.Http.HttpGet] //[ValidateInput(false)] //[System.Web.Http.Route("GetKBData")] private async Task <Object> GetKBData(string q, string domain = null) { try { List <FuncElapsed> listElaps = new List <FuncElapsed>(); CBase.Log.TimeWatchLog tlogTotal = new CBase.Log.TimeWatchLog(); CBase.Log.TimeWatchLog tlog_temp = new CBase.Log.TimeWatchLog(); if (string.IsNullOrEmpty(q)) { return(null); } //根据意图分析结果,提供准确答案与资源导航、问答对 Dictionary <string, QueryContainer <CMKArea> > navContent = null; Task <Dictionary <string, QueryContainer <CMKArea> > > tNavi = null; ClientInfo cinfo = new ClientInfo() { UserName = CommonHelper.GetUserName(), IP = CommonHelper.GetClientIP() }; //获取意图识别 tlog_temp.Start(); Domain.Intent intent = new Answer(domain).GetIntent(q, domain); listElaps.Add(new FuncElapsed("GetIntent", tlog_temp.Debug())); //内容收集 意图是否识别收集用于数据分析 1未识别 2已识别 ContentLogType collectType = ContentLogType.已识别; if (intent != null && intent.qt_parsed_rst == null) { collectType = ContentLogType.未识别; } var client = new CollectorInterfaceClient(); Task.Run <bool>(() => { return(client.SetConfused(new CollectorEntity() { Content = intent.RawInput, Type = (int)collectType, IP = cinfo.IP, UserID = cinfo.UserName })); }); cinfo.Type = ContentLogType.知识库超时; tNavi = TimedTask.CallWithTimeoutAsync(timeout, () => new KB(domain).Get(intent), q, cinfo); await Task.WhenAll(tNavi); navContent = tNavi == null ? null : tNavi.Result; tlog_temp.Start(); cinfo.Type = ContentLogType.问题排序超时; QueryDataContainer SortData = DataSort.SortKB(null, null, navContent, cinfo); listElaps.Add(new FuncElapsed("SortKB", tlog_temp.Debug())); AnswerResultKB result = new Models.AnswerResultKB() { intent = intent, SortData = SortData }; result.timeSpan = tlogTotal.Debug(); SortData.ElapsedList.AddRange(listElaps); if (SortData.MetaList.Count == 0) { return(new { result = false, msg = "未找到查询结果!" }); } for (int i = 0; i < SortData.MetaList.Count; i++) { SortData.MetaList[i].QExp = null; } return(new { result = true, SortData.MetaList }); } catch (System.Exception ex) { CBase.Log.Logger.Error(ex); return(new { result = false, msg = ex.ToString() }); } }
public async Task <Object> GetAnswer(string q, string appid, string aid) { try { CBase.Log.TimeWatchLog twTotal = new CBase.Log.TimeWatchLog(); if (string.IsNullOrEmpty(q)) { return new { result = false, msg = "问题不能为空!" } } ; //根据意图分析结果,提供准确答案与资源导航、问答对 Dictionary <string, QueryContainer <CMKArea> > navContent = null; QueryContainer <CMFAQ> faq = null; QueryContainer <CMFAQ_NET> faq_net = null; Task <Dictionary <string, QueryContainer <CMKArea> > > tNavi = null; List <Task <QueryContainer <CMFAQ> > > tFaqList = null; Task <QueryContainer <CMFAQ_NET> > tFaq_net = null; ClientInfo cinfo = new ClientInfo() { UserName = CommonHelper.GetUserName(), IP = CommonHelper.GetClientIP() }; //获取意图识别 Domain.Intent intent = new Answer().GetIntent(q); //内容收集 意图是否识别收集用于数据分析 1未识别 2已识别 ContentLogType collectType = ContentLogType.已识别; if (intent != null && intent.qt_parsed_rst == null) { collectType = ContentLogType.未识别; } var client = new CollectorInterfaceClient(); Task.Run <bool>(() => { return(client.SetConfused(new CollectorEntity() { Content = intent.RawInput, Type = (int)collectType, IP = cinfo.IP, UserID = cinfo.UserName })); }); List <string> filterDomain = new List <string>(); QueryConfig qconfig = new QueryConfig().GetQueryConfig(); if (qconfig != null && qconfig.DomainMap.ContainsKey("default")) { filterDomain = qconfig.DomainMap["default"].FAQ; } var tasks = new List <Task>(); cinfo.Type = ContentLogType.知识库超时; tNavi = TimedTask.CallWithTimeoutAsync(timeout, () => new KB().Get(intent), q, cinfo); cinfo.Type = ContentLogType.问答集超时; tFaqList = GetFAQTask(q, timeout, filterDomain); cinfo.Type = ContentLogType.用户问答集超时; tFaq_net = TimedTask.CallWithTimeoutAsync(timeout, () => new Faq_net().Get(q), q, cinfo); tasks.Add(tNavi); tasks.AddRange(tFaqList); tasks.Add(tFaq_net); await Task.WhenAll(tasks.ToArray()); navContent = tNavi == null ? null : tNavi.Result; faq = GetFAQAll(tFaqList); //如果faq和faqnet有内容就不返回知识库内容 faq_net = tFaq_net == null ? null : tFaq_net.Result; if ((faq != null && faq.Total > 0) || (faq_net != null && faq_net.Total > 0)) { navContent = null; } cinfo.Type = ContentLogType.问题排序超时; QueryDataContainer SortData = DataSort.SortKB(faq, faq_net, navContent, cinfo); twTotal.Write("GetAnswer"); if (SortData.MetaList.Count == 0) { return(new { result = false, msg = "未找到查询结果!" }); } return(new { result = true, SortData.MetaList }); } catch (System.Exception ex) { CBase.Log.Logger.Error(ex); return(new { result = false, msg = ex.ToString() }); } }
public async Task <ActionResult <IResult> > Listing([FromQuery] DataHelperModel dataHelper, bool getAll) { var result = new Result { Operation = Operation.Read, Status = Status.Success }; try { var listQuery = from attribute in context.ProductAttributes join createdUser in context.Login on attribute.CreatedBy equals createdUser.UserID into createname from createdUsername in createname.DefaultIfEmpty() let createdByUser = createdUsername.Username join modifiedUser in context.Login on attribute.ModifiedBy equals modifiedUser.UserID into modifyname from modifiedUsername in modifyname.DefaultIfEmpty() let modifiedByUser = modifiedUsername.Username join Values in context.ProductAttributeValues on attribute.AttributeID equals Values.AttributeID into attributeValuesCount from attributeValues in attributeValuesCount.DefaultIfEmpty() group new { attributeValues, attribute, createdByUser, modifiedByUser } by new { attribute, createdByUser, modifiedByUser } into valuesCount select new ProductAttributeViewModel { AttributeID = valuesCount.Key.attribute.AttributeID, AttributeName = valuesCount.Key.attribute.AttributeName, CreatedBy = valuesCount.Key.attribute.CreatedBy, AssociatedProductValues = valuesCount.Where(x => x.attributeValues != null ? x.attributeValues.AttributeID == x.attribute.AttributeID : false).Count(), CreatedDate = valuesCount.Key.attribute.CreatedDate, ModifiedBy = valuesCount.Key.attribute.ModifiedBy, ModifiedDate = valuesCount.Key.attribute.ModifiedDate, CreatedUser = valuesCount.Key.createdByUser, ModifiedUser = valuesCount.Key.modifiedByUser }; if (!getAll) { if (dataHelper.Search != null) { listQuery = listQuery.Where(x => x.AttributeName.Contains(dataHelper.Search)); } var list = listQuery; list = DataSort.SortBy(list, dataHelper.SortColumn, dataHelper.SortOrder); var resultCount = list.Count(); var pagedList = DataCount.Page(list, dataHelper.PageNumber, dataHelper.PageSize); var resultList = await pagedList.ToListAsync(); ResultModel resultModel = new ResultModel(); resultModel.ProductAttributeResult = resultList; resultModel.TotalCount = resultCount; if (resultList.Count == 0) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "No records present."; return(StatusCode((int)result.StatusCode, result)); } result.Status = Status.Success; result.StatusCode = HttpStatusCode.OK; result.Body = resultModel; return(StatusCode((int)result.StatusCode, result)); } else { listQuery = listQuery.OrderBy(x => x.AttributeName); var attributeList = await listQuery.ToListAsync(); result.Body = attributeList; result.Status = Status.Success; result.StatusCode = HttpStatusCode.OK; return(StatusCode((int)result.StatusCode, result)); } } catch (Exception e) { result.Status = Status.Error; result.Message = e.Message; result.StatusCode = HttpStatusCode.InternalServerError; return(StatusCode((int)result.StatusCode, result)); } }
public async Task <ActionResult <IResult> > GetUserList([FromQuery] DataHelperModel dataHelper) { var result = new Result { Operation = Operation.Read, Status = Status.Success }; try { var userObj = from user in context.Login join role in context.AssignedRolesTable on user.UserID equals role.UserID into assignedRoles from userRole in assignedRoles.DefaultIfEmpty() group new { user } by new { user, assignedRoles } into userDetail select new UserViewModel { UserID = userDetail.Key.user.UserID, EmailID = userDetail.Key.user.EmailID, FirstName = userDetail.Key.user.FirstName, LastName = userDetail.Key.user.LastName, Username = userDetail.Key.user.Username, RoleID = userDetail.Key.assignedRoles.Where(x => x.UserID == userDetail.Key.user.UserID).Select(x => x.RoleID).ToArray(), ImageContent = null }; if (dataHelper.Search != null) { userObj = userObj.Where(x => x.Username.Contains(dataHelper.Search) || x.EmailID.Contains(dataHelper.Search)); } var userList = userObj.Where(x => !x.RoleID.Contains(1)).Select(x => x); if (userObj.Count() == 0) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "noUserPresent"; return(StatusCode((int)result.StatusCode, result)); } var list = userList; list = DataSort.SortBy(list, dataHelper.SortColumn, dataHelper.SortOrder); var resultCount = list.Count(); var pagedList = DataCount.Page(list, dataHelper.PageNumber, dataHelper.PageSize); var resultList = pagedList.ToList(); ResultModel resultModel = new ResultModel(); resultModel.UserResult = resultList; resultModel.TotalCount = resultCount; result.Status = Status.Success; result.StatusCode = HttpStatusCode.OK; result.Body = resultModel; return(StatusCode((int)result.StatusCode, result)); } catch (Exception e) { result.Status = Status.Error; result.Message = e.Message; result.StatusCode = HttpStatusCode.InternalServerError; return(StatusCode((int)result.StatusCode, result)); } }
public async Task <ActionResult <IResult> > GetAssociatedProducts(int id, [FromQuery] DataHelperModel dataHelper) { var result = new Result { Operation = Operation.Read, Status = Status.Success }; try { if (id != 0) { var product = from products in context.Products where products.CategoryID == id && products.IsDeleted != true orderby products.ProductName select new ProductViewModel { ProductName = products.ProductName, ProductID = products.ProductID, ShortDescription = products.ShortDescription, CategoryID = products.CategoryID, CategoryName = "", IsActive = products.IsActive, CreatedBy = products.CreatedBy, CreatedDate = products.CreatedDate, CreatedUser = "", Price = products.Price, QuantityInStock = products.QuantityInStock, VisibleEndDate = products.VisibleEndDate, AllowCustomerReviews = products.AllowCustomerReviews, DiscountPercent = products.DiscountPercent, VisibleStartDate = products.VisibleStartDate, IsDiscounted = products.IsDiscounted, LongDescription = products.LongDescription, MarkNew = products.MarkNew, ModelNumber = products.ModelNumber, ModifiedBy = products.ModifiedBy, ModifiedDate = products.ModifiedDate, ModifiedUser = "", OnHomePage = products.OnHomePage, ShipingEnabled = products.ShipingEnabled, ShippingCharges = products.ShippingCharges, Tax = products.Tax, TaxExempted = products.TaxExempted, QuantityType = products.QuantityType }; if (product.Count() == 0) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "Products do not exist for the category."; return(StatusCode((int)result.StatusCode, result)); } var list = product; list = DataSort.SortBy(list, dataHelper.SortColumn, dataHelper.SortOrder); var resultCount = list.Count(); var pagedList = DataCount.Page(list, dataHelper.PageNumber, dataHelper.PageSize); var resultList = await pagedList.ToListAsync(); ResultModel resultModel = new ResultModel(); resultModel.ProductResult = resultList; resultModel.TotalCount = resultCount; if (resultList.Count == 0) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "No records present."; return(StatusCode((int)result.StatusCode, result)); } result.Status = Status.Success; result.StatusCode = HttpStatusCode.OK; result.Body = resultModel; return(StatusCode((int)result.StatusCode, result)); } result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "ID entered is null."; return(StatusCode((int)result.StatusCode, result)); } catch (Exception e) { result.Status = Status.Error; result.Message = e.Message; result.StatusCode = HttpStatusCode.InternalServerError; return(StatusCode((int)result.StatusCode, result)); } }
public async Task <ActionResult <IResult> > Listing([FromQuery] DataHelperModel dataHelper, bool getAllParent, bool getAll) { var result = new Result { Operation = Operation.Read, Status = Status.Success }; try { var listQuery = from category in context.Categories join createdUser in context.Login on category.CreatedBy equals createdUser.UserID into createdUserName from createdUser in createdUserName.DefaultIfEmpty() let createdByUser = createdUser.Username join modifiedUser in context.Login on category.ModifiedBy equals modifiedUser.UserID into modifiedUserName from modifiedUser in modifiedUserName.DefaultIfEmpty() let modifiedByUser = modifiedUser.Username join products in context.Products on category.CategoryID equals products.CategoryID into productCount from productValueCount in productCount.DefaultIfEmpty() where category.IsDeleted != true orderby category.CreatedDate descending group new { category, productValueCount, createdByUser, modifiedByUser } by new { category, createdByUser, modifiedByUser } into categories select new CategoryViewModel { Name = categories.Key.category.CategoryName, CreatedBy = categories.Key.category.CreatedBy, ID = categories.Key.category.CategoryID, IsActive = categories.Key.category.IsActive, CreatedDate = categories.Key.category.CreatedDate, Description = categories.Key.category.CategoryDescription, ModifiedBy = categories.Key.category.ModifiedBy, ModifiedDate = categories.Key.category.ModifiedDate, CreatedUser = categories.Key.createdByUser, ModifiedUser = categories.Key.modifiedByUser, Parent = categories.Key.category.ParentCategory, Child = categories.Key.category.ChildCategory, ImageContent = "", AssociatedProducts = categories.Where(x => x.productValueCount != null ? x.category.CategoryID == x.category.CategoryID : false).Count() }; if (getAllParent != true) { if (dataHelper.Search != null) { listQuery = listQuery.Where(x => x.Name.Contains(dataHelper.Search) || x.Description.Contains(dataHelper.Search)); } var list = listQuery; list = DataSort.SortBy(list, dataHelper.SortColumn, dataHelper.SortOrder); var resultCount = list.Count(); var pagedList = DataCount.Page(list, dataHelper.PageNumber, dataHelper.PageSize); var resultList = await pagedList.ToListAsync(); ResultModel resultModel = new ResultModel(); resultModel.CategoryResult = resultList; resultModel.TotalCount = resultCount; if (resultList.Count == 0) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; result.Message = "No records present."; return(StatusCode((int)result.StatusCode, result)); } result.Status = Status.Success; result.StatusCode = HttpStatusCode.OK; result.Body = resultModel; return(StatusCode((int)result.StatusCode, result)); } else { if (!getAll) { listQuery = listQuery.Where(x => x.Child == null).OrderBy(x => x.Name); var categoryList = await listQuery.ToListAsync(); result.Body = categoryList; result.Status = Status.Success; result.StatusCode = HttpStatusCode.OK; return(StatusCode((int)result.StatusCode, result)); } else { listQuery = listQuery.OrderBy(x => x.Name); var categoryList = await listQuery.ToListAsync(); result.StatusCode = HttpStatusCode.OK; result.Body = categoryList; result.Status = Status.Success; return(StatusCode((int)result.StatusCode, result)); } } } catch (Exception e) { result.Status = Status.Error; result.Message = e.Message; result.StatusCode = HttpStatusCode.InternalServerError; return(StatusCode((int)result.StatusCode, result)); } }