public async Task <bool> SaveChanges() { FillCities(ref _supplierValue); PROVEE1 provee1 = _supplierMapper.Map <SupplierPoco, PROVEE1>(_supplierValue); PROVEE2 provee2 = _supplierMapper.Map <SupplierPoco, PROVEE2>(_supplierValue); bool retValue = false; try { // TODO: Reverse. using (IDbConnection connection = _sqlExecutor.OpenNewDbConnection()) { using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { string value = string.Format(TipoProveSelect, provee1.NUM_PROVEE); IEnumerable <TIPOPROVE> prove = await connection.QueryAsync <TIPOPROVE>(value).ConfigureAwait(false); var tipoProve = prove.FirstOrDefault <TIPOPROVE>(); // here we shall already have the correct change in the VehiclePoco. It shall already validated. // now we have to add the new connection. try { retValue = await connection.UpdateAsync(provee1).ConfigureAwait(false); retValue = retValue && await connection.UpdateAsync(provee2).ConfigureAwait(false); retValue = retValue && await SaveContacts(connection).ConfigureAwait(false); retValue = await SaveBranches(connection).ConfigureAwait(false) && retValue; transactionScope.Complete(); } catch (TransactionException ex) { transactionScope.Dispose(); string message = "Transaction Scope Exception in Vehicle Update. Reason: " + ex.Message; logger.Error(message); DataLayerExecutionException dataLayer = new DataLayerExecutionException(message); throw dataLayer; } catch (System.Exception other) { logger.Error(other); return(retValue); } } } } catch (System.Exception e) { logger.Error(e); } return(retValue); }
public async Task <bool> DeleteAsyncData() { bool value = false; // in deleting things there is no need to remap every field. var code = _supplierValue.NUM_PROVEE; // theeris no need of this is slow. PROVEE1 proveedor1 = new PROVEE1 { NUM_PROVEE = code }; PROVEE2 proveedor2 = new PROVEE2 { NUM_PROVEE = code }; using (IDbConnection connection = _sqlExecutor.OpenNewDbConnection()) { if (connection == null) { return(false); } using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { value = await connection.DeleteAsync(proveedor1); value = value && await connection.DeleteAsync(proveedor2); // delete branches var queryString = string.Format(DeleteDelegaciones, proveedor1.NUM_PROVEE); var tmpValue = await connection.ExecuteAsync(queryString) > 0; value = value && tmpValue; queryString = string.Format(DeleteContactos, proveedor1.NUM_PROVEE); value = await connection.ExecuteAsync(queryString) > 0; // delete transactionScope.Complete(); } catch (System.Exception e) { transactionScope.Dispose(); throw new DataLayerException(e.Message, e); } finally { connection.Close(); } } } return(value); }
public async Task <bool> Save() { // set reference to city dto. FillCities(ref _supplierValue); PROVEE1 provee1 = _supplierMapper.Map <SupplierPoco, PROVEE1>(_supplierValue); PROVEE2 provee2 = _supplierMapper.Map <SupplierPoco, PROVEE2>(_supplierValue); provee1.NUM_PROVEE = provee2.NUM_PROVEE; logger.Debug("Saving supplier " + provee2.NUM_PROVEE); bool retValue = false; using (IDbConnection connection = _sqlExecutor.OpenNewDbConnection()) { using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { int ret = await connection.InsertAsync(provee1); retValue = ret == 0; ret = await connection.InsertAsync(provee2); retValue = retValue && await SaveBranches(connection); retValue = retValue && await SaveContacts(connection); transactionScope.Complete(); retValue = retValue && (ret == 0); } catch (TransactionException ex) { string message = "Transaction Scope Exception in Supplier Insertion. Reason: " + ex.Message; DataLayerExecutionException dataLayer = new DataLayerExecutionException(message); logger.Error(ex, "Exception while saving a supplier. Transaction Scope saving."); throw dataLayer; } catch (System.Exception other) { string message = "Error in a Supplier. Reason: " + other.Message; logger.Error(other, "Exception while saving a supplier.."); DataLayerExecutionException dataLayer = new DataLayerExecutionException(message); throw dataLayer; } } } return(retValue); }
/// <inheritdoc /> /// <summary> /// This function simply generates a new identifier. /// </summary> /// <returns></returns> public string GetNewId() { var id = string.Empty; var provee = new PROVEE1(); using (var dbConnection = SqlExecutor.OpenNewDbConnection()) { if (dbConnection != null) { id = dbConnection.UniqueId(provee); } } return(id); }
public void Should_Enforce_ChangeRuleBehaviour() { var dataObject = new PROVEE1(); dataObject.CP = "082788"; dataObject.PROV = "39"; var changeRule = new ChangeRuleBehavior { DataObject = dataObject }; //changeRule.Execute(); var result = changeRule.DataObject as PROVEE1; Assert.AreEqual("08", result.PROV); }
public async Task <bool> DeleteAsyncData() { bool value = false; PROVEE1 proveedor1 = _supplierMapper.Map <SupplierPoco, PROVEE1>(_supplierValue); PROVEE2 proveedor2 = _supplierMapper.Map <SupplierPoco, PROVEE2>(_supplierValue); using (IDbConnection connection = _sqlExecutor.OpenNewDbConnection()) { using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { value = await connection.DeleteAsync(proveedor1); value = value && await connection.DeleteAsync(proveedor2); // delete branches var queryString = string.Format(DeleteDelegaciones, proveedor1.NUM_PROVEE); var tmpValue = await connection.ExecuteAsync(queryString) > 0; value = value && tmpValue; queryString = string.Format(DeleteContactos, proveedor1.NUM_PROVEE); value = await connection.ExecuteAsync(queryString) > 0; // delete transactionScope.Complete(); } catch (System.Exception e) { transactionScope.Dispose(); throw new DataLayerException(e.Message, e); } finally { connection.Close(); } } } return(value); }