internal static void ValidateUniqueConstraint(ISaveRequestHandler handler, IEnumerable<Field> fields,
            string errorMessage = null, BaseCriteria groupCriteria = null)
        {
            if (handler.IsUpdate && !fields.Any(x => x.IndexCompare(handler.Old, handler.Row) != 0))
                return;

            var criteria = groupCriteria ?? Criteria.Empty;

            foreach (var field in fields)
                if (field.IsNull(handler.Row))
                    criteria &= field.IsNull();
                else
                    criteria &= field == new ValueCriteria(field.AsObject(handler.Row));

            var idField = (Field)((IIdRow)handler.Row).IdField;

            if (handler.IsUpdate)
                criteria &= (Field)idField != new ValueCriteria(idField.AsObject(handler.Old));

            var row = handler.Row.CreateNew();
            if (new SqlQuery()
                    .Dialect(handler.Connection.GetDialect())
                    .From(row)
                    .Select("1")
                    .Where(criteria)
                    .Exists(handler.UnitOfWork.Connection))
            {
                throw new ValidationError("UniqueViolation",
                    String.Join(", ", fields.Select(x => x.PropertyName ?? x.Name)),
                    String.Format(!string.IsNullOrEmpty(errorMessage) ?
                        (LocalText.TryGet(errorMessage) ?? errorMessage) :
                            LocalText.Get("Validation.UniqueConstraint"),
                        String.Join(", ", fields.Select(x => x.Title))));
            }
        }
Beispiel #2
0
        public static bool IsEmpty(BaseCriteria criteria)
        {
            var array = criteria.As<object[]>();

            return array.Length == 0 ||
                (array.Length == 1 && array[0] is string && ((string)array[0]).Length == 0);
        }
Beispiel #3
0
        public static BaseCriteria Paren(BaseCriteria criteria)
        {
            if (!criteria.IsEmpty)
                return new UnaryCriteria("()", criteria);

            return criteria;
        }
Beispiel #4
0
        public static BaseCriteria Join(BaseCriteria criteria1, string op, BaseCriteria criteria2)
        {
            if (ReferenceEquals(null, criteria1) || criteria1.IsEmpty)
                return criteria2;

            if (ReferenceEquals(null, criteria2) || criteria2.IsEmpty)
                return criteria1;

            return new BinaryCriteria(criteria1, op, criteria2);
        }
Beispiel #5
0
        public UnaryCriteria(CriteriaOperator op, BaseCriteria operand)
        {
            if (Object.ReferenceEquals(operand, null))
                throw new ArgumentNullException("operand");

            if (op < CriteriaOperator.Paren || op > CriteriaOperator.Exists)
                throw new ArgumentOutOfRangeException("op");

            this.op = op;
            this.operand = operand;
        }
Beispiel #6
0
        public BinaryCriteria(BaseCriteria left, CriteriaOperator op, BaseCriteria right)
        {
            if (ReferenceEquals(left, null))
                throw new ArgumentNullException("left");

            if (ReferenceEquals(right, null))
                throw new ArgumentNullException("right");

            if (op < CriteriaOperator.AND || op > CriteriaOperator.NotLike)
                throw new ArgumentOutOfRangeException("op");

            this.left = left;
            this.right = right;
            this.op = op;
        }
Beispiel #7
0
        public static BaseCriteria Join(BaseCriteria criteria1, string op, BaseCriteria criteria2)
        {
            if (ReferenceEquals(null, criteria1))
                throw new ArgumentNullException("criteria1");

            if (ReferenceEquals(null, criteria2))
                throw new ArgumentNullException("criteria2");

            if (criteria1.IsEmpty)
                return criteria2;

            if (criteria2.IsEmpty)
                return criteria1;

            return new BinaryCriteria(criteria1, op, criteria2);
        }
        private UserDefinition GetFirst(IDbConnection connection, BaseCriteria criteria)
        {
            var user = connection.TrySingle<Entities.UserRow>(criteria);
            if (user != null)
                return new UserDefinition
                {
                    UserId = user.UserId.Value,
                    Username = user.Username,
                    Email = user.Email,
                    DisplayName = user.DisplayName,
                    IsActive = user.IsActive.Value,
                    Source = user.Source,
                    PasswordHash = user.PasswordHash,
                    PasswordSalt = user.PasswordSalt,
                    UpdateDate = user.UpdateDate
                };

            return null;
        }
            public static MyRow GetUser(IDbConnection connection, BaseCriteria filter)
            {
                var row = new MyRow();

                if (new SqlQuery().From(row)
                    .Select(
                        fld.UserId,
                        fld.Username,
                        fld.DisplayName,
                        fld.PasswordHash,
                        fld.PasswordSalt,
                        fld.IsActive)
                    .Where(filter)
                    .GetFirst(connection))
                {
                    return(row);
                }

                return(null);
            }
Beispiel #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BinaryCriteria"/> class.
        /// </summary>
        /// <param name="left">The left operand.</param>
        /// <param name="op">The operator.</param>
        /// <param name="right">The right operand.</param>
        /// <exception cref="ArgumentNullException">
        /// Left or right operand is null.
        /// </exception>
        /// <exception cref="ArgumentOutOfRangeException">Operator is not a binary one.</exception>
        public BinaryCriteria(BaseCriteria left, CriteriaOperator op, BaseCriteria right)
        {
            if (left is null)
            {
                throw new ArgumentNullException("left");
            }

            if (right is null)
            {
                throw new ArgumentNullException("right");
            }

            if (op < CriteriaOperator.AND || op > CriteriaOperator.NotLike)
            {
                throw new ArgumentOutOfRangeException("op");
            }

            this.left  = left;
            this.right = right;
            this.op    = op;
        }
Beispiel #11
0
        private UserDefinition GetFirst(IDbConnection connection, BaseCriteria criteria)
        {
            var user = connection.TrySingle<Entities.UserRow>(criteria);
            if (user != null)
                return new UserDefinition
                {
                    UserId = user.UserId.Value,
                    Username = user.Username,
                    Email = user.Email,
                    UserImage = user.UserImage,
                    DisplayName = user.DisplayName,
                    IsActive = user.IsActive.Value,
                    Source = user.Source,
                    PasswordHash = user.PasswordHash,
                    PasswordSalt = user.PasswordSalt,
                    UpdateDate = user.UpdateDate,
                    LastDirectoryUpdate = user.LastDirectoryUpdate
                };

            return null;
        }
        protected virtual BaseCriteria Visit(BaseCriteria criteria)
        {
            if (Object.ReferenceEquals(null, criteria))
                return null;

            if (criteria is Criteria)
                return VisitCriteria((Criteria)criteria);

            if (criteria is BinaryCriteria)
                return VisitBinary((BinaryCriteria)criteria);

            if (criteria is UnaryCriteria)
                return VisitUnary((UnaryCriteria)criteria);

            if (criteria is ValueCriteria)
                return VisitValue((ValueCriteria)criteria);

            if (criteria is ParamCriteria)
                return VisitParam((ParamCriteria)criteria);

            throw new Exception(String.Format("Unhandled criteria type: '{0}'", criteria.GetType().Name));
        }
Beispiel #13
0
        void UpdateCreteria()
        {
            IsFiltred = false;
            if (BaseCriteria == null)
            {
                return;
            }
            FiltredCriteria = (ICriteria)BaseCriteria.Clone();

            if (!checkShowArchive.Active)
            {
                FiltredCriteria.Add(Restrictions.Eq(Projections.Property <Nomenclature>(x => x.IsArchive), false));
                IsFiltred = true;
            }

            if (!chkShowDilers.Active)
            {
                FiltredCriteria.Add(Restrictions.Eq(Projections.Property <Nomenclature>(x => x.IsDiler), false));
                IsFiltred = true;
            }

            if ((NomenclatureCategory)enumcomboType.SelectedItem == NomenclatureCategory.water)
            {
                FiltredCriteria.Add(Restrictions.Eq(Projections.Property <Nomenclature>(x => x.IsDisposableTare), chkOnlyDisposableTare.Active));
                IsFiltred = true;
            }

            if (enumcomboType.SelectedItem is NomenclatureCategory)
            {
                FiltredCriteria.Add(Restrictions.Eq("Category", enumcomboType.SelectedItem));
                IsFiltred = true;
            }
            else
            {
                FiltredCriteria.AddOrder(NHibernate.Criterion.Order.Asc("Category"));
            }
            OnRefiltered();
        }
Beispiel #14
0
        void UpdateCreteria()
        {
            IsFiltred = false;
            if (BaseCriteria == null)
            {
                return;
            }
            FiltredCriteria = (ICriteria)BaseCriteria.Clone();

            if (!checkFired.Active)
            {
                FiltredCriteria.Add(Restrictions.Eq("IsFired", false));
                IsFiltred = true;
            }

            if (enumcomboCategory.SelectedItem is EmployeeCategory)
            {
                FiltredCriteria.Add(Restrictions.Eq("Category", enumcomboCategory.SelectedItem));
                IsFiltred = true;
            }

            OnRefiltered();
        }
