public OTransaction saveTransaction(OTransaction transaction) { // Validations if (transaction == null) { throw new Exception("ERROR: Transaction null"); } // Get model and modify properties Transaction model; Transaction modelBeforeEdited = null; if (transaction.id.HasValue) { model = getByIdEdition(transaction.id.Value); modelBeforeEdited = model; } else { model = new Transaction(); } model.tAmount = transaction.amount; model.tCategoryId = transaction.category.id.Value; model.tDate = DateTime.ParseExact(transaction.date, "d'/'M'/'yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None); model.tDescription = transaction.description; model.tUserId = transaction.userId; model.tVaultId = transaction.vaultId; // Update or Add if is a new one if (transaction.id.HasValue) { context.Transactions.Update(model); } else { context.Transactions.Add(model); } context.SaveChanges(); context.Entry(model).Reference(t => t.CategoryNavigation) .Query() .Include(c => c.categoryTypeNavigation).Load(); // Update vault if necessary if (transaction.vaultId.HasValue) { VaultManager vaultManager = new VaultManager(context); vaultManager.updateVaultAmount(model, modelBeforeEdited); } return(convert(model)); }
public bool delete(int transactionId) { bool deleted = false; Transaction transaction = getByIdEdition(transactionId); int cagegoryTypeId = transaction.CategoryNavigation.categoryTypeNavigation.ctId.Value; if (cagegoryTypeId == (int)CategoryTypesId.VaultsIncomes || cagegoryTypeId == (int)CategoryTypesId.VaultsExpenses) { VaultManager vaultManager = new VaultManager(context); vaultManager.updateVaultAmount(transaction, null, true); } context.Transactions.Remove(transaction); context.SaveChanges(); deleted = true; return(deleted); }