All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.venky.swf.plugins.mobilesignup.extensions.signup.BeforeValidateSignUp Maven / Gradle / Ivy

package com.venky.swf.plugins.mobilesignup.extensions.signup;

import com.venky.core.date.DateUtils;
import com.venky.core.util.ObjectUtil;
import com.venky.swf.db.Database;
import com.venky.swf.plugins.background.core.TaskManager;
import com.venky.swf.plugins.collab.agents.SendOtp;
import com.venky.swf.plugins.collab.extensions.beforesave.BeforeValidatePhone;
import com.venky.swf.plugins.mobilesignup.db.model.SignUp;
import com.venky.swf.plugins.mobilesignup.db.model.User;
import com.venky.swf.sql.Expression;
import com.venky.swf.sql.Operator;
import com.venky.swf.sql.Select;

public class BeforeValidateSignUp extends BeforeValidatePhone {
    static {
        registerExtension(new BeforeValidateSignUp());
    }

    @Override
    public void beforeValidate(SignUp signUp) {
        super.beforeValidate(signUp);
        if (signUp.getRawRecord().isNewRecord() && signUp.isValidated()) {
            //From user phone save.!! pre validated.
            return;
        }else if (!signUp.isValidated() && ObjectUtil.isVoid(signUp.getLastOtp())) {
            TaskManager.instance().executeAsync(new SendOtp(signUp),false);
        }else if (signUp.isValidated()) {
            if (signUp.getRawRecord().isFieldDirty("VALIDATED")){
                User user = createUser(signUp);
            }else {
                User user = signUp.getUser();
                if (user != null) {
                    if (user.getNumMinutesToKeyExpiration() < 0){
                        user.generateApiKey();
                    }
                }
            }
        }

    }

    User createUser(SignUp signUp){
        User user = signUp.getLastSignedUpUser();
        if (user != null && !user.isActive()) {
            user.deactivate();
            user = null;
        }
        boolean newUser = user == null ;
        if (newUser){
            user = Database.getTable(User.class).newRecord();
            user.setPhoneNumber(signUp.getPhoneNumber());
        }
        user.generateApiKey(false);//Cannot be logged into same account from 2 devices at the same time. Auto logout from other device.
        user.save();
        if (newUser){
            signUp.setUserId(user.getId());
        }else if (signUp.getUserId() == null ){
            SignUp last = SignUp.getRequest(user.getId(),user.getPhoneNumber(),true);
            if (!last.getRawRecord().isNewRecord()){
                //No Signup exists for the user.
                last.destroy();
            }
            signUp.setUserId(user.getId());
        }
        return user;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy