public async Task <int?> AddUpdateDispositivoUsuario(Dispositivo dispositivo) { try { ICollection <Dispositivo> _dispositivos = null; Notificacao _notificacao = null; int? _result = 0; using (IUnitOfWork _unitOfWork = new TransactionScopeUnitOfWorkFactory(IsolationLevel.Serializable).Create()) { if (dispositivo.Notificacao != null) { var notificacaoId = dispositivo.Notificacao.Count > 0 ? dispositivo.Notificacao.FirstOrDefault().NotificacaoId : 0; if (notificacaoId != 0) { _notificacao = await _notificacaoRepository.GetById(notificacaoId); } } _dispositivos = await _dispositivoRepository.Search(p => p.Serial == dispositivo.Serial, x => x.Notificacao); if (_dispositivos != null && _dispositivos.Count() > 0) { var dispositivoEncontrado = _dispositivos.FirstOrDefault(); if (dispositivoEncontrado != null && !dispositivoEncontrado.Notificacao.Contains(_notificacao)) { dispositivoEncontrado.Notificacao.Add(_notificacao); } _dispositivoRepository.Update(dispositivoEncontrado); _result = _dispositivoRepository.SaveChanges(); } else { new List <Notificacao>().Add(_notificacao); dispositivo.Notificacao.Add(_notificacao); _dispositivoRepository.Add(dispositivo); _result = _dispositivoRepository.SaveChanges(); } _unitOfWork.Commit(); } return(_result); } catch (Exception e) { throw e; } }
public Int32 Edit(NOTIFICACAO item, LOG log) { using (DbContextTransaction transaction = Db.Database.BeginTransaction(IsolationLevel.ReadCommitted)) { try { item.USUARIO = null; NOTIFICACAO obj = _baseRepository.GetById(item.NOTI_CD_ID); _baseRepository.Detach(obj); _logRepository.Add(log); _baseRepository.Update(item); transaction.Commit(); return(0); } catch (Exception ex) { transaction.Rollback(); throw ex; } } }