1
resposta

Multi Cadastros

Boa tarde senhores,

Estou desenvolvendo um sistema de Cliente com cadastros independentes de informações de acordo com a seguinte estrutura:

client.component = Dados Pessoais phone.component = Telefones do Cliente email.component = Emails do Cliente adress.component = Endereços do Cliente

Permitindo o cliente ter vários dados atrelados a ele.

E ai surge a Dúvida!

ao realizar o cadastro do cliente, será cadastrado também telefones, emails, e endereços, porém para cadastrar as informações complementares, preciso da ID do cliente, pois o phone, email, e adress, possui o CID para identificar a quem pertencem.

gostaria de saber o melhor fluxo para isso.

pensei em algo como:

submit_form(event) {

        event.preventDefault();

        console.log(this.new_client_data);

        this.client_service
            .cadastra(this.new_client_data)
            .subscribe(res => {

        ** GET CLIENT ID e adiciona aos Objetos seguintes **

        cadastraPhone(this.new_phone_data)
                .subscribe(res => {
            cadastraEmail(this.new_email_data)
                    .subscribe(res => {
                cadastraAdress(this.new_adress__data)
                        .subscribe(res => {
                    this.new_client_data = new ClientsComponent();
                    this.new_phone_data = new PhoneComponent();
                    this.new_email_data = new EmailComponent();
                    this.new_adress__data = new AdressComponent();
                                this.app_router.navigate(['clients/list']);
                        }, erro => console.log(erro));
                    }, erro => console.log(erro));
                }, erro => console.log(erro));
            }, erro => console.log(erro));

    } // END: submit_form()

ou então

submit_form(event) {

    let i = 0;
        event.preventDefault();

        console.log(this.new_client_data);

        this.client_service
            .cadastra(this.new_client_data)
            .subscribe(res => {
        ** GET CLIENT ID e adiciona aos Objetos seguintes **
        this.new_client_data = new ClientsComponent();
        i++;
            }, erro => console.log(erro));

     this.phone_service
            .cadastra(this.new_phone_data)
            .subscribe(res => {
        this.new_phone_data = new PhoneComponent();
        i++;
            }, erro => console.log(erro));

    this.email_service
            .cadastra(this.new_email_data)
            .subscribe(res => {
        this.new_email_data = new EmailComponent();
        i++;
            }, erro => console.log(erro));

    this.adress_service
            .cadastra(this.new_adress_data)
            .subscribe(res => {
        this.new_adress__data = new AdressComponent();
        i++;
            }, erro => console.log(erro));

    if( i == 4 ){
        this.app_router.navigate(['clients/list']);    
    }else{
        console.log("falha ao cadastrar");
    }

    } // END: submit_form()

Mas de longe não pareceram a melhor forma.... então gostaria de saber se existe uma melhor prática para fazer esse tipo de coisa...

Obrigado

1 resposta

Se você tem um dado que depende do ID gerado de outro, não tem jeito. Tem que ir no server, gravar do dado, receber o ID e só depois realizar a segunda operação.

Ou você altera seu server para enviar os dados do cliente e o restante de uma vez e lá faz essa montagem.