public int SaveOrUpdate(CurrencyRate entity) { if (String.IsNullOrEmpty(entity.FromCurrency) || String.IsNullOrEmpty(entity.ToCurrency) || entity.Rate < 0) { throw new ArgumentException(); } if (entity.ID > 0 && entity.Rate == 0) { return(Delete(entity.ID)); } var dbEntity = new DbCurrencyRate { Id = entity.ID, FromCurrency = entity.FromCurrency.ToUpper(), ToCurrency = entity.ToCurrency.ToUpper(), Rate = entity.Rate, CreateOn = entity.CreateOn == DateTime.MinValue ? DateTime.UtcNow : entity.CreateOn, CreateBy = entity.CreateBy == Guid.Empty ? _securityContext.CurrentAccount.ID : entity.CreateBy, LastModifedOn = DateTime.UtcNow, LastModifedBy = _securityContext.CurrentAccount.ID, TenantId = TenantID }; CrmDbContext.Update(dbEntity); CrmDbContext.SaveChanges(); return(dbEntity.Id); }
public List <CurrencyRate> SetCurrencyRates(List <CurrencyRate> rates) { using var tx = CrmDbContext.Database.BeginTransaction(); var items = Query(CrmDbContext.CurrencyRate).AsNoTracking(); CrmDbContext.RemoveRange(items); foreach (var rate in rates) { var itemToInsert = new DbCurrencyRate { FromCurrency = rate.FromCurrency.ToUpper(), ToCurrency = rate.ToCurrency.ToUpper(), Rate = rate.Rate, CreateBy = _securityContext.CurrentAccount.ID, CreateOn = DateTime.UtcNow, LastModifedBy = _securityContext.CurrentAccount.ID, LastModifedOn = DateTime.UtcNow, TenantId = TenantID }; CrmDbContext.CurrencyRate.Add(itemToInsert); CrmDbContext.SaveChanges(); rate.ID = itemToInsert.Id; } tx.Commit(); return(rates); }