{"size": 7282, "ext": "js", "max_stars_repo_path": "javascripts/modules/User.js", "max_stars_repo_name": "dcmunhoz/helpdesk", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "javascripts/modules/User.js", "max_issues_repo_name": "dcmunhoz/helpdesk", "max_issues_repo_issues_event_min_datetime": "2019-07-17T17:46:03.000Z", "max_issues_repo_issues_event_max_datetime": "2022-02-26T11:37:51.000Z", "max_forks_repo_path": "javascripts/modules/User.js", "max_forks_repo_name": "dcmunhoz/SmartDesk", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": 6, "max_forks_count": null, "avg_line_length": 18.9635416667, "max_line_length": 154, "alphanum_fraction": 0.39233727}
/**
 * Modulo que contem funções assincronas para usuários.
 */

module.exports = {
    
    /**
     * 
     * @param {object} body Contem os dados do usuário a ser salvo.
     * 
     * Salva uma nova conta.
     *  
     */
    saveAccount(body){

        return new Promise((resolve, reject)=>{

            fetch('/signup', {
                method: 'POST',
                body
            }).then(result => result.json()).then(data => {

                if(data['error']) {
                    reject(data);
                }

                resolve(data);

            });

        });

    },

    /**
     * 
     * @param {object} body Contem dados do usuários.
     * 
     * Faz o login do usuário.
     *  
     */
    login(body){

        return new Promise((resolve, reject)=>{

            fetch('/signin', {
                method: 'POST',
                body
            }).then(result => result.json() ).then(json=>{
                if(json['error']){
                    reject(json);
                }
                
                resolve();
                
            });

        });

    },

    /**
     * Pega os dados do usuário logado.
     */
    getData(){

        return new Promise((resolve, reject)=>{

            fetch('/api/user-logged').then(data => data.json()).then(json=>{

                resolve(json);

            });

        });

    },

    /**
     * 
     * @param {object} data Dados do usuário logado.
     * 
     * Retorna o nome do usuário formatado.
     * 
     */
    getUserName(data){
        let userFullName = data.full_name.split(" ");

        return (userFullName.length > 1) ? displayName = `${userFullName[0]} ${userFullName[ userFullName.length - 1 ]}` : displayName = userFullName[0] ;
            
           
    },

    /**
     * 
     * @param {integer} statusId Id do status para exibir.
     * 
     * Exibe a lista de tickets de acordo com o status informado.
     * 
     */
    getTicketList(statusId = null){

        return new Promise((resolve, reject)=>{

            fetch(`/api/tickets/list?status=${statusId}`).then(response=>response.json()).then(data=>{
                if(data.error){
                    console.clear();
                    reject(data);
                }

                resolve(data);
            });

        });

    },

    /**
     * 
     * @param {object} body Objeto com dados para login
     * 
     * Login na administração
     *  
     */
    loginAdmin(body){

        return new Promise((resolve, reject)=>{
            
            fetch('/admin/signin', {
                method:'POST',
                body
            }).then(result=>result.json()).then(data=>{

                if(data['error']){
                    reject(data);
                }

                resolve(data);

            });
            
        });

    },

    /**
     * 
     * @param {string} search pesquisa de usuário. 
     * 
     * Retorna a lista de usuários.
     * 
     */
    getUserList(search = null, active = true){

        return new Promise((resolve, reject)=>{

            let data = {
                search,
                active
            }

            fetch('/api/admin/users/list', {
                headers: {
                    "Content-Type": "application/json"
                },
                method: 'POST',
                body: JSON.stringify(data)

            }).then(result=>{

                if(result.ok){
                    return result.json();
                }

                reject();

            }).then(data=>{
                resolve(data);
            });

        });

    },

    /**
     * 
     * Quantidade de usuários
     * 
     */
    getUserQtd(){

        return new Promise((resolve, reject)=>{

            fetch('/api/admin/users/qtd').then(result=>{

                if(result.ok){
                    return result.json();
                }

                reject();
            }).then(data=>{
                resolve(data);
            });

        });

    },

    /**
     * 
     * Adiciona um novo usuário pela administração.
     * 
     */
    newUser(body){

        return new Promise((resolve, reject)=>{

            fetch("/admin/user/new",{
                method: "POST",
                body
            }).then(result => result.json()).then(data=>{

                if ( data['error'] ) {

                    reject(data);

                }

                resolve(data);
                

            });            

        });

    },

    /**
     * 
     * @param {Integer} idUser Id do usuário
     */
    find(idUser){

        return new Promise((resolve, reject)=>{

            fetch(`/admin/user/${idUser}/find`).then(result => result.json()).then(data=>{

                resolve(data);

            });

        });

    },
    
    update(body){

        return new Promise((resolve, reject)=>{


            fetch(`/admin/user/${body.get('id_user')}`, {
                method: "POST",
                body
            }).then(result => result.json()).then(data=>{
                
                if(data['error']){
                    reject(data);
                }

                resolve(data);

            });

        });

    },

    getTeam(){

        return new Promise((resolve, reject) => {

            fetch(`/api/user/team`).then(result=>result.json()).then(data => {

                if(data['error']){
                    reject(data);
                }

                resolve(data);

            });

        });

    },

    /**
     * Pega os locais vinculados ao usuário
     */
    getUserLocal(userId){

        return new Promise((resolve, reject) => {

            fetch(`/api/admin/user/${userId}/getLocals`).then(result => result.json()).then(data=>{

                if(data['error']){
                    reject(data);
                }

                resolve(data);

            });

        }); 

    },

    /**
     * Pega os setores vinculados ao usuário
     */
    getUserSector(userId){

        return new Promise((resolve, reject) => {

            fetch(`/api/admin/user/${userId}/getSectors`).then(result => result.json()).then(data=>{

                if(data['error']){
                    reject(data);
                }

                resolve(data);

            });

        }); 

    },

    /**
     * Desativa um usuário
     */
    disable(idUser){

        return new Promise((resolve, reject) => {

            fetch(`/api/admin/user/${idUser}/disable`, {
                method: 'PUT'
            }).then(response => response.json()).then(data => {

                if(data['error']){
                    reject(data);
                }

                resolve(data);

            });

        });

    },

    /**
     * Altera a senha do usuário.
     */
    resetPassword(idUser, body){

        return new Promise((resolve, reject) => {

            fetch(`/api/user/${idUser}/change-password`,{
                method: 'POST',
                body
            }).then(result => result.json()).then(data => {

                if (data['error']) {
                    reject(data);                    
                }

                resolve(data);

            });
        });

    }

}