public void Editar(TransportadoraEndereco transportadoraEndereco, long idEmpresa)
        {
            var transportadoraEnderecoAntigo = _unitOfWork.TransportadoraEnderecoRepository.GetById(transportadoraEndereco.IdTransportadoraEndereco);

            if (transportadoraEnderecoAntigo == null)
            {
                throw new BusinessException("Transportadora x Endereço não encontrado");
            }

            if (transportadoraEnderecoAntigo.EnderecoArmazenagem.IdEmpresa != idEmpresa)
            {
                throw new BusinessException("Usuário não tem permissão para editar o Transportadora x Endereço");
            }

            var endereco                = _unitOfWork.EnderecoArmazenagemRepository.BuscarPorIdEPorEmpresa(transportadoraEndereco.IdEnderecoArmazenagem, idEmpresa);
            var transportadora          = _unitOfWork.TransportadoraRepository.GetById(transportadoraEndereco.IdTransportadora);
            var transportadoraEnderecos = _unitOfWork.TransportadoraEnderecoRepository.ObterPorIdEmpresa(idEmpresa);

            var transportadoraComEnderecoVinculado = transportadoraEnderecos.FirstOrDefault(x => x.IdEnderecoArmazenagem == transportadoraEndereco.IdEnderecoArmazenagem);

            if (transportadoraComEnderecoVinculado != null)
            {
                throw new BusinessException($"O endereço já se encontra vinculado a transportadora {transportadoraComEnderecoVinculado.Transportadora.RazaoSocial}");
            }

            transportadoraEnderecoAntigo.EnderecoArmazenagem   = endereco ?? throw new BusinessException($"O endereço informado não foi localizado.");
            transportadoraEnderecoAntigo.Transportadora        = transportadora ?? throw new BusinessException($"A transportadora informada não foi localizada.");
            transportadoraEnderecoAntigo.IdEnderecoArmazenagem = transportadoraEndereco.IdEnderecoArmazenagem;
            transportadoraEnderecoAntigo.IdTransportadora      = transportadoraEndereco.IdTransportadora;

            _unitOfWork.TransportadoraEnderecoRepository.Update(transportadoraEnderecoAntigo);
            _unitOfWork.SaveChanges();
        }
        public void Cadastrar(TransportadoraEndereco transportadoraEndereco, long idEmpresa)
        {
            var endereco                = _unitOfWork.EnderecoArmazenagemRepository.BuscarPorIdEPorEmpresa(transportadoraEndereco.IdEnderecoArmazenagem, idEmpresa);
            var transportadora          = _unitOfWork.TransportadoraRepository.GetById(transportadoraEndereco.IdTransportadora);
            var transportadoraEnderecos = _unitOfWork.TransportadoraEnderecoRepository.ObterPorIdEmpresa(idEmpresa);

            var transportadoraComEnderecoVinculado = transportadoraEnderecos.FirstOrDefault(x => x.IdEnderecoArmazenagem == transportadoraEndereco.IdEnderecoArmazenagem);

            if (transportadoraComEnderecoVinculado != null)
            {
                throw new BusinessException($"O endereço já se encontra vinculado a transportadora {transportadoraComEnderecoVinculado.Transportadora.RazaoSocial}");
            }

            transportadoraEndereco.EnderecoArmazenagem = endereco ?? throw new BusinessException($"O endereço informado não foi localizado.");
            transportadoraEndereco.Transportadora      = transportadora ?? throw new BusinessException($"A transportadora informada não foi localizada.");

            _unitOfWork.TransportadoraEnderecoRepository.Add(transportadoraEndereco);
            _unitOfWork.SaveChanges();
        }