Rev 42 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
package com.cesams.twogetskills.fragment;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.location.GnssAntennaInfo;import android.net.Uri;import android.os.Bundle;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;import androidx.lifecycle.LifecycleOwner;import android.text.TextUtils;import android.util.Log;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.View;import android.view.ViewGroup;import android.view.inputmethod.EditorInfo;import android.view.inputmethod.InputMethodManager;import android.widget.Button;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.TextView;import com.cesams.twogetskills.Configuration;import com.cesams.twogetskills.Constants;import com.cesams.twogetskills.R;import com.cesams.twogetskills.activity.MainActivity;import com.cesams.twogetskills.dao.SyncDao;import com.cesams.twogetskills.library.AesCipher;import com.cesams.twogetskills.library.Functions;import com.cesams.twogetskills.library.Http;import com.cesams.twogetskills.entity.Sync;import com.cesams.twogetskills.entity.UserLog;import com.cesams.twogetskills.preference.Preference;import com.cesams.twogetskills.room.ResultCount;import com.cesams.twogetskills.skeleton.ITwoGetSkills;import org.json.JSONException;import org.json.JSONObject;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;public class SigninFragment extends Fragment implements LifecycleOwner {//implements ITaskCallback {private final static String TAG = "C2GS - SigninFragment";private ITwoGetSkills iTwoGetSkills;private EditText mEditTextEmail;private EditText mEditTextPassword;private boolean inProgress = false;private Button mButtonSignIn;private Button mButtonSignUp;private ProgressBar mProgressBar;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setHasOptionsMenu(true);}@Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {super.onCreateOptionsMenu(menu, inflater);menu.clear();}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);iTwoGetSkills = (ITwoGetSkills) getActivity();mProgressBar = (ProgressBar) getView().findViewById(R.id.signin_progress_bar);mEditTextEmail = (EditText) getView().findViewById(R.id.signin_edittext_email);//mEditTextEmail.setText("santiago.olivera@leaderslinked.com");//mEditTextEmail.setText("efrain.yanez@leaderslinked.com");//mEditTextEmail.setText("snof@adinet.com.uy");//mEditTextEmail.setText("mmarrugo@coosalud.com");//mEditTextEmail.setText("daniela.lara@mdsmexico.com");mEditTextEmail.setOnEditorActionListener(new TextView.OnEditorActionListener() {@Overridepublic boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {mEditTextPassword.requestFocus();return true;}});mEditTextPassword = (EditText) getView().findViewById(R.id.signin_edittext_password);//mEditTextPassword.setText("Cesa2020");//mEditTextPassword.setText("Aalmiron2021");//mEditTextPassword.setText("Mmarrugo2021");//mEditTextPassword.setText("Cesa2020*");mEditTextPassword.setOnEditorActionListener(new TextView.OnEditorActionListener() {@Overridepublic boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {attemptLogin();return true;}return false;}});mButtonSignIn = (Button) getView().findViewById(R.id.signin_button_sign_in);mButtonSignIn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//Ocultar el teclado al intentar inicia sesionhideKeyboard(view);attemptLogin();}});//mButtonSignUp = (Button) getView().findViewById(R.id.signin_button_sign_up);mButtonSignUp.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://leaderslinked.com/signup"));startActivity(browserIntent);}});mEditTextEmail.setOnFocusChangeListener(new View.OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) {if(!hasFocus) {hideKeyboard(v);}}});}public void hideKeyboard(View view) {// Check if no view has focus://View view = getActivity().getCurrentFocus();try {InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);} catch (Exception e) {e.printStackTrace();}}private void attemptLogin() {if (inProgress) {return;}mEditTextEmail.setError(null);mEditTextPassword.setError(null);String email = Functions.trimNull(mEditTextEmail.getText().toString());String password = Functions.trimNull(mEditTextPassword.getText().toString());/*if(TextUtils.isEmpty(iTwoGetSkills.getPreference().getAes())) {iTwoGetSkills.reloadPreference();}*/if (TextUtils.isEmpty(email)) {mEditTextEmail.setError(getString(R.string.error_field_required));mEditTextEmail.requestFocus();return;}if (!Functions.emailcheckengine(email)) {mEditTextEmail.setError("Formato de email invalido");mEditTextEmail.requestFocus();return;}if (TextUtils.isEmpty(password)) {mEditTextPassword.setError(getString(R.string.error_field_required));mEditTextPassword.requestFocus();return;}if (!Functions.passwordStrengthCheck(password)) {mEditTextPassword.setError(getString(R.string.error_invalid_password_format));mEditTextPassword.requestFocus();return;}if(iTwoGetSkills.isConnectedInternet()) {inProgress = true;String aes = iTwoGetSkills.getPreference().getAes();mEditTextEmail.setEnabled(false);mEditTextPassword.setEnabled(false);mButtonSignUp.setEnabled(false);mButtonSignIn.setEnabled(false);iTwoGetSkills.showProgressBar();try {Log.d("AES", aes);Http http = new Http(getActivity().getCacheDir());OkHttpClient client = http.getHttpClient(false);Log.d(TAG, "URL = " + Configuration.URL_SIGNIN);RequestBody formBody = null;if(aes.isEmpty()) {formBody = new FormBody.Builder().add(Constants.POST_SIGNIN_FIELD_APPLICATION_ID, String.valueOf(Configuration.APPLICATION_ID)).add(Constants.POST_SIGNIN_FIELD_DEVICE_UUID, iTwoGetSkills.getPreference().getDeviceUuid()).add(Constants.POST_SIGNIN_FIELD_EMAIL, email).add(Constants.POST_SIGNIN_FIELD_PASSWORD, password).add(Constants.POST_SIGNIN_FIELD_DEVICE_ENCRYPTER, "") //Constants.SIGNIN_ENCRYPTER).build();} else {AesCipher encryptedEmail = AesCipher.encrypt(aes, email);AesCipher encryptedPassword = AesCipher.encrypt(aes, password);formBody = new FormBody.Builder().add(Constants.POST_SIGNIN_FIELD_APPLICATION_ID, String.valueOf(Configuration.APPLICATION_ID)).add(Constants.POST_SIGNIN_FIELD_DEVICE_UUID, iTwoGetSkills.getPreference().getDeviceUuid()).add(Constants.POST_SIGNIN_FIELD_EMAIL, encryptedEmail.getData()).add(Constants.POST_SIGNIN_FIELD_PASSWORD, encryptedPassword.getData()).add(Constants.POST_SIGNIN_FIELD_DEVICE_ENCRYPTER, Constants.SIGNIN_ENCRYPTER).build();}Request request = new Request.Builder().url(Configuration.URL_SIGNIN).post(formBody).build();Call call = client.newCall(request);call.enqueue(new Callback() {public void onResponse(Call call, Response response)throws IOException {processResponseServer(response.body().string());iTwoGetSkills.hideProgressBar();getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {mButtonSignIn.setEnabled(true);mButtonSignUp.setEnabled(true);mEditTextEmail.setEnabled(true);mEditTextPassword.setEnabled(true);inProgress = false;}});}public void onFailure(Call call, IOException e) {Log.d(TAG, "Error : " + e.getMessage());iTwoGetSkills.hideProgressBar();getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {mButtonSignIn.setEnabled(true);mButtonSignUp.setEnabled(true);mEditTextEmail.setEnabled(true);mEditTextPassword.setEnabled(true);inProgress = false;}});}});} catch (Exception e) {iTwoGetSkills.showMessageSnackBar(e.getMessage());} finally {}}}private boolean isPasswordValid(String password) {//TODO: Replace this with your own logicreturn password.length() > 5;}private void processResponseServer(String dataString) {boolean success = false;boolean fatal = false;String message = "";mProgressBar.setVisibility(View.INVISIBLE);try {JSONObject objData = new JSONObject(dataString);success = objData.has("success") ? objData.getBoolean("success") : false;if(objData.has("data")) {Object item = objData.get("data");if (item instanceof String) {message = (String) item;}fatal = objData.has("fatal");}if(success) {JSONObject data = objData.getJSONObject("data");Calendar calendar = Calendar.getInstance();Date date = calendar.getTime();SimpleDateFormat simpleDateFormat = new SimpleDateFormat(Constants.FORMAT_DATETIME_SERVICE);String addedOn = simpleDateFormat.format(date);//Elimino antes de guardar.JSONObject objUser = data.getJSONObject("user");String userUuid = objUser.getString("uuid");iTwoGetSkills.getDatabase().getAnswerDao().removeAll();iTwoGetSkills.getDatabase().getQuestionDao().removeAll();iTwoGetSkills.getDatabase().getQuizDao().removeAll();iTwoGetSkills.getDatabase().getSlideDao().removeAll();iTwoGetSkills.getDatabase().getCapsuleDao().removeAll();iTwoGetSkills.getDatabase().getTopicDao().removeAll();iTwoGetSkills.getDatabase().getUserExtendedDao().removeAll();iTwoGetSkills.getDatabase().getProgressDao().removeAllUserUuidNotEqual(userUuid);iTwoGetSkills.getDatabase().getUserLogDao().removeAllUserUuidNotEqual(userUuid);iTwoGetSkills.syncFromServer(data);Preference preference = iTwoGetSkills.getPreference();preference.setUserUuid(userUuid);preference.setFirstName(objUser.getString("first_name"));preference.setLastName(objUser.getString("last_name"));preference.setEmail(objUser.getString("email"));preference.setImage(objUser.getString("image"));preference.setLastDataRefresh(addedOn);JSONObject objDevice = data.getJSONObject("device");preference.setAes(objDevice.getString("aes"));preference.setPassword(objDevice.getString("password"));preference.save();UserLog userLog = new UserLog();userLog.setUserUuid(preference.getUserUuid());userLog.setActivity(Constants.USER_LOG_ACTIVITY_SIGNIN);userLog.setAddedOn(addedOn);JSONObject json = userLog.toJson();json.put(Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME, Constants.SYNC_ADAPTER_DATA_TYPE_USER_LOG);Sync sync = new Sync(Constants.SYNC_ADAPTER_TYPE_SYNC, json.toString());SyncDao syncDao = iTwoGetSkills.getDatabase().getSyncDao();syncDao.insert(sync);getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {ResultCount resultCount = iTwoGetSkills.getDatabase().getCapsuleDao().getCount();String message = resultCount.getCount() == 1? "Hay 1 cápsula nueva disponible": "Hay " + resultCount.getCount() + " cápsulas disponible";iTwoGetSkills.showMessageSnackBarWithClose(message);iTwoGetSkills.reloadNavHeader();iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_TOPICS);}});} else {if(!TextUtils.isEmpty(message)) {iTwoGetSkills.showMessageSnackBar(message);}if(fatal) {iTwoGetSkills.onErrorFatal();}}} catch (JSONException e) {e.printStackTrace();Log.e(TAG, e.getMessage());}}/*@Overridepublic void taskCallback(HttpCommResponse httpCommResponse) {inProgress = false;mEditTextEmail.setEnabled(true);mEditTextPassword.setEnabled(true);mButtonSignIn.setEnabled(true);mProgressBar.setVisibility(View.INVISIBLE);if(httpCommResponse.isSuccess()) {AnswerDao answerDao = new AnswerDao(getActivity());answerDao.removeAll();QuestionDao questionDao = new QuestionDao(getActivity());questionDao.removeAll();QuizDao quizDao = new QuizDao(getActivity());questionDao.removeAll();SlideDao slideDao = new SlideDao(getActivity());slideDao.removeAll();CapsuleDao capsuleDao = new CapsuleDao(getActivity());capsuleDao.removeAll();TopicDao topicDao = new TopicDao(getActivity());topicDao.removeAll();CompanyDao companyDao = new CompanyDao(getActivity());companyDao.removeAll();ProgressDao progressDao = new ProgressDao(getActivity());progressDao.removeAll();UserLogDao userLogDao = new UserLogDao(getActivity());UserNotificationDao userNotificationDao = new UserNotificationDao(getActivity());userNotificationDao.removeAll();try {JSONObject objData = httpCommResponse.getObjJSON().getJSONObject("data");JSONArray arrayCapsules;JSONArray arraySlides;JSONArray arrayAnswers;JSONArray arrayQuestions;JSONArray arrayProgress;JSONArray arrayQuizzes;JSONArray arrayUserLog;JSONObject objTopic;JSONObject objCapsule;JSONObject objSlide;JSONObject objAnswer;JSONObject objQuestion;JSONObject objQuiz;JSONObject objProgress;JSONObject objUserLog;int i,j,x;arrayProgress = objData.getJSONArray("progress");for(i = 0; i < arrayProgress.length(); i++) {objProgress = arrayProgress.getJSONObject(i);Progress progress = new Progress();progress.companyUuid = objProgress.getInt("company_uuid");progress.topicUuid = objProgress.getInt("topic_uuid");progress.capsuleUuid = objProgress.getInt("capsule_uuid");progress.SlideUuid = objProgress.getInt("Slide_uuid");progress.progress = objProgress.getDouble("progress");progress.totalSlides = objProgress.getInt("total_slides");progress.viewSlides = objProgress.getInt("view_slides");progress.type = objProgress.getString("type");progress.returning = objProgress.getInt("returning");progress.returningAfterCompleted = objProgress.getInt("returning_after_completed");progress.completed = objProgress.getInt("completed");progress.addedOn = objProgress.getString("added_on");progress.updatedOn = objProgress.getString("updated_on");progressDao.insert(progress);}arrayUserLog = objData.getJSONArray("userlog");for(i = 0; i < arrayUserLog.length(); i++) {objUserLog = arrayUserLog.getJSONObject(i);UserLog userLog = new UserLog();userLog.companyUuid = objUserLog.getInt("company_uuid");userLog.topicUuid = objUserLog.getInt("topic_uuid");userLog.capsuleUuid = objUserLog.getInt("capsule_uuid");userLog.SlideUuid = objUserLog.getInt("Slide_uuid");userLog.activity = objUserLog.getString("activity");userLog.addedOn = objUserLog.getString("added_on");userLogDao.insert(userLog);}arrayQuizzes = objData.getJSONArray("quizzes");for(i = 0; i < arrayQuizzes.length(); i++){objQuiz = arrayQuizzes.getJSONObject(i);Quiz quiz = new Quiz();quiz.id = objQuiz.getInt("id");quiz.companyUuid = objQuiz.getInt("company_uuid");quiz.name = objQuiz.getString("name");quiz.text = objQuiz.getString("text");quiz.points = objQuiz.getInt("points");quiz.minimumPointsRequired = objQuiz.getInt("minimum_points_required");Company company = companyDao.selectById(quiz.companyUuid);if(company == null) {company = new Company();company.id = objQuiz.getInt("company_uuid");company.name = objQuiz.getString("company_name");company.image = objQuiz.getString("company_image");companyDao.insert(company);}quizDao.insert(quiz);arrayQuestions = objQuiz.getJSONArray("questions");for(j = 0; j < arrayQuestions.length(); j++) {objQuestion = arrayQuestions.getJSONObject(j);Question question = new Question();question.quizId = quiz.id;question.id = objQuestion.getInt("id");question.text = objQuestion.getString("text");question.type = objQuestion.getString("type");question.points = objQuestion.getInt("points");question.maxlength = objQuestion.getInt("maxlength");questionDao.insert(question);arrayAnswers = objQuestion.getJSONArray("answers");for(x = 0; x < arrayAnswers.length(); x++){objAnswer = arrayAnswers.getJSONObject(x);Answer answer = new Answer();answer.questionId =question.id;answer.id = objAnswer.getInt("id");answer.text = objAnswer.getString("text");answer.points = objAnswer.getInt("points");answer.position = objAnswer.getInt("position");answer.correct = objAnswer.getString("correct");answerDao.insert(answer);}}}JSONArray arrayTopics = objData.getJSONArray("topics");for(i = 0; i < arrayTopics.length(); i++){objTopic = arrayTopics.getJSONObject(i);Topic topic = new Topic();topic.id = objTopic.getInt("id");topic.companyUuid = objTopic.getInt("company_uuid");topic.name = objTopic.getString("name");topic.description = objTopic.getString("description");topic.image = objTopic.getString("image");topic.position = objTopic.getInt("position");Company company = companyDao.selectById(topic.companyUuid);if(company == null) {company = new Company();company.id = objTopic.getInt("company_uuid");company.name = objTopic.getString("company_name");company.image = objTopic.getString("company_image");companyDao.insert(company);}topicDao.insert(topic);arrayCapsules = objTopic.getJSONArray("capsules");for(j = 0; j < arrayCapsules.length(); j++){objCapsule = arrayCapsules.getJSONObject(j);Capsule capsule = new Capsule();capsule.topicUuid = topic.id;capsule.id = objCapsule.getInt("id");capsule.name = objCapsule.getString("name");capsule.description = objCapsule.getString("description");capsule.image = objCapsule.getString("image");capsule.position = objCapsule.getInt("position");capsuleDao.insert(capsule);arraySlides = objCapsule.getJSONArray("slides");for( x = 0; x < arraySlides.length(); x++) {objSlide = arraySlides.getJSONObject(x);Slide slide = new Slide();slide.id = objSlide.getInt("id");slide.topicUuid = capsule.topicUuid;slide.capsuleUuid = capsule.id;slide.quizId = objSlide.getInt("quiz_id");slide.name = objSlide.getString("name");slide.description = objSlide.getString("description");slide.position = objSlide.getInt("position");slide.type = objSlide.getString("type");slide.file = objSlide.getString("file");slide.background = objSlide.getString("background");slideDao.insert(slide);}}}Calendar calendar = Calendar.getInstance();Date date = calendar.getTime();SimpleDateFormat simpleDateFormat = new SimpleDateFormat(Constants.FORMAT_DATETIME_SERVICE);String addedOn = simpleDateFormat.format(date);UserLog userLog = new UserLog();userLog.activity = Constants.USER_LOG_ACTIVITY_SIGNIN;userLog.addedOn = addedOn;// mSharedViewModel.insertUserLog(userLog);Preference preference = iTwoGetSkills.getPreference();JSONObject objUser = objData.getJSONObject("user");//mUser.id = objUser.getInt("id");preference.userId = objUser.getInt("id");preference.firstName = objUser.getString("first_name");preference.lastName = objUser.getString("last_name");preference.email = objUser.getString("email");preference.image = objUser.getString("image");preference.password = objUser.getString("password");preference.rsaE = objUser.getInt("rsa_e");preference.rsaD = objUser.getInt("rsa_d");preference.rsaN = objUser.getInt("rsa_n");preference.save(getActivity());JSONObject json = userLog.toJson();json.put("user_id", preference.userId);json.put(Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME, Constants.SYNC_ADAPTER_DATA_TYPE_USER_LOG);Sync sync = new Sync();sync.type = Constants.SYNC_ADAPTER_TYPE_SYNC;sync.data = json.toString();SyncDao syncDao = new SyncDao(getActivity());syncDao.insert(sync);syncDao.close();iTwoGetSkills.reloadNavHeader();iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_TOPICS);} catch (JSONException e) {iTwoGetSkills.showMessageSnackBar(e.getMessage());}answerDao.close();questionDao.close();questionDao.close();slideDao.close();capsuleDao.close();topicDao.close();companyDao.close();progressDao.close();userLogDao.close();userNotificationDao.close();} else {iTwoGetSkills.showMessageSnackBar(httpCommResponse.getMessage());if(httpCommResponse.isFatal()) {iTwoGetSkills.onErrorFatal();}}}*/@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.fragment_signin, container, false);}}