示例#1
0
        private PersonAddress GeneratePersonAddress(Guid personId)
        {
            if (null == ClientContactAddress)
            {
                throw new ArgumentNullException("No Address data !");
            }

            //Person Address

            //string landmark, Guid? countyId, bool preferred, decimal? lat, decimal? lng, Guid personId

            var personAddress = PersonAddress.Create(ClientContactAddress.Landmark, ClientContactAddress.CountyId, ClientContactAddress.Preferred, ClientContactAddress.Lat, ClientContactAddress.Lng, personId, ClientContactAddress.SubCountyId, ClientContactAddress.WardId);

            if (!string.IsNullOrWhiteSpace(ClientContactAddress.AddressId))
            {
                personAddress.Id = new Guid(ClientContactAddress.AddressId);
            }

            return(personAddress);
        }
        public async Task <int> Handle(CreatePersonCommand request, CancellationToken cancellationToken)
        {
            if (await _unitOfWork.PersonRepository.AnyAsync(x => x.PersonalNumber == request.PersonalNumber.Trim() && !x.IsDeleted, cancellationToken))
            {
                throw new AlreadyExistsException(
                          StringResource.Person,
                          StringResource.PersonalNumber,
                          request.PersonalNumber);
            }


            var city = await _unitOfWork.CityRepository.GetSingleAsync(x => x.Id == request.CityId && !x.IsDeleted, cancellationToken);

            //Image saving here
            var imgPath = string.Empty;

            if (request.Image != null)
            {
                imgPath = await _fileService.Upload(request.Image);
            }

            var entity = Person.Create(
                Name.Create(
                    request.FirstName,
                    request.LastName),
                PersonalNumber.Create(
                    request.PersonalNumber),
                request.BirthDate,
                PersonAddress.Create(
                    city),
                imgPath,
                request.Gender
                );


            await _unitOfWork.PersonRepository.AddAsync(entity, cancellationToken);

            await _unitOfWork.SaveChangesAsync(cancellationToken);

            return(entity.Id);
        }