Beispiel #15
0
        protected override MissedCommunicationList LoadList(BaseCriteria criteria)
        {
            try
            {
                //Initialize the CSqlDbCommand for execute the stored procedure
                CSqlDbCommand cmd = new CSqlDbCommand(DBCommands.USP_NS_GETMISSEDCOMMUNICATION);
                //Execute command
                CDAO.ExecReader(cmd);

                //Create new object to assign retrieved values.
                while (CDAO.DataReader.Read())
                {
                    MissedComm missedComm = new MissedComm();
                    missedComm.GroupName       = CDAO.DataReader["GroupName"].ToStr();
                    missedComm.PuckName        = CDAO.DataReader["PuckName"].ToStr();
                    missedComm.SensorType      = CDAO.DataReader["SensorType"].ToStr();
                    missedComm.FactoryID       = CDAO.DataReader["FactoryID"].ToStr();
                    missedComm.UTID            = CDAO.DataReader["UTID"].ToStr();
                    missedComm.Probe           = CDAO.DataReader["Probe"].ToInt();
                    missedComm.Interval        = CDAO.DataReader["Interval"].ToInt();
                    missedComm.LogIntervalMins = CDAO.DataReader["LogIntervalMins"].ToInt();
                    missedComm.LastContact     = CDAO.DataReader["LastContact"].ToDateTime();
                    this.Add(missedComm);
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                CDAO.CloseDataReader();
                CDAO.Dispose();
            }
            //return filled object.
            return(this);
        }
        protected virtual void ValidateUniqueConstraint(IEnumerable <Field> fields,
                                                        string errorMessage = null, BaseCriteria groupCriteria = null)
        {
            if (IsUpdate && !fields.Any(x => x.IndexCompare(Old, Row) != 0))
            {
                return;
            }

            var criteria = groupCriteria ?? Criteria.Empty;

            foreach (var field in fields)
            {
                if (field.IsNull(Row))
                {
                    criteria &= field.IsNull();
                }
                else
                {
                    criteria &= field == new ValueCriteria(field.AsObject(Row));
                }
            }

            if (IsUpdate)
            {
                criteria &= (Field)Row.IdField != Row.IdField[Old].Value;
            }

            if (Connection.Exists <TRow>(criteria))
            {
                throw new ValidationError("UniqueViolation",
                                          String.Join(", ", fields.Select(x => x.PropertyName ?? x.Name)),
                                          String.Format(!string.IsNullOrEmpty(errorMessage) ?
                                                        (LocalText.TryGet(errorMessage) ?? errorMessage) :
                                                        LocalText.Get("Validation.UniqueViolation"),
                                                        String.Join(", ", fields.Select(x => x.Title))));
            }
        }
        protected override OrganizationalUnitList LoadList(BaseCriteria criteria)
        {
            try
            {
                Criteria listCriteria = (Criteria)criteria;
                //Initialize the CSqlDbCommand for execute the stored procedure
                CSqlDbCommand cmd = new CSqlDbCommand(DBCommands.USP_ORGANIZATIONALUNITS);
                //Execute reader
                CDAO.ExecReader(cmd);
                while (CDAO.DataReader.Read())
                {
                    OrganizationalUnit orgUnit = new OrganizationalUnit()
                    {
                        OUID     = CDAO.DataReader["OUID"].ToInt(),
                        OGID     = CDAO.DataReader["OGID"].ToInt(),
                        OUName   = CDAO.DataReader["OUName"].ToStr(),
                        DBName   = CDAO.DataReader["DBName"].ToStr(),
                        DSN      = CDAO.DataReader["DSN"].ToStr(),
                        isActive = CDAO.DataReader["isActive"].ToBoolean()
                    };

                    this.Add(orgUnit);
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                CDAO.CloseDataReader();
                CDAO.Dispose();
            }

            return(this);
        }
Beispiel #18
0
        public static BaseCriteria Join(BaseCriteria criteria1, string op, BaseCriteria criteria2)
        {
            if (ReferenceEquals(null, criteria1))
            {
                throw new ArgumentNullException("criteria1");
            }

            if (ReferenceEquals(null, criteria2))
            {
                throw new ArgumentNullException("criteria2");
            }

            if (criteria1.IsEmpty)
            {
                return(criteria2);
            }

            if (criteria2.IsEmpty)
            {
                return(criteria1);
            }

            return(new BinaryCriteria(criteria1, op, criteria2));
        }
 public void Validate(BaseCriteria criteria)
 {
     Visit(criteria);
 }
Beispiel #20
0
 protected override IQueryable <MeetingType> GetByCriteria(BaseCriteria <MeetingTypeViewModel> criteria)
 {
     return(Repository.GetQuery().Where(x => (x.CreatedBy == criteria.UserId || criteria.UserId == 1) && !x.IsRemoved));
 }
Beispiel #21
0
        public static BaseCriteria GetCriteriaFor(List <FilterLine> items)
        {
            if (items == null)
            {
                return(Criteria.Empty);
            }

            bool         inParens     = false;
            BaseCriteria currentBlock = Criteria.Empty;
            bool         isBlockOr    = false;
            BaseCriteria criteria     = Criteria.Empty;

            for (int i = 0; i < items.Count; i++)
            {
                var line = items[i];

                if (line.LeftParen || (inParens && line.RightParen))
                {
                    if (!currentBlock.IsEmpty)
                    {
                        if (inParens)
                        {
                            currentBlock = ~(currentBlock);
                        }

                        if (isBlockOr)
                        {
                            criteria |= currentBlock;
                        }
                        else
                        {
                            criteria &= currentBlock;
                        }

                        currentBlock = Criteria.Empty;
                    }

                    inParens = false;
                }

                if (line.LeftParen)
                {
                    isBlockOr = line.IsOr;
                    inParens  = true;
                }

                if (line.IsOr)
                {
                    currentBlock |= line.Criteria;
                }
                else
                {
                    currentBlock &= line.Criteria;
                }
            }

            if (!currentBlock.IsEmpty)
            {
                if (isBlockOr)
                {
                    criteria |= ~(currentBlock);
                }
                else
                {
                    criteria &= ~(currentBlock);
                }
            }

            return(criteria);
        }
        public bool ActivateFor(IRow row)
        {
            if (Target is null)
            {
                return(false);
            }

            attr = Target.GetAttribute <MasterDetailRelationAttribute>();
            if (attr == null)
            {
                return(false);
            }

            var rowListType = Target.ValueType;

            if (!rowListType.IsGenericType ||
                rowListType.GetGenericTypeDefinition() != typeof(List <>))
            {
                throw new ArgumentException(string.Format("Field '{0}' in row type '{1}' has a MasterDetailRelationAttribute " +
                                                          "but its property type is not a generic List (e.g. List<IRow>)!",
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            rowType = rowListType.GetGenericArguments()[0];
            if (rowType.IsAbstract ||
                !typeof(IRow).IsAssignableFrom(rowType) ||
                rowType.IsInterface)
            {
                throw new ArgumentException(string.Format(
                                                "Field '{0}' in row type '{1}' has a MasterDetailRelationAttribute " +
                                                "but its property type is not a generic list of rows (e.g. List<IRow>)!",
                                                Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            rowListFactory = () => (IList)Activator.CreateInstance(rowListType);
            rowFactory     = () => (IRow)Activator.CreateInstance(rowType);

            if (attr.MasterKeyField != null)
            {
                // Use field from AltIdField
                masterKeyField = row.FindFieldByPropertyName(attr.MasterKeyField) ??
                                 row.FindField(attr.MasterKeyField);

                if (masterKeyField is null)
                {
                    throw new ArgumentException(string.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                              "This field is specified for a master detail relation in field '{2}'.",
                                                              attr.MasterKeyField, row.GetType().FullName,
                                                              Target.PropertyName ?? Target.Name));
                }
            }
            else
            {
                // Default behaviour: use id field
                masterKeyField = row.IdField;
            }

            var detailRow = rowFactory();

            foreignKeyField = detailRow.FindFieldByPropertyName(attr.ForeignKey) ??
                              detailRow.FindField(attr.ForeignKey);

            if (foreignKeyField is null)
            {
                throw new ArgumentException(string.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                          "This field is specified for a master detail relation in field '{2}' of row type '{3}'.",
                                                          attr.ForeignKey, detailRow.GetType().FullName,
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            foreignKeyCriteria = new Criteria(foreignKeyField.PropertyName ?? foreignKeyField.Name);

            if (!string.IsNullOrEmpty(attr.FilterField))
            {
                filterField = detailRow.FindFieldByPropertyName(attr.FilterField) ?? detailRow.FindField(attr.FilterField);
                if (filterField is null)
                {
                    throw new ArgumentException(string.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                              "This field is specified for a master detail relation as FilterField in field '{2}' of row type '{3}'.",
                                                              attr.FilterField, detailRow.GetType().FullName,
                                                              Target.PropertyName ?? Target.Name, row.GetType().FullName));
                }

                filterCriteria = new Criteria(filterField.PropertyName ?? filterField.Name);
                filterValue    = filterField.ConvertValue(attr.FilterValue, CultureInfo.InvariantCulture);
                if (filterValue == null)
                {
                    filterCriteria = filterCriteria.IsNull();
                    queryCriteria  = filterField.IsNull();
                }
                else
                {
                    filterCriteria = filterCriteria == new ValueCriteria(filterValue);
                    queryCriteria  = filterField == new ValueCriteria(filterValue);
                }
            }

            queryCriteria &= ServiceQueryHelper.GetNotDeletedCriteria(detailRow);

            includeColumns = new HashSet <string>();

            if (!string.IsNullOrEmpty(attr.IncludeColumns))
            {
                foreach (var s in attr.IncludeColumns.Split(','))
                {
                    var col = s.TrimToNull();
                    if (col != null)
                    {
                        includeColumns.Add(col);
                    }
                }
            }

            return(true);
        }
        public bool ActivateFor(IRow row)
        {
            attr = row.GetType().GetCustomAttribute <LocalizationRowAttribute>();
            if (attr == null)
            {
                return(false);
            }

            localRowType = attr.LocalizationRow;
            if (!typeof(ILocalizationRow).IsAssignableFrom(localRowType))
            {
                throw new ArgumentException(string.Format(
                                                "Row type '{0}' has a LocalizationRowAttribute, " +
                                                "but its localization row type ('{1}') doesn't implement ILocalizationRow interface!",
                                                row.GetType().FullName, localRowType.FullName));
            }

            if (!typeof(IIdRow).IsAssignableFrom(localRowType))
            {
                throw new ArgumentException(string.Format(
                                                "Row type '{0}' has a LocalizationRowAttribute, " +
                                                "but its localization row type ('{1}') doesn't implement IIdRow interface!",
                                                row.GetType().FullName, localRowType.FullName));
            }

            if (!(row is IIdRow))
            {
                throw new ArgumentException(string.Format(
                                                "Row type '{0}' has a LocalizationRowAttribute, " +
                                                "but row type itself doesn't implement IIdRow interface!",
                                                row.GetType().FullName));
            }

            var rowType = row.GetType();

            rowFactory      = () => (IIdRow)Activator.CreateInstance(rowType);
            localRowFactory = () => (ILocalizationRow)Activator.CreateInstance(localRowType);

            var localRow = localRowFactory();

            localRowInstance = localRow;

            rowPrefixLength = PrefixHelper.DeterminePrefixLength(row.EnumerateTableFields(),
                                                                 x => x.Name);
            localRowPrefixLength = PrefixHelper.DeterminePrefixLength(localRow.EnumerateTableFields(),
                                                                      x => x.Name);
            localRowIdField = localRow.IdField;
            cultureIdField  = localRow.CultureIdField;

            var foreignKeyFieldName = attr.MappedIdField ?? row.IdField.PropertyName;

            foreignKeyField = localRow.FindFieldByPropertyName(foreignKeyFieldName) ??
                              localRow.FindField(foreignKeyFieldName);

            if (foreignKeyField is null)
            {
                throw new ArgumentException(string.Format(
                                                "Row type '{0}' has a LocalizationRowAttribute, " +
                                                "but its localization row type ('{1}') doesn't have a field with name '{2}'!",
                                                row.GetType().FullName, localRowType.FullName, foreignKeyFieldName));
            }

            var dictionaryType = typeof(Dictionary <,>).MakeGenericType(typeof(string), row.GetType());

            dictionaryFactory = () => (IDictionary)Activator.CreateInstance(dictionaryType);

            foreignKeyCriteria = new Criteria(foreignKeyField.PropertyName ?? foreignKeyField.Name);
            return(true);
        }
        /// <summary>
        /// Get Audio Stream by <paramref name="localMediaId"/> and <paramref name="audioStreamId"/>
        /// </summary>
        /// <param name="localMediaId">Local Media Id</param>
        /// <param name="audioStreamId">Audio Stream ID</param>
        /// <returns></returns>
        public static DBLocalMediaAudioStreams Get(int localMediaId, int audioStreamId)
        {
            DBField localMediaField = DBField.GetField(typeof(DBLocalMediaAudioStreams), "LocalMedia");
            ICriteria localMediaCriteria = new BaseCriteria(localMediaField, "=", localMediaId);

            ICriteria criteria = localMediaCriteria;

            DBField audioStreamIdField = DBField.GetField(typeof(DBLocalMediaAudioStreams), "AudioStreamId");
            ICriteria audioStreamIdCriteria = new BaseCriteria(audioStreamIdField, "=", audioStreamId);
            criteria = new GroupedCriteria(localMediaCriteria, GroupedCriteria.Operator.AND, audioStreamIdCriteria);

            List<DBLocalMediaAudioStreams> resultSet = MovingPicturesCore.DatabaseManager.Get<DBLocalMediaAudioStreams>(criteria);
            return resultSet.Count > 0 ? resultSet[0] : null;
        }
        /// <summary>
        /// Gets all active IVR alarms.
        /// </summary>
        /// <param name="criteria"></param>
        /// <returns></returns>
        protected override IvrAlarmList LoadList(BaseCriteria criteria)
        {
            try
            {
                Criteria listCriteria = (Criteria)criteria;

                //Initialize the CSqlDbCommand for execute the stored procedure
                CSqlDbCommand cmd = new CSqlDbCommand(DBCommands.USP_NS_GET_IVRALARMLIST, System.Data.CommandType.StoredProcedure);
                cmd.AddWithValue("numAttempts", NumAttempts);
                //Execute reader
                CDAO.ExecReader(cmd);

                /*fill the object and add to list.*/
                while (CDAO.DataReader.Read())
                {
                    IvrAlarm alarm = new IvrAlarm();

                    alarm.IVRPhoneNumber  = CDAO.DataReader["PhoneNumber"].ToStr();
                    alarm.AlarmID         = CDAO.DataReader["AlarmID"].ToInt();
                    alarm.IsSuccess       = CDAO.DataReader["isSuccess"].ToBoolean();
                    alarm.NotificationID  = CDAO.DataReader["Notification_RecID"].ToInt();
                    alarm.AttemptCount    = CDAO.DataReader["numAttempts"].ToInt16();
                    alarm.QueueTime       = TypeCommonExtensions.IfNull(CDAO.DataReader["QueueTime"], DateTime.UtcNow).ToDateTime();
                    alarm.LastAttemptTime = TypeCommonExtensions.IfNull(CDAO.DataReader["LastAttemptTime"], DateTime.UtcNow).ToDateTime();
                    alarm.IvrAlarmID      = CDAO.DataReader["RecID"].ToInt();

                    alarm.UTID       = CDAO.DataReader["UTID"].ToStr();
                    alarm.Probe      = CDAO.DataReader["Probe"].ToInt();
                    alarm.SensorType = CDAO.DataReader["SensorType"].ToStr();
                    if (CDAO.DataReader["IVR_SensorName"] != DBNull.Value)
                    {
                        alarm.IVR_SensorName = CDAO.DataReader["IVR_SensorName"].ToStr();
                    }
                    else
                    {
                        alarm.IVR_SensorName = (CDAO.DataReader["PuckName"].ToStr() == string.Empty ? "Sensor" : CDAO.DataReader["PuckName"].ToStr());
                    }

                    alarm.Value = CDAO.DataReader["AlarmData"].ToDecimal();

                    alarm.AlarmMaxValue     = CDAO.DataReader["CondMaxValue"].ToDecimal();
                    alarm.AlarmMinValue     = CDAO.DataReader["CondMinValue"].ToDecimal();
                    alarm.CondThresholdMins = CDAO.DataReader["CondThresholdMins"].ToInt();
                    alarm.AlarmTime         = TypeCommonExtensions.IfNull(CDAO.DataReader["AlarmTime"], DateTime.UtcNow).ToDateTime();

                    alarm.IVRUserID  = CDAO.DataReader["UserID"].ToInt();
                    alarm.PersonName = CDAO.DataReader["FirstName"].ToString() + " " + CDAO.DataReader["LastName"].ToString();

                    alarm.LanguageID     = (CDAO.DataReader["LanguageID"].ToInt() == 0 ? 1 : CDAO.DataReader["LanguageID"].ToInt());
                    alarm.IsCelsius      = CDAO.DataReader["isCelsius"].ToBoolean();
                    alarm.StoreName      = GenStoreInfo.GetInstance().StoreName;
                    alarm.IvrID          = CDAO.DataReader["RecID"].ToInt();
                    alarm.StoreNumber    = GenStoreInfo.GetInstance().StorePhoneNumber.ToString();
                    alarm.AlarmStartTime = TypeCommonExtensions.IfNull(CDAO.DataReader["AlarmStartTime"], DateTime.UtcNow).ToDateTime();

                    //if (alarm.AlarmID > 0)
                    this.Add(alarm);
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                CDAO.CloseDataReader();
                CDAO.Dispose();
            }

            return(this);
        }
Beispiel #26
0
        internal static void ValidateUniqueConstraint(ISaveRequestHandler handler, IEnumerable <Field> fields,
                                                      ITextLocalizer localizer, string errorMessage = null, BaseCriteria groupCriteria = null)
        {
            if (handler.IsUpdate && !fields.Any(x => x.IndexCompare(handler.Old, handler.Row) != 0))
            {
                return;
            }

            var criteria = groupCriteria ?? Criteria.Empty;

            foreach (var field in fields)
            {
                if (field.IsNull(handler.Row))
                {
                    criteria &= field.IsNull();
                }
                else
                {
                    criteria &= field == new ValueCriteria(field.AsSqlValue(handler.Row));
                }
            }

            var idField = (Field)((IIdRow)handler.Row).IdField;

            if (handler.IsUpdate)
            {
                criteria &= (Field)idField != new ValueCriteria(idField.AsSqlValue(handler.Old));
            }

            var row = handler.Row.CreateNew();

            if (new SqlQuery()
                .Dialect(handler.Connection.GetDialect())
                .From(row)
                .Select("1")
                .Where(criteria)
                .Exists(handler.UnitOfWork.Connection))
            {
                throw new ValidationError("UniqueViolation",
                                          String.Join(", ", fields.Select(x => x.PropertyName ?? x.Name)),
                                          string.Format(!string.IsNullOrEmpty(errorMessage) ?
                                                        (localizer.TryGet(errorMessage) ?? errorMessage) :
                                                        localizer.Get("Validation.UniqueConstraint"),
                                                        String.Join(", ", fields.Select(x => x.GetTitle(localizer)))));
            }
        }
        /// <summary>
        /// Get Subtitles by <paramref name="localMediaId"/> and <paramref name="language"/> and <paramref name="isInternal"/>
        /// </summary>
        /// <param name="localMediaId">Local Media Id</param>
        /// <param name="language">Language</param>
        /// <param name="isInternal">Are there internal subtitles?</param>
        /// <returns></returns>
        public static DBLocalMediaSubtitles Get(int localMediaId, string language, bool isInternal)
        {
            logger.Debug("localMediaId: {0} | language: {1} | isInternal: {2}");

            logger.Debug("Constructing LocalMedia Criteria...");
            DBField localMediaField = DBField.GetField(typeof(DBLocalMediaSubtitles), "LocalMedia");
            ICriteria localMediaCriteria = new BaseCriteria(localMediaField, "=", localMediaId);

            ICriteria localMediaAndLanguageCriteria = localMediaCriteria;

            logger.Debug("Constructing language Criteria...");
            DBField languageField = DBField.GetField(typeof(DBLocalMediaSubtitles), "Language");
            ICriteria languageCriteria = new BaseCriteria(languageField, "=", language);
            localMediaAndLanguageCriteria = new GroupedCriteria(localMediaCriteria, GroupedCriteria.Operator.AND, languageCriteria);

            ICriteria criteria = localMediaAndLanguageCriteria;

            logger.Debug("Constructing Internal Criteria...");
            DBField isInternalField = DBField.GetField(typeof(DBLocalMediaSubtitles), "Internal");
            ICriteria internalCriteria = new BaseCriteria(isInternalField, "=", isInternal);
            criteria = new GroupedCriteria(localMediaAndLanguageCriteria, GroupedCriteria.Operator.AND, internalCriteria);

            logger.Debug("Getting resultSet...");
            List<DBLocalMediaSubtitles> resultSet = MovingPicturesCore.DatabaseManager.Get<DBLocalMediaSubtitles>(criteria);
            return resultSet.Count > 0 ? resultSet[0] : null;
        }
Beispiel #28
0
 public void Update(Business.Entities.ShoppingCartItem item, BaseCriteria criteria)
 {
     throw new NotImplementedException();
 }
        public bool ActivateFor(Row row)
        {
            attr = row.GetType().GetCustomAttribute <LocalizationRowAttribute>();
            if (attr == null)
            {
                return(false);
            }

            localRowType = attr.LocalizationRow;
            if (!typeof(ILocalizationRow).IsAssignableFrom(localRowType))
            {
                throw new ArgumentException(String.Format(
                                                "Row type '{0}' has a LocalizationRowAttribute, " +
                                                "but its localization row type ('{1}') doesn't implement ILocalizationRow interface!",
                                                row.GetType().FullName, localRowType.FullName));
            }

            if (!typeof(IIdRow).IsAssignableFrom(localRowType))
            {
                throw new ArgumentException(String.Format(
                                                "Row type '{0}' has a LocalizationRowAttribute, " +
                                                "but its localization row type ('{1}') doesn't implement IIdRow interface!",
                                                row.GetType().FullName, localRowType.FullName));
            }

            if (!(row is IIdRow))
            {
                throw new ArgumentException(String.Format(
                                                "Row type '{0}' has a LocalizationRowAttribute, " +
                                                "but row type itself doesn't implement IIdRow interface!",
                                                row.GetType().FullName));
            }

            rowFactory      = FastReflection.DelegateForConstructor <Row>(row.GetType());
            localRowFactory = FastReflection.DelegateForConstructor <Row>(localRowType);

            var localRow = localRowFactory();

            localRowInstance = localRow;

            rowPrefixLength      = PrefixHelper.DeterminePrefixLength(row.EnumerateTableFields(), x => x.Name);
            localRowPrefixLength = PrefixHelper.DeterminePrefixLength(localRow.EnumerateTableFields(), x => x.Name);
            localRowIdField      = (Field)(((IIdRow)localRow).IdField);
            cultureIdField       = ((ILocalizationRow)localRow).CultureIdField;

            var foreignKeyFieldName = attr.MappedIdField ?? ((Field)((IIdRow)row).IdField).PropertyName;

            foreignKeyField = localRow.FindFieldByPropertyName(foreignKeyFieldName) ??
                              localRow.FindField(foreignKeyFieldName);

            if (ReferenceEquals(null, foreignKeyField))
            {
                throw new ArgumentException(String.Format(
                                                "Row type '{0}' has a LocalizationRowAttribute, " +
                                                "but its localization row type ('{1}') doesn't have a field with name '{2}'!",
                                                row.GetType().FullName, localRowType.FullName, foreignKeyFieldName));
            }

            dictionaryFactory = FastReflection.DelegateForConstructor <IDictionary>(
                typeof(Dictionary <,>).MakeGenericType(typeof(string), row.GetType()));

            this.foreignKeyCriteria = new Criteria(foreignKeyField.PropertyName ?? foreignKeyField.Name);
            return(true);
        }
Beispiel #30
0
        /// <summary>
        /// Gets alarm list.
        /// </summary>
        /// <param name="criteria"></param>
        /// <returns></returns>
        protected override AlarmList LoadList(BaseCriteria criteria)
        {
            try
            {
                Criteria listCriteria = (Criteria)criteria;

                //Initialize the CSqlDbCommand for execute the stored procedure
                CSqlDbCommand cmd = new CSqlDbCommand(DBCommands.USP_NS_GET_ALARMLIST, System.Data.CommandType.StoredProcedure);

                //Execute reader
                CDAO.ExecReader(cmd);
                bool flag = true;

                System.Collections.Hashtable extFields = null;
                List <string> fields = new List <string>();

                while (CDAO.DataReader.Read())
                {
                    //For the first time get all the field names
                    if (flag)
                    {
                        for (int index = 0; index < CDAO.DataReader.FieldCount; index++)
                        {
                            fields.Add(CDAO.DataReader.GetName(index));
                        }

                        //Remove known fields from the list.
                        fields.Remove("UTID");
                        fields.Remove("Probe");
                        fields.Remove("ProbeName");
                        fields.Remove("PuckDesc2");
                        fields.Remove("FactoryID");
                        fields.Remove("AlarmType");
                        fields.Remove("AlarmID");
                        fields.Remove("SensorType");
                        fields.Remove("SensorClass");
                        fields.Remove("Options");
                        fields.Remove("AlarmData");
                        fields.Remove("CondMaxValue");
                        fields.Remove("CondMinValue");
                        fields.Remove("CondThresholdMins");
                        fields.Remove("NotificationRecID");
                        fields.Remove("AlarmProfileRecID");
                        fields.Remove("NotificationProfileID");
                        fields.Remove("EscalationProfileID");
                        fields.Remove("AlarmTime");
                        fields.Remove("AlarmStartTime");
                        fields.Remove("PagerMessage");
                        fields.Remove("SwitchBitmask");
                        fields.Remove("Severity");
                        fields.Remove("GroupName");
                        fields.Remove("NotifyResetFlags");


                        flag = false;
                    }


                    extFields = new System.Collections.Hashtable();

                    //Adding all extra fields in to a hash table.
                    foreach (string item in fields)
                    {
                        extFields.Add(item, CDAO.DataReader[item]);
                    }


                    AlarmObject alarm = new AlarmObject();
                    alarm.AddtionalFields = extFields;


                    alarm.UTID        = CDAO.DataReader["UTID"].ToStr();
                    alarm.Probe       = CDAO.DataReader["Probe"].ToInt();
                    alarm.ProbeName   = CDAO.DataReader["ProbeName"].ToStr();
                    alarm.ProbeName2  = CDAO.DataReader["PuckDesc2"].ToStr();
                    alarm.FactoryID   = CDAO.DataReader["FactoryID"].ToStr();
                    alarm.AlarmType   = CDAO.DataReader["AlarmType"].ToInt16();
                    alarm.AlarmID     = CDAO.DataReader["AlarmID"].ToInt();
                    alarm.SensorType  = CDAO.DataReader["SensorType"].ToStr();
                    alarm.SensorClass = CDAO.DataReader["SensorClass"].ToStr();
                    //alarm.IsNewAlarmRecordWasCreated = (CDAO.DataReader["Options"].ToInt() == 0 ? false : true);


                    if (alarm.AlarmType >= AlarmType.RESETMODE)
                    {
                        //if the alarm type is reset, then
                        alarm.SensorAlarmID = alarm.UTID + "_" + alarm.Probe + "_" + (alarm.AlarmType - AlarmType.RESETMODE).ToString();
                    }
                    else
                    {
                        alarm.SensorAlarmID = alarm.UTID + "_" + alarm.Probe + "_" + alarm.AlarmType.ToString();
                    }

                    alarm.AlarmTime = TypeCommonExtensions.IfNull(CDAO.DataReader["AlarmTime"], DateTime.UtcNow).ToDateTime();

                    alarm.AlarmStartTime = TypeCommonExtensions.IfNull(CDAO.DataReader["AlarmStartTime"], alarm.AlarmTime).ToDateTime();

                    if (alarm.AlarmStartTime == DateTime.MinValue || alarm.AlarmStartTime < DateTime.Parse("1/1/2000"))
                    {
                        alarm.AlarmStartTime = alarm.AlarmTime;
                    }

                    alarm.Value = CDAO.DataReader["AlarmData"].ToDecimal();

                    alarm.AlarmMaxValue                  = CDAO.DataReader["CondMaxValue"].ToDecimal();
                    alarm.AlarmMinValue                  = CDAO.DataReader["CondMinValue"].ToDecimal();
                    alarm.Threshold                      = Common.DateDiff("n", alarm.AlarmStartTime, alarm.AlarmTime);
                    alarm.CondThresholdMins              = CDAO.DataReader["CondThresholdMins"].ToInt();
                    alarm.TimeOutOfRange                 = Common.DateDiff("n", alarm.AlarmStartTime, alarm.AlarmTime);
                    alarm.NotificationID                 = CDAO.DataReader["NotificationRecID"].ToInt();
                    alarm.AlarmProfileID                 = CDAO.DataReader["AlarmProfileRecID"].ToInt();
                    alarm.NotifyProfileID                = CDAO.DataReader["NotificationProfileID"].ToInt();
                    alarm.EscalationProfileID            = CDAO.DataReader["EscalationProfileID"].ToInt();
                    alarm.PagerMessage                   = CDAO.DataReader["PagerPrompt"].ToStr();
                    alarm.SwitchBitmask                  = CDAO.DataReader["SwitchBitmask"].ToInt16();
                    alarm.Severity                       = (Severity)CDAO.DataReader["Severity"].ToInt();
                    alarm.DisplayValue                   = alarm.Value.ToString();
                    alarm.ResetNotifyOnUserAck           = (CDAO.DataReader["NotifyResetFlags"].ToInt() & 1).ToBoolean();
                    alarm.ResetNotifyOnSensorNormalRange = (CDAO.DataReader["NotifyResetFlags"].ToInt() & 2).ToBoolean();

                    if (AlarmHelper.IsContactSensor(alarm.SensorType))
                    {
                        if (alarm.Value == 0)
                        {
                            alarm.DisplayValue = "CLOSED";
                        }
                        else
                        {
                            alarm.DisplayValue = "OPEN";
                        }
                    }


                    // Only allow "ShowCelsius" flag to be set for "TEMP" type sensors
                    alarm.IsCelsius = (AlarmHelper.IsTempSensor(alarm.SensorType) ? (((CDAO.DataReader["NotifyFlags"].ToInt()) & 0x1) != 0) : false);

                    alarm.GroupName = CDAO.DataReader["GroupName"].ToStr();

                    //ProcessStatus will be returned as "O" if it is a old notification.
                    if (CDAO.DataReader["ProcessStatus"].ToStr() == "O")
                    {
                        alarm.IsResumedNitification = true;
                    }
                    else
                    {
                        alarm.IsResumedNitification = false;
                    }



                    this.Add(alarm);
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                CDAO.CloseDataReader();
                // Added on 2/19/2012
                // To dispose the data reader object
                // Srinivas Rao E
                CDAO.Dispose();
            }
            return(this);
        }
        public static DBMovieInfo GetByFitId(int id)
        {
            ICriteria fitIdFilter = new BaseCriteria(DBField.GetField(typeof(DBMovieInfo), "FitId"), "=", id);
            List<DBMovieInfo> foundMovies = MovingPicturesCore.DatabaseManager.Get<DBMovieInfo>(fitIdFilter);

            if (foundMovies.Count > 0)
                return foundMovies[0];

            return null;
        }
Beispiel #32
0
        public bool ActivateFor(Row row)
        {
            if (ReferenceEquals(null, Target))
                return false;

            attr = Target.GetAttribute<MasterDetailRelationAttribute>();
            if (attr == null)
                return false;

            var rowListType = Target.ValueType;
            if (!rowListType.IsGenericType ||
                rowListType.GetGenericTypeDefinition() != typeof(List<>))
            {
                throw new ArgumentException(String.Format("Field '{0}' in row type '{1}' has a MasterDetailRelationAttribute " +
                    "but its property type is not a generic List (e.g. List<Row>)!",
                    Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            var rowType = rowListType.GetGenericArguments()[0];
            if (rowType.IsAbstract ||
                !typeof(Row).IsAssignableFrom(rowType))
            {
                throw new ArgumentException(String.Format(
                    "Field '{0}' in row type '{1}' has a MasterDetailRelationAttribute " +
                    "but its property type is not a generic list of rows (e.g. List<Row>)!",
                        Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            rowListFactory = FastReflection.DelegateForConstructor<IList>(rowListType);
            rowFactory = FastReflection.DelegateForConstructor<Row>(rowType);

            listHandlerFactory = FastReflection.DelegateForConstructor<IListRequestProcessor>(
                typeof(ListRequestHandler<>).MakeGenericType(rowType));

            saveHandlerFactory = FastReflection.DelegateForConstructor<ISaveRequestProcessor>(
                typeof(SaveRequestHandler<>).MakeGenericType(rowType));

            saveRequestFactory = FastReflection.DelegateForConstructor<ISaveRequest>(
                typeof(SaveRequest<>).MakeGenericType(rowType));

            deleteHandlerFactory = FastReflection.DelegateForConstructor<IDeleteRequestProcessor>(
                typeof(DeleteRequestHandler<>).MakeGenericType(rowType));

            if (attr.MasterKeyField != null)
            {
                // Use field from AltIdField
                masterKeyField = row.FindFieldByPropertyName(attr.MasterKeyField) ??
                    row.FindField(attr.MasterKeyField);
                if (ReferenceEquals(masterKeyField, null))
                    throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                        "This field is specified for a master detail relation in field '{2}'.",
                        attr.MasterKeyField, row.GetType().FullName,
                        Target.PropertyName ?? Target.Name));
            }
            else
            {
                // Default behaviour: use id field
                masterKeyField = (Field)((row as IIdRow).IdField);
            }

            var detailRow = rowFactory();
            foreignKeyField = detailRow.FindFieldByPropertyName(attr.ForeignKey) ??
                detailRow.FindField(attr.ForeignKey);

            if (ReferenceEquals(foreignKeyField, null))
                throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                    "This field is specified for a master detail relation in field '{2}' of row type '{3}'.",
                    attr.ForeignKey, detailRow.GetType().FullName,
                    Target.PropertyName ?? Target.Name, row.GetType().FullName));

            this.foreignKeyCriteria = new Criteria(foreignKeyField.PropertyName ?? foreignKeyField.Name);

            if (!string.IsNullOrEmpty(attr.FilterField))
            {
                this.filterField = detailRow.FindFieldByPropertyName(attr.FilterField) ?? detailRow.FindField(attr.FilterField);
                if (ReferenceEquals(null, this.filterField))
                    throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                        "This field is specified for a master detail relation as FilterField in field '{2}' of row type '{3}'.",
                        attr.FilterField, detailRow.GetType().FullName,
                        Target.PropertyName ?? Target.Name, row.GetType().FullName));

                this.filterCriteria = new Criteria(filterField.PropertyName ?? filterField.Name);
                this.filterValue = filterField.ConvertValue(attr.FilterValue, CultureInfo.InvariantCulture);
                if (this.filterValue == null)
                {
                    this.filterCriteria = this.filterCriteria.IsNull();
                    this.queryCriteria = this.filterField.IsNull();
                }
                else
                {
                    this.filterCriteria = this.filterCriteria == new ValueCriteria(this.filterValue);
                    this.queryCriteria = this.filterField == new ValueCriteria(this.filterValue);
                }
            }

            queryCriteria = queryCriteria & ServiceQueryHelper.GetNotDeletedCriteria(detailRow);

            this.includeColumns = new HashSet<string>();

            if (!string.IsNullOrEmpty(attr.IncludeColumns))
                foreach (var s in attr.IncludeColumns.Split(','))
                {
                    var col = s.TrimToNull();
                    if (col != null)
                        this.includeColumns.Add(col);
                }

            return true;
        }
        private UserDefinition GetFirst(IDbConnection connection, BaseCriteria criteria)
        {
            var user = connection.TrySingle <Entities.UserRow>(criteria);

            if (user != null)
            {
                TbKtpRow dataKtp = GetDataKtp(user.Username);
                List <TbSlideShowRow> dataSlideshow = new List <TbSlideShowRow>();
                if (dataKtp.KodeRt != null && dataKtp.KodeRt != "")
                {
                    dataSlideshow = GetSlideshow(dataKtp.KodeRt);
                }

                string userRoles = GetUserRoles(user.UserId.Value);

                //var permission = TwoLevelCache.GetLocalStoreOnly("ScriptUserPermissions:" + user.UserId.Value, TimeSpan.Zero,
                //UserPermissionRow.Fields.GenerationKey, () =>
                //{
                //    var permissions = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);

                //    if (permissionsUsedFromScript == null)
                //    {
                //        permissionsUsedFromScript = new UserPermissionRepository().ListPermissionKeys().Entities
                //            .Where(permissionKey =>
                //            {
                //                // this sends permission information for all permission keys to client side.
                //                // if you don't need all of them to be available from script, filter them here.
                //                // this is recommended for security / performance reasons...
                //                return true;
                //            }).ToArray();
                //    }

                //    foreach (var permissionKey in permissionsUsedFromScript)
                //    {
                //        if (Authorization.HasPermission(permissionKey))
                //            permissions[permissionKey] = true;
                //    }

                //    return permissions;
                //});

                return(new UserDefinition
                {
                    UserId = user.UserId.Value,
                    Username = user.Username,
                    Email = user.Email,
                    UserImage = user.UserImage,
                    DisplayName = user.DisplayName,
                    IsActive = user.IsActive.Value,
                    Source = user.Source,
                    PasswordHash = user.PasswordHash,
                    PasswordSalt = user.PasswordSalt,
                    UpdateDate = user.UpdateDate,
                    LastDirectoryUpdate = user.LastDirectoryUpdate,
                    Ktp = dataKtp,
                    SlideShow = dataSlideshow,
                    UserRoles = userRoles
                });
            }


            return(null);
        }
 /// <summary>
 /// Validates the specified criteria.
 /// </summary>
 /// <param name="criteria">The criteria.</param>
 public void Validate(BaseCriteria criteria)
 {
     Visit(criteria);
 }
        private void ToJson(JsonWriter writer, BaseCriteria criteria, JsonSerializer serializer)
        {
            if (Object.ReferenceEquals(null, criteria) ||
                criteria.IsEmpty)
            {
                writer.WriteNull();
                return;
            }

            if (criteria is ValueCriteria)
            {
                var value = ((ValueCriteria)criteria).Value;
                if (value != null && value is IEnumerable && !(value is string))
                {
                    // make sure that first value in array won't be recognized as a operator
                    // while deserializing (e.g. if values are [">", "a", "b"], serialize them
                    // as [[">", "a", "b"]] so that the first > won't be recognized as GE operator.
                    writer.WriteStartArray();
                    serializer.Serialize(writer, value);
                    writer.WriteEndArray();
                    return;
                }

                serializer.Serialize(writer, value );
                return;
            }

            if (criteria is ParamCriteria)
            {
                writer.WriteStartArray();
                serializer.Serialize(writer, ((ParamCriteria)criteria).Name);
                writer.WriteEndArray();
                return;
            }

            if (criteria is Criteria)
            {
                writer.WriteStartArray();
                serializer.Serialize(writer, ((Criteria)criteria).Expression);
                writer.WriteEndArray();
                return;
            }

            if (criteria is UnaryCriteria)
            {
                writer.WriteStartArray();
                var c = (UnaryCriteria)criteria;
                writer.WriteValue(OperatorToKey[(int)c.Operator]);
                ToJson(writer, c.Operand, serializer);
                writer.WriteEndArray();
                return;
            }

            if (criteria is BinaryCriteria)
            {
                writer.WriteStartArray();
                var c = (BinaryCriteria)criteria;
                ToJson(writer, c.LeftOperand, serializer);
                writer.WriteValue(OperatorToKey[(int)c.Operator]);
                ToJson(writer, c.RightOperand, serializer);
                writer.WriteEndArray();
                return;
            }

            throw new JsonSerializationException(String.Format("Can't serialize criteria of type {0}", criteria.GetType().FullName));
        }
        /// <summary>
        /// Get a movie object by movie name
        /// </summary>
        /// <param name="movieName">Name of a movie</param>
        /// <returns>Returns a movie object or null if no movie was found.</returns>
        private static DBMovieInfo GetMovieByName(string movieName)
        {
            ICriteria titleFilter = new BaseCriteria(DBField.GetField(typeof(DBMovieInfo), "Title"), "like", "%" + movieName + "%");
            List<DBMovieInfo> foundMovies = MovingPicturesCore.DatabaseManager.Get<DBMovieInfo>(titleFilter);

            // If there are more than one result return the movie with an exact title
            // match or first movie if no exact match was found
            if (foundMovies.Count > 1)
            {
                foreach (DBMovieInfo movie in foundMovies)
                {
                    if (movie.Title.ToLower().Equals(movieName.ToLower()))
                    {
                        return movie;
                    }
                }

                return foundMovies[0];
            }
            else
            {
                // Return the first and only movie or null if there was no result
                if (foundMovies.Count == 1)
                {
                    return foundMovies[0];
                }
                else
                {
                    WifiRemote.LogMessage("Could not find MovingPictures movie " + movieName, WifiRemote.LogType.Info);
                    return null;
                }
            }
        }
        /// <summary>
        /// Get all Audio Streams for LocalMedia with <paramref name="localMediaId"/>
        /// </summary>
        /// <param name="localMediaId">LocalMedia ID</param>
        /// <returns></returns>
        public static List<DBLocalMediaAudioStreams> GetAll(int localMediaId)
        {
            DBField localMediaField = DBField.GetField(typeof(DBLocalMediaAudioStreams), "LocalMedia");
            ICriteria localMediaCriteria = new BaseCriteria(localMediaField, "=", localMediaId);

            List<DBLocalMediaAudioStreams> resultSet = MovingPicturesCore.DatabaseManager.Get<DBLocalMediaAudioStreams>(localMediaCriteria);
            return resultSet;
        }
        public bool ActivateFor(IRow row)
        {
            if (Target is null)
            {
                return(false);
            }

            attr = Target.GetAttribute <LinkingSetRelationAttribute>();
            if (attr == null)
            {
                return(false);
            }

            if (!(row is IIdRow))
            {
                throw new ArgumentException(string.Format("Field '{0}' in row type '{1}' has a [LinkingSetRelation] attribute " +
                                                          "but it doesn't implement IIdRow!",
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            var listType = Target.ValueType;

            if (!listType.IsGenericType ||
                listType.GetGenericTypeDefinition() != typeof(List <>))
            {
                throw new ArgumentException(string.Format("Field '{0}' in row type '{1}' has a [LinkingSetRelation] attribute " +
                                                          "but its property type is not a generic List (e.g. List<int>)!",
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            rowType = attr.RowType;
            if (rowType.IsAbstract ||
                !typeof(IRow).IsAssignableFrom(rowType) ||
                rowType.IsInterface)
            {
                throw new ArgumentException(string.Format(
                                                "Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                                                "but specified row type is not valid row class!",
                                                Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            if (!typeof(IIdRow).IsAssignableFrom(rowType))
            {
                throw new ArgumentException(string.Format(
                                                "Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                                                "but specified row type doesn't implement IIdRow!",
                                                Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            listFactory = () => (IList)Activator.CreateInstance(listType);
            rowFactory  = () => (IRow)Activator.CreateInstance(rowType);

            var detailRow = rowFactory();

            thisKeyField = detailRow.FindFieldByPropertyName(attr.ThisKey) ??
                           detailRow.FindField(attr.ThisKey);

            if (thisKeyField is null)
            {
                throw new ArgumentException(string.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                          "This field is specified for a linking set relation in field '{2}' of row type '{3}'.",
                                                          attr.ThisKey, detailRow.GetType().FullName,
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            thisKeyCriteria = new Criteria(thisKeyField.PropertyName ?? thisKeyField.Name);

            itemKeyField = detailRow.FindFieldByPropertyName(attr.ItemKey) ??
                           detailRow.FindField(attr.ItemKey);

            if (itemKeyField is null)
            {
                throw new ArgumentException(string.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                          "This field is specified for a linking set relation in field '{2}' of row type '{3}'.",
                                                          attr.ItemKey, detailRow.GetType().FullName,
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            if (!string.IsNullOrEmpty(attr.FilterField))
            {
                filterField = detailRow.FindFieldByPropertyName(attr.FilterField) ?? detailRow.FindField(attr.FilterField);
                if (filterField is null)
                {
                    throw new ArgumentException(string.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                              "This field is specified for a linking set relation as FilterField in field '{2}' of row type '{3}'.",
                                                              attr.FilterField, detailRow.GetType().FullName,
                                                              Target.PropertyName ?? Target.Name, row.GetType().FullName));
                }

                filterCriteria = new Criteria(filterField.PropertyName ?? filterField.Name);
                filterValue    = filterField.ConvertValue(attr.FilterValue, CultureInfo.InvariantCulture);
                if (filterValue == null)
                {
                    filterCriteria = filterCriteria.IsNull();
                    queryCriteria  = filterField.IsNull();
                }
                else
                {
                    filterCriteria = filterCriteria == new ValueCriteria(filterValue);
                    queryCriteria  = filterField == new ValueCriteria(filterValue);
                }
            }

            queryCriteria &= ServiceQueryHelper.GetNotDeletedCriteria(detailRow);

            return(true);
        }
        protected override CurrentStatusAlarmList LoadList(BaseCriteria baseCriteria)
        {
            try
            {
                Criteria      criteria = (Criteria)baseCriteria;
                CSqlDbCommand cmd      = new CSqlDbCommand(DBCommands.USP_NS_ALARMCURRENTSTATUS, System.Data.CommandType.StoredProcedure);
                cmd.Parameters.AddWithValue("action", "L");

                // This stored procedure was changed to an integer because on SQL 2000 the bit was being sent as a 'T' or an 'F' instead of a 1 or 0

                if (criteria.Fields != null)
                {
                    cmd.Parameters.AddWithValue("isServiceRestarted", Convert.ToInt32(criteria.Fields["isServiceRestarted"]));
                }
                else
                {
                    cmd.Parameters.AddWithValue("isServiceRestarted", DBNull.Value);
                }

                CDAO.ExecReader(cmd);

                while (CDAO.DataReader.Read())
                {
                    AlarmObject alarm = new AlarmObject();
                    alarm.UTID                           = CDAO.DataReader["UTID"].ToStr();
                    alarm.Probe                          = CDAO.DataReader["Probe"].ToInt();
                    alarm.ProbeName                      = CDAO.DataReader["ProbeName"].ToStr();
                    alarm.ProbeName2                     = CDAO.DataReader["ProbeName2"].ToStr();
                    alarm.FactoryID                      = CDAO.DataReader["FactoryID"].ToStr();
                    alarm.AlarmType                      = CDAO.DataReader["AlarmType"].ToInt16();
                    alarm.AlarmID                        = CDAO.DataReader["AlarmID"].ToInt();
                    alarm.SensorType                     = CDAO.DataReader["SensorType"].ToStr();
                    alarm.SensorClass                    = CDAO.DataReader["SensorClass"].ToStr();
                    alarm.SensorAlarmID                  = CDAO.DataReader["SensorAlarmID"].ToStr();
                    alarm.AlarmTime                      = CDAO.DataReader["AlarmTime"].ToDateTime();
                    alarm.AlarmStartTime                 = CDAO.DataReader["AlarmStartTime"].ToDateTime();
                    alarm.Value                          = CDAO.DataReader["Value"].ToDecimal();
                    alarm.AlarmMaxValue                  = CDAO.DataReader["AlarmMaxValue"].ToDecimal();
                    alarm.AlarmMinValue                  = CDAO.DataReader["AlarmMinValue"].ToDecimal();
                    alarm.Threshold                      = CDAO.DataReader["Threshold"].ToInt();
                    alarm.CondThresholdMins              = CDAO.DataReader["CondThresholdMins"].ToInt();
                    alarm.TimeOutOfRange                 = CDAO.DataReader["TimeOutOfRange"].ToInt();
                    alarm.NotificationID                 = CDAO.DataReader["NotificationID"].ToInt();
                    alarm.AlarmProfileID                 = CDAO.DataReader["AlarmProfileID"].ToInt();
                    alarm.NotifyProfileID                = CDAO.DataReader["NotifyProfileID"].ToInt();
                    alarm.EscalationProfileID            = CDAO.DataReader["EscalationProfileID"].ToInt();
                    alarm.PagerMessage                   = CDAO.DataReader["PagerMessage"].ToStr();
                    alarm.SwitchBitmask                  = CDAO.DataReader["SwitchBitmask"].ToInt16();
                    alarm.Severity                       = (Severity)CDAO.DataReader["Severity"].ToInt();
                    alarm.ResetNotifyOnUserAck           = CDAO.DataReader["ResetNotifyOnUserAck"].ToBoolean();
                    alarm.ResetNotifyOnSensorNormalRange = CDAO.DataReader["ResetNotifyOnSensorNormalRange"].ToBoolean();
                    alarm.DisplayValue                   = CDAO.DataReader["DisplayValue"].ToStr();
                    // Only allow "ShowCelsius" flag to be set for "TEMP" type sensors
                    alarm.IsCelsius             = CDAO.DataReader["IsCelsius"].ToBoolean();
                    alarm.GroupName             = CDAO.DataReader["GroupName"].ToStr();
                    alarm.IsResumedNitification = CDAO.DataReader["IsResumedNitification"].ToBoolean();
                    alarm.NotificationStartTime = CDAO.DataReader["NotificationStartTime"].ToDateTime();
                    alarm.IsElapsed             = CDAO.DataReader["IsElapsed"].ToBoolean();
                    alarm.NotificationType      = CDAO.DataReader["NotificationType"].ToStr();
                    alarm.EscRecID = CDAO.DataReader["EscalationRecID"].ToInt();
                    alarm.NotificationSentCount = CDAO.DataReader["NotificationSentCount"].ToInt();
                    this.Add(alarm);
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                CDAO.CloseDataReader();
                CDAO.Dispose();
            }
            return(this);
        }
Beispiel #40
0
        public bool ActivateFor(Row row)
        {
            if (ReferenceEquals(null, Target))
            {
                return(false);
            }

            attr = Target.GetAttribute <LinkingSetRelationAttribute>();
            if (attr == null)
            {
                return(false);
            }

            if (!(row is IIdRow))
            {
                throw new ArgumentException(String.Format("Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                                                          "but it doesn't implement IIdRow!",
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }


            var listType = Target.ValueType;

            if (!listType.IsGenericType ||
                listType.GetGenericTypeDefinition() != typeof(List <>))
            {
                throw new ArgumentException(String.Format("Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                                                          "but its property type is not a generic List (e.g. List<int>)!",
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            var rowType = attr.RowType;

            if (rowType.IsAbstract ||
                !typeof(Row).IsAssignableFrom(rowType))
            {
                throw new ArgumentException(String.Format(
                                                "Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                                                "but specified row type is not valid row class!",
                                                Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            if (!typeof(IIdRow).IsAssignableFrom(rowType))
            {
                throw new ArgumentException(String.Format(
                                                "Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                                                "but specified row type doesn't implement IIdRow!",
                                                Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            listFactory = FastReflection.DelegateForConstructor <IList>(listType);
            rowFactory  = FastReflection.DelegateForConstructor <Row>(rowType);

            listHandlerFactory = FastReflection.DelegateForConstructor <IListRequestProcessor>(
                typeof(ListRequestHandler <>).MakeGenericType(rowType));

            saveHandlerFactory = FastReflection.DelegateForConstructor <ISaveRequestProcessor>(
                typeof(SaveRequestHandler <>).MakeGenericType(rowType));

            saveRequestFactory = FastReflection.DelegateForConstructor <ISaveRequest>(
                typeof(SaveRequest <>).MakeGenericType(rowType));

            deleteHandlerFactory = FastReflection.DelegateForConstructor <IDeleteRequestProcessor>(
                typeof(DeleteRequestHandler <>).MakeGenericType(rowType));

            var detailRow = rowFactory();

            thisKeyField = detailRow.FindFieldByPropertyName(attr.ThisKey) ??
                           detailRow.FindField(attr.ThisKey);

            if (ReferenceEquals(thisKeyField, null))
            {
                throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                          "This field is specified for a linking set relation in field '{2}' of row type '{3}'.",
                                                          attr.ThisKey, detailRow.GetType().FullName,
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            this.thisKeyCriteria = new Criteria(thisKeyField.PropertyName ?? thisKeyField.Name);

            itemKeyField = detailRow.FindFieldByPropertyName(attr.ItemKey) ??
                           detailRow.FindField(attr.ItemKey);

            if (ReferenceEquals(itemKeyField, null))
            {
                throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                          "This field is specified for a linking set relation in field '{2}' of row type '{3}'.",
                                                          attr.ItemKey, detailRow.GetType().FullName,
                                                          Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            if (!string.IsNullOrEmpty(attr.FilterField))
            {
                this.filterField = detailRow.FindFieldByPropertyName(attr.FilterField) ?? detailRow.FindField(attr.FilterField);
                if (ReferenceEquals(null, this.filterField))
                {
                    throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                                                              "This field is specified for a linking set relation as FilterField in field '{2}' of row type '{3}'.",
                                                              attr.FilterField, detailRow.GetType().FullName,
                                                              Target.PropertyName ?? Target.Name, row.GetType().FullName));
                }

                this.filterCriteria = new Criteria(filterField.PropertyName ?? filterField.Name);
                this.filterValue    = filterField.ConvertValue(attr.FilterValue, CultureInfo.InvariantCulture);
                if (this.filterValue == null)
                {
                    this.filterCriteria   = this.filterCriteria.IsNull();
                    this.filterCriteriaT0 = this.filterField.IsNull();
                }
                else
                {
                    this.filterCriteria   = this.filterCriteria == new ValueCriteria(this.filterValue);
                    this.filterCriteriaT0 = this.filterField == new ValueCriteria(this.filterValue);
                }
            }

            return(true);
        }
Beispiel #41
0
 public void Update(Store item, BaseCriteria criteria)
 {
     throw new NotImplementedException();
 }
Beispiel #42
0
 /// <summary>
 /// Add additional User parameters to the Sql Command
 /// </summary>
 /// <param name="command">SQL Command instance</param>
 /// <param name="criteria">Base user criteria</param>
 protected override void AddProcParameters(SqlCommand command, BaseCriteria criteria)
 {
     base.AddProcParameters(command, criteria);
     command.Parameters.AddWithValue("@UserID", criteria.UserID);
 }
Beispiel #43
0
        public async Task <PagedList <TViewModel> > GetAsync(BaseCriteria <TViewModel> criteria)
        {
            IQueryable <TEntity> query = GetByCriteria(criteria);

            return(await ToPagedListAsync(query, criteria.PageSize, criteria.PageNumber));
        }
Beispiel #44
0
 public UnaryCriteria(string op, BaseCriteria operand)
 {
 }
Beispiel #45
0
 public BinaryCriteria(BaseCriteria left, string op, BaseCriteria right)
 {
 }
Beispiel #46
0
 /// <summary>
 /// Returns a list of DBArtistInfo objects that match the Album
 /// </summary>
 /// <param name="mbid"></param>
 /// <returns></returns>
 public static List<DBArtistInfo> GetEntriesByArtistMbID(string artistmbid)
 {
     DBField artistmbidField = DBField.GetField(typeof(DBArtistInfo), "MdID");
     ICriteria criteria = new BaseCriteria(artistmbidField, "=", artistmbid);
     return mvCentralCore.DatabaseManager.Get<DBArtistInfo>(criteria);
 }
Beispiel #47
0
 protected virtual BaseCriteria ReplaceFieldExpressions(BaseCriteria criteria)
 {
     return(new CriteriaFieldExpressionReplacer(this.Row)
            .Process(criteria));
 }
Beispiel #48
0
 /// <summary>
 /// Returns a list of DBTrackInfo objects that match the Album
 /// </summary>
 /// <param name="mbid"></param>
 /// <returns></returns>
 public static List<DBTrackInfo> GetEntriesByTrack(string trackmbid)
 {
     DBField trackmbidField = DBField.GetField(typeof(DBTrackInfo), "MdID");
     ICriteria criteria = new BaseCriteria(trackmbidField, "=", trackmbid);
     return mvCentralCore.DatabaseManager.Get<DBTrackInfo>(criteria);
 }
        public bool ActivateFor(Row row)
        {
            if (ReferenceEquals(null, Target))
                return false;

            attr = Target.GetAttribute<MasterDetailRelationAttribute>();
            if (attr == null)
                return false;

            var rowListType = Target.ValueType;
            if (!rowListType.GetIsGenericType() ||
                rowListType.GetGenericTypeDefinition() != typeof(List<>))
            {
                throw new ArgumentException(String.Format("Field '{0}' in row type '{1}' has a MasterDetailRelationAttribute " +
                    "but its property type is not a generic List (e.g. List<Row>)!",
                    Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            var rowType = rowListType.GetGenericArguments()[0];
            if (rowType.GetIsAbstract() ||
                !typeof(Row).IsAssignableFrom(rowType))
            {
                throw new ArgumentException(String.Format(
                    "Field '{0}' in row type '{1}' has a MasterDetailRelationAttribute " +
                    "but its property type is not a generic list of rows (e.g. List<Row>)!",
                        Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            rowListFactory = FastReflection.DelegateForConstructor<IList>(rowListType);
            rowFactory = FastReflection.DelegateForConstructor<Row>(rowType);

            listHandlerFactory = FastReflection.DelegateForConstructor<IListRequestProcessor>(
                typeof(ListRequestHandler<>).MakeGenericType(rowType));

            saveHandlerFactory = FastReflection.DelegateForConstructor<ISaveRequestProcessor>(
                typeof(SaveRequestHandler<>).MakeGenericType(rowType));

            saveRequestFactory = FastReflection.DelegateForConstructor<ISaveRequest>(
                typeof(SaveRequest<>).MakeGenericType(rowType));

            deleteHandlerFactory = FastReflection.DelegateForConstructor<IDeleteRequestProcessor>(
                typeof(DeleteRequestHandler<>).MakeGenericType(rowType));

            var detailRow = rowFactory();
            foreignKeyField = detailRow.FindFieldByPropertyName(attr.ForeignKey) ??
                detailRow.FindField(attr.ForeignKey);

            if (ReferenceEquals(foreignKeyField, null))
                throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                    "This field is specified for a master detail relation in field '{2}' of row type '{3}'.",
                    attr.ForeignKey, detailRow.GetType().FullName,
                    Target.PropertyName ?? Target.Name, row.GetType().FullName));

            this.foreignKeyCriteria = new Criteria(foreignKeyField.PropertyName ?? foreignKeyField.Name);

            if (!string.IsNullOrEmpty(attr.FilterField))
            {
                this.filterField = detailRow.FindFieldByPropertyName(attr.FilterField) ?? detailRow.FindField(attr.FilterField);
                if (ReferenceEquals(null, this.filterField))
                    throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                        "This field is specified for a master detail relation as FilterField in field '{2}' of row type '{3}'.",
                        attr.FilterField, detailRow.GetType().FullName,
                        Target.PropertyName ?? Target.Name, row.GetType().FullName));

                this.filterCriteria = new Criteria(filterField.PropertyName ?? filterField.Name);
                this.filterValue = filterField.ConvertValue(attr.FilterValue, CultureInfo.InvariantCulture);
                if (this.filterValue == null)
                {
                    this.filterCriteria = this.filterCriteria.IsNull();
                    this.filterCriteriaT0 = this.filterField.IsNull();
                }
                else
                {
                    this.filterCriteria = this.filterCriteria == new ValueCriteria(this.filterValue);
                    this.filterCriteriaT0 = this.filterField == new ValueCriteria(this.filterValue);
                }
            }

            this.includeColumns = new HashSet<string>();

            if (!string.IsNullOrEmpty(attr.IncludeColumns))
                foreach (var s in attr.IncludeColumns.Split(','))
                {
                    var col = s.TrimToNull();
                    if (col != null)
                        this.includeColumns.Add(col);
                }

            return true;
        }
Beispiel #50
0
        protected virtual void AddFieldContainsCriteria(Field field, string containsText, long?id,
                                                        SearchType searchType, bool numericOnly, ref BaseCriteria criteria, ref bool orFalse)
        {
            if (numericOnly == true && (id == null))
            {
                orFalse = true;
                return;
            }

            switch (searchType)
            {
            case SearchType.Contains:
                criteria |= new Criteria(field).Contains(containsText);
                break;

            case SearchType.StartsWith:
                criteria |= new Criteria(field).StartsWith(containsText);
                break;

            case SearchType.Equals:
                if (field is Int32Field)
                {
                    if (id == null || id < Int32.MinValue || id > Int32.MaxValue)
                    {
                        orFalse = true;
                        return;
                    }

                    criteria |= new Criteria(field) == (int)id;
                }
                else if (field is Int16Field)
                {
                    if (id == null || id < Int16.MinValue || id > Int16.MaxValue)
                    {
                        orFalse = true;
                        return;
                    }

                    criteria |= new Criteria(field) == (Int16)id;
                }
                else if (field is Int64Field)
                {
                    if (id == null || id < Int64.MinValue || id > Int64.MaxValue)
                    {
                        orFalse = true;
                        return;
                    }

                    criteria |= new Criteria(field) == id.Value;
                }
                else
                {
                    criteria |= new Criteria(field) == containsText;
                }
                break;

            default:
                throw new ArgumentOutOfRangeException("searchType");
            }
        }
 public BaseCriteria Process(BaseCriteria criteria)
 {
     return Visit(criteria);
 }
        public bool ActivateFor(Row row)
        {
            if (ReferenceEquals(null, Target))
                return false;

            attr = Target.GetAttribute<LinkingSetRelationAttribute>();
            if (attr == null)
                return false;

            if (!(row is IIdRow))
            {
                throw new ArgumentException(String.Format("Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                    "but it doesn't implement IIdRow!",
                    Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }


            var listType = Target.ValueType;
            if (!listType.GetIsGenericType() ||
                listType.GetGenericTypeDefinition() != typeof(List<>))
            {
                throw new ArgumentException(String.Format("Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                    "but its property type is not a generic List (e.g. List<int>)!",
                    Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            var rowType = attr.RowType;
            if (rowType.GetIsAbstract() ||
                !typeof(Row).IsAssignableFrom(rowType))
            {
                throw new ArgumentException(String.Format(
                    "Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                    "but specified row type is not valid row class!",
                        Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            if (!typeof(IIdRow).IsAssignableFrom(rowType))
            {
                throw new ArgumentException(String.Format(
                    "Field '{0}' in row type '{1}' has a LinkingSetRelationBehavior " +
                    "but specified row type doesn't implement IIdRow!",
                        Target.PropertyName ?? Target.Name, row.GetType().FullName));
            }

            listFactory = FastReflection.DelegateForConstructor<IList>(listType);
            rowFactory = FastReflection.DelegateForConstructor<Row>(rowType);

            listHandlerFactory = FastReflection.DelegateForConstructor<IListRequestProcessor>(
                typeof(ListRequestHandler<>).MakeGenericType(rowType));

            saveHandlerFactory = FastReflection.DelegateForConstructor<ISaveRequestProcessor>(
                typeof(SaveRequestHandler<>).MakeGenericType(rowType));

            saveRequestFactory = FastReflection.DelegateForConstructor<ISaveRequest>(
                typeof(SaveRequest<>).MakeGenericType(rowType));

            deleteHandlerFactory = FastReflection.DelegateForConstructor<IDeleteRequestProcessor>(
                typeof(DeleteRequestHandler<>).MakeGenericType(rowType));

            var detailRow = rowFactory();

            thisKeyField = detailRow.FindFieldByPropertyName(attr.ThisKey) ??
                detailRow.FindField(attr.ThisKey);

            if (ReferenceEquals(thisKeyField, null))
                throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                    "This field is specified for a linking set relation in field '{2}' of row type '{3}'.",
                    attr.ThisKey, detailRow.GetType().FullName,
                    Target.PropertyName ?? Target.Name, row.GetType().FullName));

            this.thisKeyCriteria = new Criteria(thisKeyField.PropertyName ?? thisKeyField.Name);

            itemKeyField = detailRow.FindFieldByPropertyName(attr.ItemKey) ??
                detailRow.FindField(attr.ItemKey);

            if (ReferenceEquals(itemKeyField, null))
                throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                    "This field is specified for a linking set relation in field '{2}' of row type '{3}'.",
                    attr.ItemKey, detailRow.GetType().FullName,
                    Target.PropertyName ?? Target.Name, row.GetType().FullName));

            if (!string.IsNullOrEmpty(attr.FilterField))
            {
                this.filterField = detailRow.FindFieldByPropertyName(attr.FilterField) ?? detailRow.FindField(attr.FilterField);
                if (ReferenceEquals(null, this.filterField))
                    throw new ArgumentException(String.Format("Field '{0}' doesn't exist in row of type '{1}'." +
                        "This field is specified for a linking set relation as FilterField in field '{2}' of row type '{3}'.",
                        attr.FilterField, detailRow.GetType().FullName,
                        Target.PropertyName ?? Target.Name, row.GetType().FullName));

                this.filterCriteria = new Criteria(filterField.PropertyName ?? filterField.Name);
                this.filterValue = filterField.ConvertValue(attr.FilterValue, CultureInfo.InvariantCulture);
                if (this.filterValue == null)
                {
                    this.filterCriteria = this.filterCriteria.IsNull();
                    this.filterCriteriaT0 = this.filterField.IsNull();
                }
                else
                {
                    this.filterCriteria = this.filterCriteria == new ValueCriteria(this.filterValue);
                    this.filterCriteriaT0 = this.filterField == new ValueCriteria(this.filterValue);
                }
            }

            return true;
        }
        // Gets the corresponding DBImportPath object using it's FullPath property
        public static DBImportPath Get(string fullPath)
        {
            DBField pathField = DBField.GetField(typeof(DBImportPath), "FullPath");
            ICriteria criteria = new BaseCriteria(pathField, "like", fullPath);
            List<DBImportPath> resultSet = MovingPicturesCore.DatabaseManager.Get<DBImportPath>(criteria);
            if (resultSet.Count > 0)
                return resultSet[0];

            DBImportPath newImportPath = new DBImportPath();
            newImportPath.FullPath = fullPath;

            return newImportPath;
        }
 protected override IQueryable <MeetingNote> GetByCriteria(BaseCriteria <MeetingNoteViewModel> criteria)
 {
     return(Repository.GetQuery().Where(x => !x.IsRemoved));
 }