Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        /// <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;
        }
Ejemplo n.º 5
0
        // 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));
            }
        }
Ejemplo n.º 6
0
 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);
     }
 }
Ejemplo n.º 7
0
        //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);
        }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
        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);
                }
            }
        }
Ejemplo n.º 10
0
        /// <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));
        }
Ejemplo n.º 11
0
        // 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));
            }
        }
Ejemplo n.º 12
0
        /// <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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        /// <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);
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 17
0
        /// <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));
            }
        }
Ejemplo n.º 18
0
 public abstract void GetByFilter(GetByFilterParameters parameters);
Ejemplo n.º 19
0
 /// <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));
 }
Ejemplo n.º 20
0
 /// <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);
        }
Ejemplo n.º 22
0
 /// <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;
 }
Ejemplo n.º 23
0
 protected virtual void onAfterGetByFilter(System.Collections.IList list, GetByFilterParameters parameters)
 {
 }
Ejemplo n.º 24
0
 protected virtual bool onBeforeGetByFilter(GetByFilterParameters parameters)
 {
     return(true);
 }
Ejemplo n.º 25
0
 /// <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));
 }
Ejemplo n.º 26
0
 /// <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));
 }