예제 #1
0
        public async Task <int> RegisterProperty(PropertyViewModel propertyViewModel, List <IFormFile> imagens)
        {
            var property = Mapper.PropertyMap(propertyViewModel);

            property.Detail  = Mapper.DetailMap(propertyViewModel.Detalhe);
            property.Address = Mapper.AddressMap(propertyViewModel.Endereco);

            if (!ExecuteValidation(new PropertyValidation(), property))
            {
                return(0);
            }

            var insertedPropertyId = await _propertyRepository.Insert(property);

            property.Detail.PropertyId  = insertedPropertyId;
            property.Address.PropertyId = insertedPropertyId;

            var insertedAddressId = await _addressRepository.Insert(property.Address);

            var insertedDetailId = await _detailsRepository.Insert(property.Detail);

            await _propertyRepository.UpdateAddressAndDetail(insertedAddressId, insertedDetailId, insertedPropertyId);

            foreach (var arquivo in imagens)
            {
                PropertyImage novaImagem = new()
                {
                    Active       = true,
                    FileId       = Guid.NewGuid(),
                    FileType     = arquivo.ContentType,
                    Name         = arquivo.FileName,
                    PropertyId   = insertedPropertyId,
                    RegisterDate = DateTime.Now
                };

                await FileHelper.CreateFile(arquivo, novaImagem.FileId.ToString());

                await _imageRepository.Insert(novaImagem);
            }



            return(insertedPropertyId);
        }