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;
         }
     }
 }