/// <summary> /// Find labels according to the request values supplied (if just a blank request is sent all labels will be returned /// </summary> /// <param name="request">The request containing the filter criteria</param> /// <returns>a list of labels if any were found</returns> public ApptLabelsResponse Any(FindApptLabels request) { //return ExecuteFaultHandledMethod(() => //{ ApptLabelsResponse response = new ApptLabelsResponse(); if (request != null) { var query = BuildQuery <ApptLabel>(request); var _repository = _DataRepositoryFactory.GetDataRepository <IGenericEntityRepositoryBase <ApptLabel, IDataContextNhJars> >(); IList <ApptLabel> resList = _repository.Where(query).ToList(); if (resList.Count == 0 && request.ViewType != "" && request.LabelName == null) { CreateDefaultRecord(request, _repository); response.Labels = _repository.Where(query).ConvertAllTo <ApptLabelDto>().ToList(); } else { response.Labels = resList.ConvertAllTo <ApptLabelDto>().ToList(); } } return(response); //}); }
/// <summary> /// A helper method used for building the query, depending on if the LoadLazy option was set. /// </summary> /// <typeparam name="T">A query over object required by the QueryOver Method on the repository</typeparam> /// <param name="request">The same request passed into the service</param> /// <param name="hasWhere">a bool value indicating if there is a where string</param> /// <returns></returns> private Expression <Func <ApptLabel, bool> > BuildQuery <T>(FindApptLabels request) { Expression <Func <ApptLabel, bool> > query = LinqExpressionBuilder.True <ApptLabel>(); //DisplayName if (request.ViewType != null && request.ViewType != string.Empty) { query = query.And(j => j.ViewName == request.ViewType); } //IsActive if (request.LabelName != null && request.LabelName != string.Empty) { query = query.And(o => o.LabelName.Like($"{request.LabelName}%")); } return(query); }
void CreateDefaultRecord(FindApptLabels request, IGenericEntityRepositoryBase <ApptLabel, IDataContextNhJars> repository) { ApptLabel lbl = new ApptLabel() { UseInterfaceType = request.InterfaceTypeName, ViewName = request.ViewType, LabelCriteria = "" }; lbl = repository.CreateUpdate(lbl, "SYSTEM"); Type t = Type.GetType(request.InterfaceTypeName); if (t == typeof(IEntityWithStatusLabels)) { lbl.LabelCriteria = $"([LabelKey] = '{lbl.Id}')"; lbl = repository.CreateUpdate(lbl, "SYSTEM"); } }