public async Task <int> UpdateAsync(bool fireOnAfterSaveData = true, bool validateData = false, TransactionObject transaction = null)
 {
     return(await Task.Run(() => this.Update(fireOnAfterSaveData, validateData, transaction)));
 }
        public int Update(bool fireOnAfterSaveData = true, bool validateData = false, TransactionObject transaction = null)
        {
#if !PCL
            var _table    = TableDefinition.GetTableDefinition(typeof(T));
            var _function = _table.DefaultDataFunction;

            if (validateData)
            {
                if (!this.OnValidateData())
                {
                    return(0);
                }
            }

            var _ret = _function.Update(this, transaction);

            ThrowException(_ret);

            if (fireOnAfterSaveData)
            {
                this.OnAfterSaveData(new NotifyRecordChangesEventArgs(_ret.RecordsAffected, _ret.ChangeType, transaction));
            }

            return(_ret.RecordsAffected);
#else
            return(0);
#endif
        }
 public async Task <int> InsertAsync(bool ignoreAutoIncrementField = true, bool fireOnAfterSaveData = true, bool validateData = false, TransactionObject transaction = null)
 {
     return(await Task.Run(() => this.Insert(ignoreAutoIncrementField, fireOnAfterSaveData, validateData, transaction)));
 }
        public int Insert(bool ignoreAutoIncrementField = true, bool fireOnAfterSaveData = true, bool validateData = false, TransactionObject transaction = null)
        {
#if !PCL
            var _table    = TableDefinition.GetTableDefinition(typeof(T));
            var _function = _table.DefaultDataFunction;

            if (validateData)
            {
                if (!this.OnValidateData())
                {
                    return(0);
                }
            }

            var _ret = _function.Insert(this, ignoreAutoIncrementField, transaction);

            ThrowException(_ret);

            if (_ret.ReturnStatus == CrudStatus.Ok && _ret.ChangeType == SqlStatementsTypes.Insert)
            {
                this.SetSelfColumnsIds(_ret.ReturnData);
            }

            if (fireOnAfterSaveData)
            {
                this.OnAfterSaveData(new NotifyRecordChangesEventArgs(_ret.RecordsAffected, _ret.ChangeType, transaction));
            }

            return(_ret.RecordsAffected);
#else
            return(-1);
#endif
        }
 public async Task <bool> SaveChangesAsync(bool ignoreAutoIncrementAttribute = true, FireEvent fireEvent = FireEvent.OnBeforeAndAfter, bool doNotUpdateWhenExists = false, bool validateData = false, TransactionObject transaction = null)
 {
     return(await Task.Run(() => this.SaveChanges(ignoreAutoIncrementAttribute, fireEvent, doNotUpdateWhenExists, validateData, transaction)));
 }
        /// <summary>
        /// Save current changes on object
        /// </summary>
        /// <param name="ignoreAutoIncrementAttribute">if true, doesn't include autoincrement or backend calculated fields on insert statement. Defaults to true</param>
        /// <param name="fireEvent">if true, fire the AfterSaveData event. Defaults to true</param>
        /// <param name="doNotUpdateWhenExists">if true, doesn't fire the update statement when a register already exists in the database. Defaults to false</param>
        /// <param name="validateData"></param>
        /// <returns>true if object is saved on database, otherwise false</returns>
        public bool SaveChanges(bool ignoreAutoIncrementAttribute = true, FireEvent fireEvent = FireEvent.OnBeforeAndAfter, bool doNotUpdateWhenExists = false, bool validateData = false, TransactionObject transaction = null)
        {
#if !PCL
            var _table    = TableDefinition.GetTableDefinition(typeof(T));
            var _function = _table.DefaultDataFunction;

            if (validateData)
            {
                if (!this.OnValidateData())
                {
                    return(false);
                }
            }

            if (fireEvent == FireEvent.OnBeforeAndAfter || fireEvent == FireEvent.OnBeforeSave)
            {
                this.OnBeforeSaveData(new NotifyRecordChangesEventArgs(0, SqlStatementsTypes.UnknownStatement, transaction));
            }

            var _ret = _function.SaveChanges(this, ignoreAutoIncrementAttribute, doNotUpdateWhenExists, transaction);

            ThrowException(_ret);

            if (_ret.ReturnStatus == CrudStatus.Ok && _ret.ChangeType == SqlStatementsTypes.Insert)
            {
                this.SetSelfColumnsIds(_ret.ReturnData);
            }

            if (fireEvent == FireEvent.OnBeforeAndAfter || fireEvent == FireEvent.OnAfterSave)
            {
                this.OnAfterSaveData(new NotifyRecordChangesEventArgs(_ret.RecordsAffected, _ret.ChangeType, transaction));
            }

            return(_ret.ReturnStatus == CrudStatus.Ok);
#else
            return(false);
#endif
        }
 public async Task <CrudReturn> DeleteAllAsync <TDatabaseObject>(DboCommand command, TransactionObject transaction = null)
 {
     return(await Task.Run(() => this.DeleteAll <TDatabaseObject>(command, transaction)));
 }
