How to map two LIST properties using Automapper

3

RegisterNewPessoaCommand Class

public class RegisterNewPessoaCommand {

 public RegisterNewPessoaCommand(PessoaNatureza pessoaNatureza, 
                                 PessoaFisica pessoaFisica, 
                                 PessoaJuridica pessoaJuridica, 
                                 PessoaGenerico pessoaGenerico, List<PessoaContato> pessoasContatos) {
  PessoaNatureza = pessoaNatureza;
  PessoaFisica = pessoaFisica;
  PessoaJuridica = pessoaJuridica;
  PessoaGenerico = pessoaGenerico;
  PessoasContatos = pessoasContatos;

 }

}

PersonViewModel class

 public class PessoaViewModel {
 public List <PessoaDocumentoViewModel> PessoasDocumentosViewModel {
  get;
  set;
 }
}

PersonContact class

public class PessoaContato : Entity
{
    public int ContatoTipoId { get; private set; }
    public int PessoaId { get; private set; }
    public string Contato { get; private set; }
    public string Detalhes { get; private set; }
    public bool ContatoPrincipal { get; private set; }

    public virtual Pessoa Pessoa { get; private set; }
    public virtual ContatoTipo ContatoTipo{ get; private set; }

    protected PessoaContato() { }

    public PessoaContato(int contatoTipoId, int pessoaId, string contato, string detalhes, bool contatoPrincipal)
    {
        ContatoTipoId = contatoTipoId;
        PessoaId = pessoaId;
        Contato = contato;
        Detalhes = detalhes;
        ContatoPrincipal = contatoPrincipal;

    }
}

Class PersonContactViewModel

public class PessoaContatoViewModel
{
    [Key]
    public int Id { get; set; }

    public int PessoaId { get; set; }

    [DisplayName("Tipo de Contato")]
    [Required(ErrorMessage = "Escolha um Tipo de Contato")]
    public int ContatoTipoId { get; set; }
    [DisplayName("Tipo de Contato")]
    public string ContatoTipoDescricao { get; set; }
    [DisplayName("Tipos de Contato")]
    public IEnumerable<SelectListItem> ContatosTipos { get; set; }

    [DisplayName("Contato")]
    [Required(ErrorMessage = "O campo Contato é obrigatório")]
    [MaxLength(100, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")]
    public string Contato { get; set; }

    [DisplayName("Detalhes")]
    [MaxLength(150, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")]
    public string Detalhes { get; set; }

    [DisplayName("Contato Principal")]
    public bool ContatoPrincipal { get; set; }
}

I have classes PessoaViewModel and RegisterNewPessoaCommand where I need to map the property PessoasDocumentosViewModel to List<PessoaContato> pessoasContatos , one is PessoaViewModel list and the other is PessoaContato list and both have the same fields.

Other properties are mapped and working. I need to do a Loop and load the fields from one List to another as per the image. Does anyone know how to help me?

CreateMap<PessoaViewModel, RegisterNewPessoaCommand>()
.ConstructUsing(p => new RegisterNewPessoaCommand(
    p.PessoaNatureza,
   (p.PessoaFisicaViewModel != null ? new Domain.Models.PessoaFisica(
       p.PessoaFisicaViewModel.NomeCompleto,
       p.PessoaFisicaViewModel.Apelido,
       p.PessoaFisicaViewModel.DataNascimento,
       p.PessoaFisicaViewModel.Sexo,
       p.PessoaFisicaViewModel.EstadoCivil,
       p.PessoaFisicaViewModel.PessoaFisicaOrigem) : null
    ),
   (p.PessoaJuridicaViewModel != null ? new Domain.Models.PessoaJuridica(
       p.PessoaJuridicaViewModel.RazaoSocial,
       p.PessoaJuridicaViewModel.NomeFantasia,
       p.PessoaJuridicaViewModel.DataAbertura,
       p.PessoaJuridicaViewModel.RegimeTributario,
       p.PessoaJuridicaViewModel.PessoaJuridicaOrigem) : null

    ),
    (p.PessoaGenericoViewModel != null ? new Domain.Models.PessoaGenerico(
       p.PessoaGenericoViewModel.PessoaTipo,
       p.PessoaGenericoViewModel.CodigoInterno,
       p.PessoaGenericoViewModel.PessoaFilialId) : null
    ), 

    new List<PessoaContato>()   <========recebe as list de p.PessoasContatosViewModel  



));
    
asked by anonymous 11.09.2018 / 03:11

0 answers