private void RemoveServerOnlyColumns(GetByFilterParameters p) { var service = GetService(); if (service.Entity.ServerOnlyColumns.Count == 0) // if there was not column to exclude just return { return; } // handling columns and prevention of security fields List <string> colNames = new List <string>(); if (p.SelectColumns == null) { foreach (var colName in service.Entity.EntityColumns.Keys) // all columns excluding important columns { if (service.Entity.ServerOnlyColumns.Contains(colName) == false) { colNames.Add(colName); } } } else { foreach (var colName in p.SelectColumns) { if (service.Entity.ServerOnlyColumns.Contains(colName) == false) { colNames.Add(colName); } } } p.SelectColumns = colNames; }
/// <summary> /// Users the has role. /// </summary> /// <param name="roleCode">The role code.</param> /// <returns></returns> public bool HasRole(string roleCode) { string userId = this.GetCurrentUserIDString(); if (string.IsNullOrEmpty(userId)) { return(false); } //// TODO: cache roles here //var list = _UserInRoleService.GetRolesByUserID(userId); FilterExpression filter = new FilterExpression(); filter.AddFilter(new Filter("UserID", userId)); filter.AddFilter(new Filter("IsActive", true)); var gParams = new GetByFilterParameters(filter, new SortExpression(), 0, 1000, null, GetSourceTypeEnum.View); var list = GetUserInRoleService().GetByFilter(gParams); foreach (var item in list) { string rCode = FWUtils.EntityUtils.GetObjectFieldValueString(item, "RoleCode"); if (rCode == roleCode) { return(true); } } return(false); }
/// <summary> /// Delets a slots by a defined range /// </summary> /// <param name="p"></param> public void DeleteRange(DoctorScheduleDeleteRangeSP p) { ((DoctorScheduleBR)this.BusinessLogicObject).DeleteRange(p); var filter = GetByRangeFilter(new DoctorScheduleGetByRangeSP() { DoctorID = p.DoctorID, StartUnixEpoch = p.StartUnixEpoch, EndUnixEpoch = p.EndUnixEpoch }); GetByFilterParameters getParams = new GetByFilterParameters(filter, new SortExpression(), 0, 1000, null, GetSourceTypeEnum.Table); var list = GetByFilterT(getParams); foreach (var item in list) { try { Delete(item); } catch (BRException) // we ignore business exceptions { // ignore } } }
///// <summary> ///// Get available times in format for an specific date ///// </summary> ///// <param name="p">parameters</param> ///// <returns></returns> //public IList<vDoctorSchedule> GetTimesByRange(DoctorScheduleGetByRangeSP p) //{ // List<string> columns = new List<string>(); // columns.Add(vDoctorSchedule.ColumnNames.DoctorScheduleID); // columns.Add(vDoctorSchedule.ColumnNames.SlotUnixEpoch); // return GetByRangeWithColumns(p, null); //} private IList <vDoctorSchedule> GetByRangeWithColumns(DoctorScheduleGetByRangeSP p, List <string> columns) { FilterExpression filter = GetByRangeFilter(p); filter.AndMerge(new FilterExpression(vDoctorSchedule.ColumnNames.NumberOfFreePositions, 0, FilterOperatorEnum.GreaterThan)); SortExpression sort = new SortExpression(vDoctorSchedule.ColumnNames.SlotUnixEpoch); if (columns != null) { if (columns.Contains(vDoctorSchedule.ColumnNames.NumberOfAllowedPatients)) { columns.Add(vDoctorSchedule.ColumnNames.NumberOfAllowedPatients); } if (columns.Contains(vDoctorSchedule.ColumnNames.NumberOfRegisteredPatients)) { columns.Add(vDoctorSchedule.ColumnNames.NumberOfRegisteredPatients); } } GetByFilterParameters getParams = new GetByFilterParameters(filter, sort, 0, 1000, columns, GetSourceTypeEnum.View); IList <vDoctorSchedule> list = GetByFilterV(getParams); return(list); // we filter the list from database to speed up the process. //List<vDoctorSchedule> results = new List<vDoctorSchedule>(); //foreach (var item in list) //{ // if (item.NumberOfAllowedPatients > item.NumberOfRegisteredPatients) // results.Add(item); //} //return results; }
// GET api/entity_adk/5 public virtual ServiceActionResult GetByID(string id) { try { if (this.HasDefaultGetByID == false) { throw new ServiceSecurityException(); } IServiceBase service = GetService(); var filter = new FilterExpression(service.Entity.IDFieldName, id); var filterParams = new GetByFilterParameters( filter, new SortExpression(), 0, 1, null, GetSourceTypeEnum.View); RemoveServerOnlyColumns(filterParams); var data = service.GetByFilter(filterParams); if (data.Count > 0) { return(new ServiceActionResult(FWUtils.EntityUtils.JsonSerializeObject(data[0], true, service.Entity.ServerOnlyColumns))); } else { return(new ServiceActionResult(null)); } } catch (Exception ex) { return(UIUtils.GetExceptionActionResult(ex)); } }
protected override void onAfterGetByFilter(System.Collections.IList list, GetByFilterParameters parameters) { foreach (EntityObjectBase entityObj in list) { long doctorId = (long)entityObj.GetPrimaryKeyValue(); var doctorProfileImageUrl = AppFileEN.GetService().GetUserProfileImageUrl((long)doctorId); FWUtils.EntityUtils.SetEntityFieldValue(this.Entity, "DoctorProfilePicUrl", entityObj, doctorProfileImageUrl); } }
//Please write your properties and functions here. This part will not be replaced. /// <summary> /// returns roles of a specific user /// </summary> /// <param name="userId">user identifier</param> /// <returns></returns> public IList <vUserInRole> GetRolesByUserID(string userId) { FilterExpression filter = new FilterExpression(); filter.AddFilter(new Filter(vUserInRole.ColumnNames.UserID, userId)); filter.AddFilter(new Filter(vUserInRole.ColumnNames.IsActive, true)); var gParams = new GetByFilterParameters(filter, new SortExpression()); var list = GetByFilterV(gParams); return(list); }
protected override void onAfterGetByFilter(System.Collections.IList list, GetByFilterParameters parameters) { foreach (EntityObjectBase entityObj in list) { long senderId = (long)FWUtils.EntityUtils.GetObjectFieldValue(entityObj, vCallLog.ColumnNames.SenderUserID); var senderProfileImageUrl = AppFileEN.GetService().GetUserProfileImageUrl((long)senderId); FWUtils.EntityUtils.SetEntityFieldValue(this.Entity, "SenderProfilePicUrl", entityObj, senderProfileImageUrl); long receiverId = (long)FWUtils.EntityUtils.GetObjectFieldValue(entityObj, vCallLog.ColumnNames.ReceiverUserID); var receiverProfileImageUrl = AppFileEN.GetService().GetUserProfileImageUrl((long)receiverId); FWUtils.EntityUtils.SetEntityFieldValue(this.Entity, "ReceiverProfilePicUrl", entityObj, receiverProfileImageUrl); } }
protected override void onAfterGetByFilter(System.Collections.IList list, GetByFilterParameters parameters) { if (this.AdditionalDataKey == CallLogEN.AdditionalData_PhoneRing || this.AdditionalDataKey == CallLogEN.AdditionalData_VisitCallPatient) { foreach (EntityObjectBase entityObj in list) { long doctorId = (long)FWUtils.EntityUtils.GetObjectFieldValue(entityObj, vCallLog.ColumnNames.SenderUserID); var doctorProfileImageUrl = AppFileEN.GetService().GetUserProfileImageUrl((long)doctorId); FWUtils.EntityUtils.SetEntityFieldValue(this.Entity, "SenderProfilePicUrl", entityObj, doctorProfileImageUrl); long patientId = (long)FWUtils.EntityUtils.GetObjectFieldValue(entityObj, vCallLog.ColumnNames.ReceiverUserID); var patientProfileImageUrl = AppFileEN.GetService().GetUserProfileImageUrl((long)patientId); FWUtils.EntityUtils.SetEntityFieldValue(this.Entity, "ReceiverProfilePicUrl", entityObj, patientProfileImageUrl); } } }
/// <summary> /// Gets the chart all data. /// </summary> /// <param name="userId">The user identifier.</param> /// <param name="vitalTypeID">The vital type identifier.</param> /// <returns></returns> public List <vVitalValue> GetAllChartData(GetAllChartDataSP p) { FilterExpression filter = new FilterExpression(); filter.AddFilter(new Filter(vVitalValue.ColumnNames.PersonID, p.UserID)); filter.AddFilter(new Filter(vVitalValue.ColumnNames.VitalTypeID, p.VitalTypeID)); SortExpression sort = new SortExpression(vVitalValue.ColumnNames.RecordDateTime); List <string> columnNames = new List <string>(); columnNames.Add(vVitalValue.ColumnNames.RecordDateTimeUnix); columnNames.Add(vVitalValue.ColumnNames.DataValue); var getp = new GetByFilterParameters(filter, sort, 0, 10000, columnNames, GetSourceTypeEnum.View); return((List <vVitalValue>) this.GetByFilter(getp)); }
// GET api/entity_adk public ServiceActionResult Get(string p) //public ServiceActionResult Get(GetByFilterParmsJsonCompatible p) { try { GetByFilterParmsJsonCompatible pG = null; if (string.IsNullOrEmpty(p) == false) { pG = (GetByFilterParmsJsonCompatible) FWUtils.EntityUtils.JsonDeserializeObject(p, typeof(GetByFilterParmsJsonCompatible)); } if (this.HasDefaultGet == false) { throw new ServiceSecurityException(); } IServiceBase service = GetService(); GetByFilterParameters filterParams = null; if (pG != null) { filterParams = pG.ConvertToGetByFilterParameters(service.Entity); } if (filterParams == null) // if no filter provided { filterParams = new GetByFilterParameters( new FilterExpression(), new SortExpression(), 0, 100, null, GetSourceTypeEnum.View); } RemoveServerOnlyColumns(filterParams); var data = service.GetByFilter(filterParams); //return new ServiceActionResult(data); string s = FWUtils.EntityUtils.JsonSerializeObject(data, true, service.Entity.ServerOnlyColumns); return(new ServiceActionResult(s)); } catch (Exception ex) { return(UIUtils.GetExceptionActionResult(ex)); } }
/// <summary> ///A test for GetByFilterT ///</summary> public void GetByFilterTTestHelper <T, V>() { ServiceBase <T, V> target = CreateServiceBase <T, V>(); EntityObjectBase tester = CreateNewT <T, V>(); long entityCounts = target.GetCount(null); target.Insert(tester, new InsertParameters()); Assert.AreEqual(entityCounts + 1, target.GetCount(null)); FilterExpression f = new FilterExpression(new Filter(vTestCaseTester.ColumnNames.TestCaseTesterID, tester.GetPrimaryKeyValue())); GetByFilterParameters parameters = new GetByFilterParameters(f, new SortExpression(vTestCaseTester.ColumnNames.InsertDate)); ICollection <T> actual; actual = target.GetByFilterT(parameters); long expectedCount = 1; Assert.AreEqual(expectedCount, actual.Count); }
public System.Collections.IList GetByFilter(GetByFilterParameters parameters) { Check.Require(_IsInitialized, "The class is not initialized yet."); foreach (EntitySecurityBase checker in this.SecurityCheckers) { checker.GetByFilter(parameters); } if (onBeforeGetByFilter(parameters)) { //this.Entity.AddSelectParameters(parameters); parameters.Filter.AndMerge(this.Entity.DefaultFilter); var list = DataAccessObject.GetByFilter(parameters); onAfterGetByFilter(list, parameters); return(list); } return(null); }
/// <summary> /// gets role ids of a certain user /// </summary> /// <param name="userId">user identifier</param> /// <returns></returns> public List <long> GetRolesIDUserID(string userId) { FilterExpression filter = new FilterExpression(); filter.AddFilter(new Filter(vUserInRole.ColumnNames.UserID, userId)); filter.AddFilter(new Filter(vUserInRole.ColumnNames.IsActive, true)); List <string> columns = new List <string>(); columns.Add(vUserInRole.ColumnNames.RoleID); var gParams = new GetByFilterParameters(filter, new SortExpression(), 0, 1000, columns, GetSourceTypeEnum.Table); var list = GetByFilterV(gParams); List <long> results = new List <long>(); foreach (var item in list) { if (results.Contains(item.RoleID) == false) { results.Add(item.RoleID); } } return(results); }
protected override void onAfterGetByFilter(System.Collections.IList list, GetByFilterParameters parameters) { foreach (EntityObjectBase entityObj in list) { // filling doctor profile picture data if (this.AdditionalDataKey == VisitEN.AdditionalData_MyVisitsDoctor || this.AdditionalDataKey == VisitEN.AdditionalData_GridForPatient) { long doctorId = (long)FWUtils.EntityUtils.GetObjectFieldValue(entityObj, vDoctor_Patient.ColumnNames.DoctorID); var doctorProfileImageUrl = AppFileEN.GetService().GetUserProfileImageUrl((long)doctorId); FWUtils.EntityUtils.SetEntityFieldValue(this.Entity, "DoctorProfilePicUrl", entityObj, doctorProfileImageUrl); } // filing patient profile picture url if (this.AdditionalDataKey == VisitEN.AdditionalData_MyVisitsPatient || this.AdditionalDataKey == VisitEN.AdditionalData_TodaysAppointments || this.AdditionalDataKey == VisitEN.AdditionalData_GridForDoctor) { long patientId = (long)FWUtils.EntityUtils.GetObjectFieldValue(entityObj, vDoctor_Patient.ColumnNames.PatientUserID); var patientProfileImageUrl = AppFileEN.GetService().GetUserProfileImageUrl((long)patientId); FWUtils.EntityUtils.SetEntityFieldValue(this.Entity, "PatientProfilePicUrl", entityObj, patientProfileImageUrl); } } }
/// <summary> /// Converts the class to the GetByFilter class used in Framework /// </summary> /// <returns>GetByFilter parameters</returns> public GetByFilterParameters ConvertToGetByFilterParameters(EntityInfoBase entity) { // logic is like this: The deserializer deserialize JSON on this object // we need to read from this.PropertyName and create new GetByFilterObject FilterExpression filterFinal = new FilterExpression(); if (this.Filter != null) { if (this.Filter.LogicalOperator.HasValue == false) // default value for logical operator { this.Filter.LogicalOperator = FilterLogicalOperatorEnum.AND; } filterFinal.LogicalOperator = this.Filter.LogicalOperator.Value; if (this.Filter.FiltersList != null) { foreach (var item in this.Filter.FiltersList) { //TODO: It doesn't support advanced filter by now. // Add advanced filter later if (item.LogicalOperator.HasValue) { throw new NotImplementedException("Nested filters are not supported by now"); // FilterExpression f2 = new FilterExpression(); // f2.AddFilter() } if (item.Operator.HasValue == false) // default value for filter operator { item.Operator = FilterOperatorEnum.EqualTo; } // some security check for column names if (entity.EntityColumns.ContainsKey(item.ColumnName)) { // type casting for columns if (item.Value is string) { item.Value = FWUtils.EntityUtils.ConvertStringToObject((string)item.Value, entity.EntityColumns[item.ColumnName].DataTypeDotNet); } } else { throw new Exception("Filter column name : " + item.ColumnName + " is not exists in the entity: " + entity.EntityName); } filterFinal.AddFilter(new Filter(item.ColumnName, item.Value, item.Operator.Value)); } } } // Check sort experssion columns if (this.Sort != null) { foreach (var item in this.Sort.SortInfoList) { if (entity.EntityColumns.ContainsKey(item.ColumnName) == false) { throw new Exception("Sort column name : " + item.ColumnName + " is not exists in the entity: " + entity.EntityName); } } } // fix page size // if the page size is greater than 100, then we need to decrease it. if (this.PageSize > 100) { this.PageSize = 100; } if (this.PageSize == 0) { this.PageSize = -1; } GetByFilterParameters getByFilter = new GetByFilterParameters(filterFinal, this.Sort, this.PageIndex, this.PageSize, this.SelectColumns, this.SourceType); return(getByFilter); }
/// <summary> /// Gets the by filter. /// </summary> /// <param name="parameters"></param> /// <returns></returns> public System.Collections.IList GetByFilter(GetByFilterParameters parameters) { //NHibernateSession.Clear(); // temprorary fix for Dataaccess bug // used from http://ayende.com/blog/4023/nhibernate-queries-examples string selectColumns = ""; SortExpression sort = parameters.Sort; FilterExpression filter = parameters.Filter; int pageIndex = parameters.PageIndex; int pageSize = parameters.PageSize; if (pageSize == -1) // invalid value { pageSize = this.Entity.DefaultPageSize; } // Column Names ICollection <string> colNames = parameters.SelectColumns; if (colNames != null && colNames.Count > 0) { // adding ID field name to any select from the database to prevent null (-1) id problems if (string.IsNullOrEmpty(this.Entity.IDFieldName) == false) { if (colNames.Contains(this.Entity.IDFieldName) == false) { colNames.Add(this.Entity.IDFieldName); } } selectColumns = "Select "; int i = 0; foreach (string col in colNames) { selectColumns += col; if (i != colNames.Count - 1) { selectColumns += ","; } else { selectColumns += " "; } i++; } } // sort string sortString = sort.GetSortExpressionString(); if (string.IsNullOrEmpty(sortString) == false) { sortString = " Order By " + sortString; } // adding filter List <object> parameterValues = new List <object>(); string filterString = filter.GetFilterString(parameterValues); if (string.IsNullOrEmpty(filterString) == false) { filterString = " Where (" + filterString + ")"; } string hqlQuery = selectColumns + "from " + this.GetTableName(parameters.SourceType) + filterString + sortString; hqlQuery = hqlQuery.Replace("[", "").Replace("]", ""); var query = NHibernateSession.CreateQuery(hqlQuery); // adding parameters for (int i = 0; i < parameterValues.Count; i++) { string paramName = Filter.ParameterPrefix.Substring(1) + i; if (parameterValues[i] is System.Collections.ICollection) // for in operator, we can have a list of items. It works in HQL, but we need to pass it as parameterList // read more here: http://stackoverflow.com/questions/3390561/nhibernate-update-single-field-without-loading-entity { query.SetParameterList(paramName, (System.Collections.ICollection)parameterValues[i]); } else { query.SetParameter(paramName, parameterValues[i]); } } // set paging query.SetFirstResult(pageIndex * pageSize).SetMaxResults(pageSize); if (colNames == null) { if (parameters.SourceType == GetSourceTypeEnum.Table) { return(query.List <T>() as List <T>); } else { return(query.List <V>() as List <V>); } } else { var list = query.List(); return(ConvertToTypedList(parameters.SourceType, colNames, list)); } }
public abstract void GetByFilter(GetByFilterParameters parameters);
/// <summary> /// Gets the by filter. /// </summary> /// <param name="parameters">The parameters.</param> /// <returns></returns> public System.Collections.IList GetByFilter(GetByFilterParameters parameters) { return(this.DataAccessObject.GetByFilter(parameters)); }
/// <summary> /// Gets the by filter. (view data) /// </summary> /// <param name="parameters">The parameters.</param> /// <returns></returns> public IList <V> GetByFilterV(GetByFilterParameters parameters) { Check.Assert(parameters != null); parameters.SourceType = GetSourceTypeEnum.View; return((IList <V>)GetByFilter(parameters)); }
public override void GetByFilter(GetByFilterParameters parameters) { string resourceCode = this.Entity.SecurityResourceCode + strDelimiter + SecurityFunctionSEnum.View; FWUtils.SecurityUtils.HasAccess(resourceCode, throwIfNoAccess: true); }
/// <summary> /// Gets the by filter. /// </summary> /// <param name="parameters">The parameters.</param> /// <returns></returns> public IList <T> GetByFilterT(GetByFilterParameters parameters) { //IList<T> list = (IList<T>)GetByFilter(parameters); return((IList <T>)GetByFilter(parameters)); //return list; }
protected virtual void onAfterGetByFilter(System.Collections.IList list, GetByFilterParameters parameters) { }
protected virtual bool onBeforeGetByFilter(GetByFilterParameters parameters) { return(true); }
/// <summary> /// Gets the by filter. /// </summary> /// <param name="parameters">The parameters.</param> /// <returns></returns> public IList <T> GetByFilterT(GetByFilterParameters parameters) { return((IList <T>)GetByFilter(parameters)); }
/// <summary> /// Gets all the records. (view data) It shouldn't be used unless the view has a few records for sure /// </summary> /// <returns></returns> public IList <V> GetByFilterV(GetByFilterParameters parameters) { parameters.SourceType = GetSourceTypeEnum.View; return((IList <V>)GetByFilter(parameters)); }