private void MapToAudit(SubscriptionTypeRule dbentity, SubscriptionTypeRuleViewModel model) { bool hasChanged = false; if ( (dbentity.AmountRand != model.AmountRand) || (dbentity.ActiveMonths != model.ActiveMonths) ) { hasChanged = true; } var entity = model.ToEntity(dbentity); entity.SubscriptionTypeRuleAudits .ToList() .ForEach(a => a.IsActive = false); if (hasChanged) { var audit = entity.ToAuditEntity(); entity.SubscriptionTypeRuleAudits.Add(audit); } }
public async Task <SaveResult> SaveEntity(SubscriptionTypeRuleViewModel viewModel) { SaveResult saveResult = new SaveResult(); Dictionary <bool, string> dictionary = new Dictionary <bool, string>(); var entity = new SubscriptionTypeRule(); try { if (viewModel.Id != 0) { if (_context.SubscriptionTypeRule.IgnoreQueryFilters().Any(a => a.Id == viewModel.Id)) { entity = await _context.SubscriptionTypeRule .Include(a => a.SubscriptionTypeRuleAudits) .IgnoreQueryFilters().FirstOrDefaultAsync(a => a.Id == viewModel.Id); } MapToAudit(entity, viewModel); _context.SubscriptionTypeRule.Update(entity); } else { MapToAudit(entity, viewModel); _context.SubscriptionTypeRule.Add(entity); } await _context.SaveChangesAsync(); if (entity.Id > 0) { saveResult.IsSuccess = true; saveResult.Id = entity.Id; } } catch (DbUpdateException upDateEx) { var results = upDateEx.GetSqlerrorNo(); string msg = results == (int)SqlErrNo.FK ? ConstEntity.MissingValueMsg : ConstEntity.UniqueKeyMsg; saveResult = dictionary.GetValidateEntityResults(msg).ToSaveResult(); } catch (Exception ex) { saveResult.Message = CrudError.SaveErrorMsg; } return(saveResult); }