public override void OnAdded(DebtModel model, Debt entity) { base.OnAdded(model, entity); // update Id, because it would be used for record model.Id = entity.Id; // add new penalties foreach (var newPenalty in model.Penalties.Where(e => !entity.DebtPenalties.Any(p => p.Id == e.Id))) { var debtPenalty = new DebtPenalty() { Date = newPenalty.Date, Description = newPenalty.Description, Value = newPenalty.Value, DebtId = entity.Id }; _context.DebtPenalties.Add(debtPenalty); _historyService.WriteHistory(debtPenalty, Data.Enums.ActionType.Add, entity.UserId); } // create record for debt if storage is provided if (model.StorageId.HasValue && model.StorageId > 0) { _recordService.CreateForDebt(model); } // save changes SaveChanges(); }
public override void OnUpdated(DebtModel oldModel, DebtModel model) { base.OnUpdated(oldModel, model); // get from database var dbEntity = Entities.Include(_ => _.DebtPenalties).FirstOrDefault(_ => _.Id == model.Id); // update existing penalties foreach (var existingPenalty in dbEntity.DebtPenalties.ToList()) { var penaltyModel = model.Penalties.FirstOrDefault(_ => _.Id == existingPenalty.Id); if (penaltyModel != null) { existingPenalty.Date = penaltyModel.Date; existingPenalty.Description = penaltyModel.Description; existingPenalty.Value = penaltyModel.Value; _historyService.WriteHistory(existingPenalty, Data.Enums.ActionType.Update, dbEntity.UserId); } else { _historyService.WriteHistory(existingPenalty, Data.Enums.ActionType.Delete, dbEntity.UserId); _context.DebtPenalties.Remove(existingPenalty); } } // add new penalties foreach (var newPenalty in model.Penalties.Where(e => !dbEntity.DebtPenalties.Any(p => p.Id == e.Id))) { var debtPenalty = new DebtPenalty() { Date = newPenalty.Date, Description = newPenalty.Description, Value = newPenalty.Value, DebtId = dbEntity.Id }; _context.DebtPenalties.Add(debtPenalty); _historyService.WriteHistory(debtPenalty, Data.Enums.ActionType.Add, dbEntity.UserId); } // save changes SaveChanges(); }