Esempio n. 8
0
 public NotifyRecordChangesEventArgs(int recordsAffected, SqlStatementsTypes changeType, TransactionObject transaction)
 {
     ChangeType      = changeType;
     Transaction     = transaction;
     RecordsAffected = recordsAffected;
 }
        public CrudReturn Insert <TDatabaseObject>(TDatabaseObject objectToInsert, bool ignoreAutoIncrementField = true, TransactionObject transaction = null) where TDatabaseObject : IDatabaseObject
        {
            var _table = TableDefinition.GetTableDefinition(typeof(TDatabaseObject));

            var _ret = new CrudReturn
            {
                ReturnStatus    = CrudStatus.Ok,
                RecordsAffected = -1,
                ChangeType      = SqlStatementsTypes.Insert,
                ReturnMessage   = "Dados atualizados com sucesso!"
            };

            var _transaction = transaction ?? new TransactionObject(true);

            try
            {
                if (_transaction.Connection == null)
                {
                    _transaction.SetConnection(_table.DefaultDataFunction.Connection);
                }

                var _sql          = "";
                var _data         = objectToInsert.ToDictionary();
                var _backEndField = _table.Fields.Select(f => f.Value).FirstOrDefault(f => f.AutomaticValue != AutomaticValue.None);

                if (_backEndField != null)
                {
                    _sql = _table.GetSqlInsert(ignoreAutoIncrementField);
                    int _lastId = this.DoInsert(_table, _transaction.Connection, _sql, _data);
                    objectToInsert.SetObjectFieldValue(_backEndField.Name, _lastId);
                    _ret.RecordsAffected = 1;
                }
                else
                {
                    objectToInsert.SetIdFields();
                    _sql = _table.GetSqlInsert(ignoreAutoIncrementField);
                    _ret.RecordsAffected = _transaction.Connection.Execute(_sql, _data);
                }

                _ret.ReturnData = objectToInsert;

                if (_transaction.AutoCommit)
                {
                    _transaction.Commit();
                    _transaction.Dispose();
                }
            }
            catch (Exception ex)
            {
                _ret.ReturnMessage = string.Format("{0}\r\n{1}", ex.Message, ex.StackTrace);
                _ret.ReturnStatus  = CrudStatus.Fail;
            }

            return(_ret);
        }
Esempio n. 10
0
 public async Task <CrudReturn> DeleteAsync <TDatabaseObject>(TDatabaseObject objectToDelete, TransactionObject transaction = null) where TDatabaseObject : IDatabaseObject
 {
     return(await Task.Run(() => this.Delete <TDatabaseObject>(objectToDelete, transaction)));
 }
Esempio n. 11
0
 public async Task <CrudReturn> InsertAsync <TDatabaseObject>(TDatabaseObject objectToInsert, bool ignoreAutoIncrementField = true, TransactionObject transaction = null) where TDatabaseObject : IDatabaseObject
 {
     return(await Task.Run(() => this.Insert(objectToInsert, ignoreAutoIncrementField, transaction)));
 }
Esempio n. 12
0
 public async Task <CrudReturn> SaveChangesAsync <TDatabaseObject>(TDatabaseObject objectToSave, bool ignoreAutoIncrementField = true, bool doNotUpdateWhenExists = false, TransactionObject transaction = null) where TDatabaseObject : IDatabaseObject
 {
     return(await Task.Run(() => this.SaveChanges <TDatabaseObject>(objectToSave, ignoreAutoIncrementField, doNotUpdateWhenExists, transaction)));
 }
 public static async Task <int> DeleteAllAsync(Expression <Func <T, bool> > predicate = null, TransactionObject transaction = null)
 {
     return(await Task.Run(() => DeleteAll(predicate, transaction)));
 }
        public bool Delete(bool fireBeforeDeleteDataEvent = true, bool fireAfterDeleteDataEvent = true, TransactionObject transaction = null)
        {
#if !PCL
            var _table    = TableDefinition.GetTableDefinition(typeof(T));
            var _function = _table.DefaultDataFunction;

            if (fireBeforeDeleteDataEvent)
            {
                this.OnBeforeDeleteData(new NotifyRecordChangesEventArgs(0, SqlStatementsTypes.Delete, transaction));
            }

            var _ret = _function.Delete(this, transaction);

            ThrowException(_ret);

            if (fireAfterDeleteDataEvent)
            {
                this.OnAfterDeleteData(new NotifyRecordChangesEventArgs(_ret.RecordsAffected, _ret.ChangeType, transaction));
            }

            return(_ret.RecordsAffected > 0);
#else
            return(true);
#endif
        }
 public async Task <bool> DeleteAsync(bool fireBeforeDeleteDataEvent = true, bool fireAfterDeleteDataEvent = true, TransactionObject transaction = null)
 {
     return(await Task.Run(() => this.Delete(fireBeforeDeleteDataEvent, fireAfterDeleteDataEvent, transaction)));
 }