public ValidationResult Update(Domain.Entities.Person entity)
        {
            if (!entity.IsValid())
            {
                return(entity);
            }

            var newPersonCpf = entity.Documents.FirstOrDefault(x => x.DocumentTypeId == Domain.Enum.EDocumentType.CPF);

            if (newPersonCpf == null)
            {
                entity.AddError($"CPF não encontrado - Pessoa a ser cadastrada: {entity.FirstName}");
                return(entity);
            }

            var currentCPFSaved = _personRepository.GetByCPF(newPersonCpf.DocumentNumber);

            //TODO - validate all documents, in a later moment
            if (currentCPFSaved != null && currentCPFSaved.Id != entity.Id)
            {
                entity.AddError($"CPF {newPersonCpf.DocumentNumber} já cadastrado");
                return(entity);
            }

            _personRepository.Update(entity);

            return(entity);
        }
        public Domain.Entities.Person Add(Domain.Entities.Person entity)
        {
            if (!entity.IsValid())
            {
                return(entity);
            }

            var newPersonCpf = entity.Documents.FirstOrDefault(x => x.DocumentTypeId == Domain.Enum.EDocumentType.CPF);

            if (newPersonCpf == null)
            {
                entity.AddError($"CPF não encontrado - Pessoa a ser cadastrada: {entity.FirstName} {entity.MiddleName} {entity.LastName} ");
                return(entity);
            }

            //TODO - validate all documents, in a later moment
            if (_personRepository.GetByCPF(newPersonCpf.DocumentNumber) != null)
            {
                entity.AddError($"CPF {newPersonCpf.DocumentNumber} já cadastrado");
                return(entity);
            }

            _personRepository.Add(entity);

            return(entity);
        }