/// <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); }
/// <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; } }
/// <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(); }