/// <summary>
        /// Cria a consulta para recuperar os itens filhos.
        /// </summary>
        /// <param name="parentUid">Identificador da entidade pai.</param>
        /// <param name="parentDataModel">Instancia com os dados do pai.</param>
        /// <param name="sourceContext">Contexto de origem.</param>
        /// <returns></returns>
        public EntityInfoQuery[] CreateQueries(int parentUid, Colosoft.Data.IModel parentDataModel, Colosoft.Query.ISourceContext sourceContext)
        {
            var result    = new EntityInfoQuery[_dynamicChild.Entries.Count];
            var startDate = ServerData.GetDateTimeOffSet();

            if (parentDataModel is Colosoft.Data.ITraceableModel)
            {
                startDate = ((Colosoft.Data.ITraceableModel)parentDataModel).CreatedDate;
            }
            for (var i = 0; i < result.Length; i++)
            {
                var entry = _dynamicChild.Entries[i];
                result[i] = entry.CreateQuery(parentUid, _parentLoader, parentDataModel, sourceContext);
            }
            return(result);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Inicializa a instancia.
 /// </summary>
 /// <param name="record"></param>
 /// <param name="idFieldIndex"></param>
 /// <param name="nameFieldIndex"></param>
 /// <param name="descriptionFieldIndex"></param>
 private void Initialize(Colosoft.Query.Record record, int idFieldIndex, int nameFieldIndex, int descriptionFieldIndex)
 {
     this.Id   = record[idFieldIndex];
     this.Name = record[nameFieldIndex];
     if (descriptionFieldIndex >= 0)
     {
         this.Description = record[descriptionFieldIndex];
     }
     if (record.Descriptor.Contains("ActivatedDate") && record.Descriptor.Contains("ExpiredDate"))
     {
         DateTimeOffset activatedDate = record["ActivatedDate"];
         DateTimeOffset?expiredDate   = record["ExpiredDate"];
         IsExpired = expiredDate.HasValue && (ServerData.GetDateTimeOffSet() > expiredDate);
         IsActive  = activatedDate < ServerData.GetDateTimeOffSet() && !IsExpired;
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Desativa a entidade.
 /// </summary>
 public void Deactivate()
 {
     ExpiredDate = ServerData.GetDateTimeOffSet();
 }
        /// <summary>
        /// Realiza os bind dos dados do registro informado.
        /// </summary>
        /// <param name="record">Registro contendo os dados.</param>
        /// <param name="mode"></param>
        /// <param name="recordKeyFactory">Factory responsável pela geração da chave do registro.</param>
        /// <param name="instance"></param>
        /// <returns></returns>
        private IEnumerable <string> Bind(Query.IRecord record, Query.BindStrategyMode mode, Query.IRecordKeyFactory recordKeyFactory, ref object instance)
        {
            record.Require("record").NotNull();
            var descriptor = instance as IEntityDescriptor;

            if (descriptor == null)
            {
                return(new string[0]);
            }
            var    idFieldIndex          = record.Descriptor.GetFieldPosition(_entityLoader.UidPropertyName);
            var    descriptionFieldIndex = record.Descriptor.GetFieldPosition(_entityLoader.DescriptionPropertyName);
            string nameFieldValue        = string.Empty;

            if (_entityLoader.FindNameProperties.Count() > 1)
            {
                var info = Merge(_entityLoader.FindNameProperties, descriptor, record).ToArray();
                if (info.Length == 0 && mode == Query.BindStrategyMode.Differences)
                {
                    nameFieldValue = descriptor.Name;
                }
                else
                {
                    nameFieldValue = _entityLoader.FindNameConverter.Convert(info);
                }
            }
            else
            {
                var nameFieldIndex = record.Descriptor.GetFieldPosition(_entityLoader.FindNameProperties.FirstOrDefault());
                if (nameFieldIndex >= 0)
                {
                    nameFieldValue = record[nameFieldIndex];
                }
                else if (mode == Query.BindStrategyMode.Differences)
                {
                    nameFieldValue = descriptor.Name;
                }
            }
            descriptor.Id          = idFieldIndex >= 0 ? record[idFieldIndex] : mode == Query.BindStrategyMode.Differences ? descriptor.Id : 0;
            descriptor.Name        = nameFieldValue;
            descriptor.Description = descriptionFieldIndex >= 0 ? record[descriptionFieldIndex] : mode == Query.BindStrategyMode.Differences ? descriptor.Description : string.Empty;
            if (record.Descriptor.Contains("ActivatedDate") && record.Descriptor.Contains("ExpiredDate"))
            {
                DateTimeOffset activatedDate = record["ActivatedDate"];
                DateTimeOffset?expiredDate   = record["ExpiredDate"];
                var            isActive      = activatedDate < ServerData.GetDateTimeOffSet() && !(expiredDate.HasValue && (ServerData.GetDateTimeOffSet() > expiredDate));
                var            isExpired     = expiredDate.HasValue && (ServerData.GetDateTimeOffSet() > expiredDate);
                descriptor.ConfigureStatusControl(isActive, isExpired);
            }
            if (descriptor is BusinessEntityDescriptor)
            {
                var businessDescritor = (BusinessEntityDescriptor)descriptor;
                businessDescritor.RecordKey = recordKeyFactory.Create(_entityLoader.DataModelTypeName, record);
            }
            var changedProperties = new List <string> {
                "Id",
                "Name",
                "Description",
                "IsActive",
                "IsExpired"
            };

            if (descriptor is IBindableEntityDescriptor)
            {
                changedProperties = changedProperties.Union(((IBindableEntityDescriptor)descriptor).Bind(record, mode)).ToList();
            }
            return(changedProperties.ToArray());
        }
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 public BaseSimpleTraceableModel()
 {
     CreatedDate = ServerData.GetDateTimeOffSet();
 }